Setting up for revealing modified descriptions and names all put together.
Some checks failed
Emscripten Build / Build_and_Deploy_Web_Build (push) Failing after 1m44s

This commit is contained in:
sigonasr2 2025-05-06 16:32:25 -04:00
parent 7308a7e37b
commit 9722695e5b
7 changed files with 52 additions and 18 deletions

View File

@ -114,8 +114,8 @@ namespace EnchantTests
testGame.reset();
}
TEST_METHOD(EnchantAbilitySettingsReadProperly){
Assert::AreEqual("Increases Maximum Health by 3%",ItemEnchant{"Health Boost"}.GetModifiedDescription().c_str(),L"Health Boost has its normal description.");
Assert::AreEqual("Shoots nine arrows rapidly. Total Damage: 90",ItemEnchant{"Extreme Rapid Fire"}.GetModifiedDescription().c_str(),L"Extreme Rapid Fire should have ability description modifiers attached to it.");
Assert::AreEqual("Increases Maximum Health by 3%",ItemEnchant{"Health Boost"}.GetModifiedAbilityDescription().c_str(),L"Health Boost has its normal description.");
Assert::AreEqual("Shoots nine arrows rapidly. Total Damage: 90",ItemEnchant{"Extreme Rapid Fire"}.GetModifiedAbilityDescription().c_str(),L"Extreme Rapid Fire should have ability description modifiers attached to it.");
}
TEST_METHOD(HealthBoostCheck){
Assert::AreEqual(100,player->GetMaxHealth(),L"Player starts with 100 health.");

View File

@ -96,5 +96,4 @@ struct Ability{
Ability(std::string name,std::string shortName,std::string description,float cooldownTime,int manaCost,InputGroup*input,std::string icon,Pixel barColor1=VERY_DARK_RED,Pixel barColor2=DARK_RED,PrecastData precastInfo={},bool canCancelCast=false);
const std::string GetName()const;
const std::string_view GetDescription()const;
const std::string GetModifiedName()const; //The finalized modified ability name based on player's current item enchants.
};

View File

@ -2183,7 +2183,8 @@ void AiL::RenderCooldowns(){
if(HasEnchantWithAbilityAffected)abilityTitleCol=Pixel{0xFFCD00};
if(a.itemAbility)abilityTitleCol=Pixel{0xA2FF00};
Ability::tooltipTitleCol=abilityTitleCol;
Ability::tooltipTitle=std::format("{}",a.GetName());
if(player->GetEnchantWithAbilityAffected(a.name))
else Ability::tooltipTitle=std::format("{}",a.GetName());
Ability::tooltipText=std::format("{}",a.GetDescription());
}
}else heldDownAnyAbilityKey=true;

View File

@ -117,6 +117,19 @@ void ItemEnchantInfo::Initialize(){
newEnchant.abilitySlot=affectSlots.at(affectStr);
}
ItemEnchantInfo::AbilityDescriptionModifiers modifiers;
if(enchant.HasProperty("Ability Settings")){
for(const auto&[key,size]:enchant["Ability Settings"]){
if(key=="Pre-Name")modifiers.preName=key;
else if(key=="Post-Name")modifiers.postName=key;
else if(key=="Name")modifiers.newName=key;
else if(key=="Pre-Description")modifiers.preDescription=key;
else if(key=="Post-Description")modifiers.postDescription=key;
else if(key=="Description")modifiers.newDescription=key;
else ERR(std::format("Invalid Ability Setting key {} detected!",key));
}
}
auto IsRequiredKey=[](const std::string_view key){return key=="Description"||key=="Affects"||key.starts_with("Stat Modifier[");};
for(auto&[key,size]:enchant){
@ -143,6 +156,7 @@ void ItemEnchantInfo::Initialize(){
}
newEnchant.description=enchantDescription;
newEnchant.modifiers=modifiers;
return newEnchant;
};
@ -352,6 +366,19 @@ const std::optional<Class>&ItemEnchant::GetClass()const{
return ItemEnchantInfo::GetEnchant(Name()).GetClass();
}
const std::string ItemEnchant::GetModifiedDescription()const{
return "";
const std::string ItemEnchantInfo::GetModifiedAbilityDescription()const{
return std::format("{}{}{}",modifiers.preDescription.value_or(""),modifiers.newDescription.value_or(Description()),modifiers.postDescription.value_or(""));
}
const std::string ItemEnchantInfo::GetModifiedAbilityName(const TextStyle style)const{
std::string finalName{std::format("{}{}{}",modifiers.preName.value_or(""),modifiers.newName.value_or(Name()),modifiers.postName.value_or(""))};
using enum TextStyle;
switch(style){
case NORMAL:{
return finalName;
}break;
case COLOR_CODES:{
return ENCHANT_CATEGORIES.at(category).displayCol.toHTMLColorCode()+finalName;
}break;
}
}

View File

@ -80,6 +80,9 @@ public:
const Pixel&DisplayCol()const;
const float GetConfigValue(const std::string_view keyName)const;
const float operator[](const std::string&name)const;
const std::string GetModifiedAbilityName(const TextStyle style)const; //The finalized modified name.
const std::string GetModifiedAbilityDescription()const; //The finalized modified description.
static const std::vector<ItemEnchantInfo>GetAllEnchantsAffectingAbility();
private:
class ItemEnchantCategoryData{
friend class ItemEnchantInfo;
@ -98,6 +101,15 @@ private:
std::unordered_map<std::string,float>config;
static std::unordered_map<std::string,ItemEnchantInfo>ENCHANT_LIST;
static std::unordered_map<ItemEnchantCategory,ItemEnchantCategoryData>ENCHANT_CATEGORIES;
struct AbilityDescriptionModifiers{
std::optional<std::string_view>preName;
std::optional<std::string_view>postName;
std::optional<std::string_view>newName;
std::optional<std::string_view>preDescription;
std::optional<std::string_view>postDescription;
std::optional<std::string_view>newDescription;
};
AbilityDescriptionModifiers modifiers;
};
class Item;
@ -120,21 +132,10 @@ public:
const Pixel&DisplayCol()const;
const std::optional<std::reference_wrapper<::Ability>>Ability()const;
const std::optional<Class>&GetClass()const;
const std::string GetModifiedDescription()const; //The finalized modified description.
private:
void UpdateDescription();
const ItemEnchantInfo&GetEnchantInfo()const;
std::string enchantName;
std::string description;
ItemAttributable stats;
struct AbilityDescriptionModifiers{
std::optional<std::string>preName;
std::optional<std::string>postName;
std::optional<std::string>newName;
std::optional<std::string>preDescription;
std::optional<std::string>postDescription;
std::optional<std::string>newDescription;
};
AbilityDescriptionModifiers modifiers;
};

View File

@ -2322,4 +2322,10 @@ const bool Player::CoveredInInk()const{
}
const vf2d&Player::GetPreviousPos()const{
return previousPos;
}
const std::optional<ItemEnchantInfo>Player::HasEnchantWithAbilityAffected(const std::string_view abilityName)const{
ItemEnchantInfo::GetEnchant(abilityName)
}

View File

@ -39,7 +39,7 @@ All rights reserved.
#define VERSION_MAJOR 1
#define VERSION_MINOR 3
#define VERSION_PATCH 0
#define VERSION_BUILD 12145
#define VERSION_BUILD 12146
#define stringify(a) stringify_(a)
#define stringify_(a) #a