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
Some checks failed
Emscripten Build / Build_and_Deploy_Web_Build (push) Failing after 1m44s
This commit is contained in:
parent
7308a7e37b
commit
9722695e5b
@ -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.");
|
||||
|
@ -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.
|
||||
};
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -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)
|
||||
}
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user