Fixes issues with retrieving name and description of enhanced abilities. Regular abilities do not display their name proper atm. Release Build 12159.
All checks were successful
Emscripten Build / Build_and_Deploy_Web_Build (push) Successful in 7m7s

This commit is contained in:
sigonasr2 2025-05-09 15:38:17 -05:00
parent 8c8567017c
commit 1d1cb7170c
6 changed files with 27 additions and 17 deletions

View File

@ -68,7 +68,15 @@ const bool Ability::operator==(const Ability&a)const{
return name==a.name&&isOriginalAbility==a.isOriginalAbility;
}
const std::string Ability::GetName()const{
const std::string_view Ability::GetName()const{
return name;
}
const std::string_view Ability::GetDescription()const{
return description;
}
const std::string Ability::GetNameWithPlayerModifiers()const{
std::string prefixName{};
std::string newName{};
std::string suffixName{};
@ -83,16 +91,16 @@ const std::string Ability::GetName()const{
return std::format("{}{}{}",prefixName,newName,suffixName);
}
const std::string_view Ability::GetDescription()const{
const std::string Ability::GetDescriptionWithPlayerModifiers()const{
std::string prefixDescription{};
std::string newDescription{};
std::string suffixDescription{};
for(const auto&enchant:ItemEnchantInfo::GetAllEnchantsAffectingAbility(name)){
const ItemEnchantInfo::AbilityDescriptionModifiers&modifiers{enchant.get().GetModifiers()};
if(prefixDescription.length()>0&&modifiers.preName)prefixDescription+=" ";
if(prefixDescription.length()>0&&modifiers.preDescription)prefixDescription+=" ";
prefixDescription+=modifiers.preDescription.value_or("");
newDescription=modifiers.newDescription.value_or(name);
if(suffixDescription.length()>0&&modifiers.preName)suffixDescription+=" ";
newDescription=modifiers.newDescription.value_or(description);
if(suffixDescription.length()>0&&modifiers.preDescription)suffixDescription+=" ";
suffixDescription+=modifiers.postDescription.value_or("");
}
return std::format("{}{}{}",prefixDescription,newDescription,suffixDescription);

View File

@ -94,6 +94,9 @@ struct Ability{
Ability();
//NOTE: icon expects the actual name relative to the "Ability Icons" directory for this constructor!
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 GetName()const;
const std::string_view GetDescription()const;
const std::string GetNameWithPlayerModifiers()const;
const std::string GetDescriptionWithPlayerModifiers()const;
};

View File

@ -2183,8 +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());
Ability::tooltipText=std::format("{}",a.GetDescription());
Ability::tooltipTitle=std::format("{}",a.GetNameWithPlayerModifiers());
Ability::tooltipText=std::format("{}",a.GetDescriptionWithPlayerModifiers());
}
}else heldDownAnyAbilityKey=true;
#pragma endregion

View File

@ -120,17 +120,16 @@ void ItemEnchantInfo::Initialize(){
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));
if(key=="Pre-Name")modifiers.preName=enchant["Ability Settings"][key].GetString();
else if(key=="Post-Name")modifiers.postName=enchant["Ability Settings"][key].GetString();
else if(key=="Name")modifiers.newName=enchant["Ability Settings"][key].GetString();
else if(key=="Pre-Description")modifiers.preDescription=enchant["Ability Settings"][key].GetString();
else if(key=="Post-Description")modifiers.postDescription=enchant["Ability Settings"][key].GetString();
else if(key=="Description")modifiers.newDescription=enchant["Ability Settings"][key].GetString();
}
}
auto IsRequiredKey=[](const std::string_view key){return key=="Description"||key=="Affects"||key.starts_with("Stat Modifier[");};
auto IsRequiredKey=[](const std::string_view key){return key=="Description"||key=="Affects"||key.starts_with("Stat Modifier[")||key.starts_with("Ability Settings");};
for(auto&[key,size]:enchant){
if(IsRequiredKey(key))continue;

View File

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