mirror of
https://github.com/vcmi/vcmi.git
synced 2025-11-25 22:42:04 +02:00
Secondary skills strings are now passed through translator
This commit is contained in:
@@ -252,7 +252,7 @@ void CBonusSelection::createBonusesIcons()
|
|||||||
desc = CGI->generaltexth->allTexts[718];
|
desc = CGI->generaltexth->allTexts[718];
|
||||||
|
|
||||||
boost::algorithm::replace_first(desc, "%s", CGI->generaltexth->levels[bonDescs[i].info3 - 1]); //skill level
|
boost::algorithm::replace_first(desc, "%s", CGI->generaltexth->levels[bonDescs[i].info3 - 1]); //skill level
|
||||||
boost::algorithm::replace_first(desc, "%s", CGI->skillh->skillName(bonDescs[i].info2)); //skill name
|
boost::algorithm::replace_first(desc, "%s", CGI->skillh->getByIndex(bonDescs[i].info2)->getNameTranslated()); //skill name
|
||||||
picNumber = bonDescs[i].info2 * 3 + bonDescs[i].info3 - 1;
|
picNumber = bonDescs[i].info2 * 3 + bonDescs[i].info3 - 1;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ std::string CComponent::getDescription()
|
|||||||
{
|
{
|
||||||
case primskill: return (subtype < 4)? CGI->generaltexth->arraytxt[2+subtype] //Primary skill
|
case primskill: return (subtype < 4)? CGI->generaltexth->arraytxt[2+subtype] //Primary skill
|
||||||
: CGI->generaltexth->allTexts[149]; //mana
|
: CGI->generaltexth->allTexts[149]; //mana
|
||||||
case secskill: return CGI->skillh->skillInfo(subtype, val);
|
case secskill: return CGI->skillh->getByIndex(subtype)->getDescriptionTranslated(val);
|
||||||
case resource: return CGI->generaltexth->allTexts[242];
|
case resource: return CGI->generaltexth->allTexts[242];
|
||||||
case creature: return "";
|
case creature: return "";
|
||||||
case artifact:
|
case artifact:
|
||||||
@@ -196,7 +196,7 @@ std::string CComponent::getSubtitleInternal()
|
|||||||
switch(compType)
|
switch(compType)
|
||||||
{
|
{
|
||||||
case primskill: return boost::str(boost::format("%+d %s") % val % (subtype < 4 ? CGI->generaltexth->primarySkillNames[subtype] : CGI->generaltexth->allTexts[387]));
|
case primskill: return boost::str(boost::format("%+d %s") % val % (subtype < 4 ? CGI->generaltexth->primarySkillNames[subtype] : CGI->generaltexth->allTexts[387]));
|
||||||
case secskill: return CGI->generaltexth->levels[val-1] + "\n" + CGI->skillh->skillName(subtype);
|
case secskill: return CGI->generaltexth->levels[val-1] + "\n" + CGI->skillh->getByIndex(subtype)->getNameTranslated();
|
||||||
case resource: return boost::lexical_cast<std::string>(val);
|
case resource: return boost::lexical_cast<std::string>(val);
|
||||||
case creature: return (val? boost::lexical_cast<std::string>(val) + " " : "") + CGI->creh->objects[subtype]->*(val != 1 ? &CCreature::namePl : &CCreature::nameSing);
|
case creature: return (val? boost::lexical_cast<std::string>(val) + " " : "") + CGI->creh->objects[subtype]->*(val != 1 ? &CCreature::namePl : &CCreature::nameSing);
|
||||||
case artifact: return CGI->artifacts()->getByIndex(subtype)->getName();
|
case artifact: return CGI->artifacts()->getByIndex(subtype)->getName();
|
||||||
|
|||||||
@@ -263,12 +263,12 @@ void CHeroWindow::update(const CGHeroInstance * hero, bool redrawNeeded)
|
|||||||
{
|
{
|
||||||
int skill = curHero->secSkills[g].first;
|
int skill = curHero->secSkills[g].first;
|
||||||
int level = curHero->getSecSkillLevel(SecondarySkill(curHero->secSkills[g].first));
|
int level = curHero->getSecSkillLevel(SecondarySkill(curHero->secSkills[g].first));
|
||||||
std::string skillName = CGI->skillh->skillName(skill);
|
std::string skillName = CGI->skillh->getByIndex(skill)->getNameTranslated();
|
||||||
std::string skillValue = CGI->generaltexth->levels[level-1];
|
std::string skillValue = CGI->generaltexth->levels[level-1];
|
||||||
|
|
||||||
secSkillAreas[g]->type = skill;
|
secSkillAreas[g]->type = skill;
|
||||||
secSkillAreas[g]->bonusValue = level;
|
secSkillAreas[g]->bonusValue = level;
|
||||||
secSkillAreas[g]->text = CGI->skillh->skillInfo(skill, level);
|
secSkillAreas[g]->text = CGI->skillh->getByIndex(skill)->getDescriptionTranslated(level);
|
||||||
secSkillAreas[g]->hoverText = boost::str(boost::format(heroscrn[21]) % skillValue % skillName);
|
secSkillAreas[g]->hoverText = boost::str(boost::format(heroscrn[21]) % skillValue % skillName);
|
||||||
secSkillImages[g]->setFrame(skill*3 + level + 2);
|
secSkillImages[g]->setFrame(skill*3 + level + 2);
|
||||||
secSkillNames[g]->setText(skillName);
|
secSkillNames[g]->setText(skillName);
|
||||||
|
|||||||
@@ -166,7 +166,7 @@ std::string InfoBoxAbstractHeroData::getNameText()
|
|||||||
return CGI->heroh->objects[getSubID()]->specName;
|
return CGI->heroh->objects[getSubID()]->specName;
|
||||||
case HERO_SECONDARY_SKILL:
|
case HERO_SECONDARY_SKILL:
|
||||||
if (getValue())
|
if (getValue())
|
||||||
return CGI->skillh->skillName(getSubID());
|
return CGI->skillh->getByIndex(getSubID())->getNameTranslated();
|
||||||
else
|
else
|
||||||
return "";
|
return "";
|
||||||
default:
|
default:
|
||||||
@@ -274,7 +274,7 @@ void InfoBoxAbstractHeroData::prepareMessage(std::string & text, std::shared_ptr
|
|||||||
int subID = getSubID();
|
int subID = getSubID();
|
||||||
if(value)
|
if(value)
|
||||||
{
|
{
|
||||||
text = CGI->skillh->skillInfo(subID, (int)value);
|
text = CGI->skillh->getByIndex(subID)->getDescriptionTranslated((int)value);
|
||||||
comp = std::make_shared<CComponent>(CComponent::secskill, subID, (int)value);
|
comp = std::make_shared<CComponent>(CComponent::secskill, subID, (int)value);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -355,7 +355,7 @@ std::string InfoBoxHeroData::getHoverText()
|
|||||||
if (hero->secSkills.size() > index)
|
if (hero->secSkills.size() > index)
|
||||||
{
|
{
|
||||||
std::string level = CGI->generaltexth->levels[hero->secSkills[index].second-1];
|
std::string level = CGI->generaltexth->levels[hero->secSkills[index].second-1];
|
||||||
std::string skill = CGI->skillh->skillName(hero->secSkills[index].first);
|
std::string skill = CGI->skillh->getByIndex(hero->secSkills[index].first)->getNameTranslated();
|
||||||
return boost::str(boost::format(CGI->generaltexth->heroscrn[21]) % level % skill);
|
return boost::str(boost::format(CGI->generaltexth->heroscrn[21]) % level % skill);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -1166,11 +1166,11 @@ CExchangeWindow::CExchangeWindow(ObjectInstanceID hero1, ObjectInstanceID hero2,
|
|||||||
|
|
||||||
secSkillAreas[b][g]->type = skill;
|
secSkillAreas[b][g]->type = skill;
|
||||||
secSkillAreas[b][g]->bonusValue = level;
|
secSkillAreas[b][g]->bonusValue = level;
|
||||||
secSkillAreas[b][g]->text = CGI->skillh->skillInfo(skill, level);
|
secSkillAreas[b][g]->text = CGI->skillh->getByIndex(skill)->getDescriptionTranslated(level);
|
||||||
|
|
||||||
secSkillAreas[b][g]->hoverText = CGI->generaltexth->heroscrn[21];
|
secSkillAreas[b][g]->hoverText = CGI->generaltexth->heroscrn[21];
|
||||||
boost::algorithm::replace_first(secSkillAreas[b][g]->hoverText, "%s", CGI->generaltexth->levels[level - 1]);
|
boost::algorithm::replace_first(secSkillAreas[b][g]->hoverText, "%s", CGI->generaltexth->levels[level - 1]);
|
||||||
boost::algorithm::replace_first(secSkillAreas[b][g]->hoverText, "%s", CGI->skillh->skillName(skill));
|
boost::algorithm::replace_first(secSkillAreas[b][g]->hoverText, "%s", CGI->skillh->getByIndex(skill)->getNameTranslated());
|
||||||
}
|
}
|
||||||
|
|
||||||
heroAreas[b] = std::make_shared<CHeroArea>(257 + 228*b, 13, hero);
|
heroAreas[b] = std::make_shared<CHeroArea>(257 + 228*b, 13, hero);
|
||||||
@@ -1516,7 +1516,7 @@ CUniversityWindow::CItem::CItem(CUniversityWindow * _parent, int _ID, int X, int
|
|||||||
|
|
||||||
icon = std::make_shared<CAnimImage>("SECSKILL", _ID * 3 + 3, 0);
|
icon = std::make_shared<CAnimImage>("SECSKILL", _ID * 3 + 3, 0);
|
||||||
|
|
||||||
name = std::make_shared<CLabel>(22, -13, FONT_SMALL, ETextAlignment::CENTER, Colors::WHITE, CGI->skillh->skillName(ID));
|
name = std::make_shared<CLabel>(22, -13, FONT_SMALL, ETextAlignment::CENTER, Colors::WHITE, CGI->skillh->getByIndex(ID)->getNameTranslated());
|
||||||
level = std::make_shared<CLabel>(22, 57, FONT_SMALL, ETextAlignment::CENTER, Colors::WHITE, CGI->generaltexth->levels[0]);
|
level = std::make_shared<CLabel>(22, 57, FONT_SMALL, ETextAlignment::CENTER, Colors::WHITE, CGI->generaltexth->levels[0]);
|
||||||
|
|
||||||
pos.h = icon->pos.h;
|
pos.h = icon->pos.h;
|
||||||
@@ -1536,14 +1536,14 @@ void CUniversityWindow::CItem::clickRight(tribool down, bool previousState)
|
|||||||
{
|
{
|
||||||
if(down)
|
if(down)
|
||||||
{
|
{
|
||||||
CRClickPopup::createAndPush(CGI->skillh->skillInfo(ID, 1), std::make_shared<CComponent>(CComponent::secskill, ID, 1));
|
CRClickPopup::createAndPush(CGI->skillh->getByIndex(ID)->getDescriptionTranslated(1), std::make_shared<CComponent>(CComponent::secskill, ID, 1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CUniversityWindow::CItem::hover(bool on)
|
void CUniversityWindow::CItem::hover(bool on)
|
||||||
{
|
{
|
||||||
if(on)
|
if(on)
|
||||||
GH.statusbar->write(CGI->skillh->skillName(ID));
|
GH.statusbar->write(CGI->skillh->getByIndex(ID)->getNameTranslated());
|
||||||
else
|
else
|
||||||
GH.statusbar->clear();
|
GH.statusbar->clear();
|
||||||
}
|
}
|
||||||
@@ -1625,12 +1625,12 @@ CUnivConfirmWindow::CUnivConfirmWindow(CUniversityWindow * owner_, int SKILL, bo
|
|||||||
|
|
||||||
std::string text = CGI->generaltexth->allTexts[608];
|
std::string text = CGI->generaltexth->allTexts[608];
|
||||||
boost::replace_first(text, "%s", CGI->generaltexth->levels[0]);
|
boost::replace_first(text, "%s", CGI->generaltexth->levels[0]);
|
||||||
boost::replace_first(text, "%s", CGI->skillh->skillName(SKILL));
|
boost::replace_first(text, "%s", CGI->skillh->getByIndex(SKILL)->getNameTranslated());
|
||||||
boost::replace_first(text, "%d", "2000");
|
boost::replace_first(text, "%d", "2000");
|
||||||
|
|
||||||
clerkSpeech = std::make_shared<CTextBox>(text, Rect(24, 129, 413, 70), 0, FONT_SMALL, ETextAlignment::CENTER, Colors::WHITE);
|
clerkSpeech = std::make_shared<CTextBox>(text, Rect(24, 129, 413, 70), 0, FONT_SMALL, ETextAlignment::CENTER, Colors::WHITE);
|
||||||
|
|
||||||
name = std::make_shared<CLabel>(230, 37, FONT_SMALL, ETextAlignment::CENTER, Colors::WHITE, CGI->skillh->skillName(SKILL));
|
name = std::make_shared<CLabel>(230, 37, FONT_SMALL, ETextAlignment::CENTER, Colors::WHITE, CGI->skillh->getByIndex(SKILL)->getNameTranslated());
|
||||||
icon = std::make_shared<CAnimImage>("SECSKILL", SKILL*3+3, 0, 211, 51);
|
icon = std::make_shared<CAnimImage>("SECSKILL", SKILL*3+3, 0, 211, 51);
|
||||||
level = std::make_shared<CLabel>(230, 107, FONT_SMALL, ETextAlignment::CENTER, Colors::WHITE, CGI->generaltexth->levels[1]);
|
level = std::make_shared<CLabel>(230, 107, FONT_SMALL, ETextAlignment::CENTER, Colors::WHITE, CGI->generaltexth->levels[1]);
|
||||||
|
|
||||||
@@ -1638,11 +1638,11 @@ CUnivConfirmWindow::CUnivConfirmWindow(CUniversityWindow * owner_, int SKILL, bo
|
|||||||
cost = std::make_shared<CLabel>(230, 267, FONT_SMALL, ETextAlignment::CENTER, Colors::WHITE, "2000");
|
cost = std::make_shared<CLabel>(230, 267, FONT_SMALL, ETextAlignment::CENTER, Colors::WHITE, "2000");
|
||||||
|
|
||||||
std::string hoverText = CGI->generaltexth->allTexts[609];
|
std::string hoverText = CGI->generaltexth->allTexts[609];
|
||||||
boost::replace_first(hoverText, "%s", CGI->generaltexth->levels[0]+ " " + CGI->skillh->skillName(SKILL));
|
boost::replace_first(hoverText, "%s", CGI->generaltexth->levels[0]+ " " + CGI->skillh->getByIndex(SKILL)->getNameTranslated());
|
||||||
|
|
||||||
text = CGI->generaltexth->zelp[633].second;
|
text = CGI->generaltexth->zelp[633].second;
|
||||||
boost::replace_first(text, "%s", CGI->generaltexth->levels[0]);
|
boost::replace_first(text, "%s", CGI->generaltexth->levels[0]);
|
||||||
boost::replace_first(text, "%s", CGI->skillh->skillName(SKILL));
|
boost::replace_first(text, "%s", CGI->skillh->getByIndex(SKILL)->getNameTranslated());
|
||||||
boost::replace_first(text, "%d", "2000");
|
boost::replace_first(text, "%d", "2000");
|
||||||
|
|
||||||
confirm = std::make_shared<CButton>(Point(148, 299), "IBY6432.DEF", CButton::tooltip(hoverText, text), [=](){makeDeal(SKILL);}, SDLK_RETURN);
|
confirm = std::make_shared<CButton>(Point(148, 299), "IBY6432.DEF", CButton::tooltip(hoverText, text), [=](){makeDeal(SKILL);}, SDLK_RETURN);
|
||||||
|
|||||||
@@ -15,9 +15,9 @@
|
|||||||
VCMI_LIB_NAMESPACE_BEGIN
|
VCMI_LIB_NAMESPACE_BEGIN
|
||||||
|
|
||||||
class SecondarySkill;
|
class SecondarySkill;
|
||||||
class Skill;
|
class CSkill;
|
||||||
|
|
||||||
class DLL_LINKAGE SkillService : public EntityServiceT<SecondarySkill, Skill>
|
class DLL_LINKAGE SkillService : public EntityServiceT<SecondarySkill, CSkill>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ void MetaString::getLocalString(const std::pair<ui8,ui32> &txt, std::string &dst
|
|||||||
}
|
}
|
||||||
else if(type == SEC_SKILL_NAME)
|
else if(type == SEC_SKILL_NAME)
|
||||||
{
|
{
|
||||||
dst = VLC->skillh->skillName(ser);
|
dst = VLC->skillh->getByIndex(ser)->getNameTranslated();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -316,7 +316,7 @@ void CHeroClassHandler::afterLoadFinalization()
|
|||||||
if(heroClass->secSkillProbability[skillID] < 0)
|
if(heroClass->secSkillProbability[skillID] < 0)
|
||||||
{
|
{
|
||||||
const CSkill * skill = (*VLC->skillh)[SecondarySkill(skillID)];
|
const CSkill * skill = (*VLC->skillh)[SecondarySkill(skillID)];
|
||||||
logMod->trace("%s: no probability for %s, using default", heroClass->identifier, skill->identifier);
|
logMod->trace("%s: no probability for %s, using default", heroClass->identifier, skill->getJsonKey());
|
||||||
heroClass->secSkillProbability[skillID] = skill->gainChance[heroClass->affinity];
|
heroClass->secSkillProbability[skillID] = skill->gainChance[heroClass->affinity];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,7 +56,18 @@ int32_t CSkill::getIconIndex() const
|
|||||||
|
|
||||||
const std::string & CSkill::getName() const
|
const std::string & CSkill::getName() const
|
||||||
{
|
{
|
||||||
return name;
|
return identifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string CSkill::getNameTextID() const
|
||||||
|
{
|
||||||
|
TextIdentifier id("skill", modScope, identifier, "name");
|
||||||
|
return id.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string CSkill::getNameTranslated() const
|
||||||
|
{
|
||||||
|
return VLC->generaltexth->translate(getNameTextID());
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::string & CSkill::getJsonKey() const
|
const std::string & CSkill::getJsonKey() const
|
||||||
@@ -64,6 +75,17 @@ const std::string & CSkill::getJsonKey() const
|
|||||||
return identifier;
|
return identifier;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string CSkill::getDescriptionTextID(int level) const
|
||||||
|
{
|
||||||
|
TextIdentifier id("skill", modScope, identifier, "description", NSecondarySkill::levels[level]);
|
||||||
|
return id.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string CSkill::getDescriptionTranslated(int level) const
|
||||||
|
{
|
||||||
|
return VLC->generaltexth->translate(getDescriptionTextID(level));
|
||||||
|
}
|
||||||
|
|
||||||
void CSkill::registerIcons(const IconRegistar & cb) const
|
void CSkill::registerIcons(const IconRegistar & cb) const
|
||||||
{
|
{
|
||||||
for(int level = 1; level <= 3; level++)
|
for(int level = 1; level <= 3; level++)
|
||||||
@@ -86,7 +108,7 @@ void CSkill::addNewBonus(const std::shared_ptr<Bonus> & b, int level)
|
|||||||
b->source = Bonus::SECONDARY_SKILL;
|
b->source = Bonus::SECONDARY_SKILL;
|
||||||
b->sid = id;
|
b->sid = id;
|
||||||
b->duration = Bonus::PERMANENT;
|
b->duration = Bonus::PERMANENT;
|
||||||
b->description = name;
|
b->description = getNameTextID();
|
||||||
levels[level-1].effects.push_back(b);
|
levels[level-1].effects.push_back(b);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -104,7 +126,6 @@ CSkill::LevelInfo & CSkill::at(int level)
|
|||||||
|
|
||||||
DLL_LINKAGE std::ostream & operator<<(std::ostream & out, const CSkill::LevelInfo & info)
|
DLL_LINKAGE std::ostream & operator<<(std::ostream & out, const CSkill::LevelInfo & info)
|
||||||
{
|
{
|
||||||
out << "(\"" << info.description << "\", [";
|
|
||||||
for(int i=0; i < info.effects.size(); i++)
|
for(int i=0; i < info.effects.size(); i++)
|
||||||
out << (i ? "," : "") << info.effects[i]->Description();
|
out << (i ? "," : "") << info.effects[i]->Description();
|
||||||
return out << "])";
|
return out << "])";
|
||||||
@@ -187,21 +208,11 @@ const std::vector<std::string> & CSkillHandler::getTypeNames() const
|
|||||||
return typeNames;
|
return typeNames;
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::string & CSkillHandler::skillInfo(int skill, int level) const
|
|
||||||
{
|
|
||||||
return objects[skill]->at(level).description;
|
|
||||||
}
|
|
||||||
|
|
||||||
const std::string & CSkillHandler::skillName(int skill) const
|
|
||||||
{
|
|
||||||
return objects[skill]->name;
|
|
||||||
}
|
|
||||||
|
|
||||||
CSkill * CSkillHandler::loadFromJson(const std::string & scope, const JsonNode & json, const std::string & identifier, size_t index)
|
CSkill * CSkillHandler::loadFromJson(const std::string & scope, const JsonNode & json, const std::string & identifier, size_t index)
|
||||||
{
|
{
|
||||||
CSkill * skill = new CSkill(SecondarySkill((si32)index), identifier);
|
CSkill * skill = new CSkill(SecondarySkill((si32)index), identifier);
|
||||||
|
|
||||||
skill->name = json["name"].String();
|
VLC->generaltexth->registerString(skill->getNameTextID(), json["name"].String());
|
||||||
switch(json["gainChance"].getType())
|
switch(json["gainChance"].getType())
|
||||||
{
|
{
|
||||||
case JsonNode::JsonType::DATA_INTEGER:
|
case JsonNode::JsonType::DATA_INTEGER:
|
||||||
@@ -226,7 +237,7 @@ CSkill * CSkillHandler::loadFromJson(const std::string & scope, const JsonNode &
|
|||||||
skill->addNewBonus(bonus, level);
|
skill->addNewBonus(bonus, level);
|
||||||
}
|
}
|
||||||
CSkill::LevelInfo & skillAtLevel = skill->at(level);
|
CSkill::LevelInfo & skillAtLevel = skill->at(level);
|
||||||
skillAtLevel.description = levelNode["description"].String();
|
VLC->generaltexth->registerString(skill->getDescriptionTextID(level), levelNode["description"].String());
|
||||||
skillAtLevel.iconSmall = levelNode["images"]["small"].String();
|
skillAtLevel.iconSmall = levelNode["images"]["small"].String();
|
||||||
skillAtLevel.iconMedium = levelNode["images"]["medium"].String();
|
skillAtLevel.iconMedium = levelNode["images"]["medium"].String();
|
||||||
skillAtLevel.iconLarge = levelNode["images"]["large"].String();
|
skillAtLevel.iconLarge = levelNode["images"]["large"].String();
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ class DLL_LINKAGE CSkill : public Skill
|
|||||||
public:
|
public:
|
||||||
struct LevelInfo
|
struct LevelInfo
|
||||||
{
|
{
|
||||||
std::string description; //descriptions of spell for skill level
|
|
||||||
std::string iconSmall;
|
std::string iconSmall;
|
||||||
std::string iconMedium;
|
std::string iconMedium;
|
||||||
std::string iconLarge;
|
std::string iconLarge;
|
||||||
@@ -36,7 +35,6 @@ public:
|
|||||||
|
|
||||||
template <typename Handler> void serialize(Handler & h, const int version)
|
template <typename Handler> void serialize(Handler & h, const int version)
|
||||||
{
|
{
|
||||||
h & description;
|
|
||||||
h & iconSmall;
|
h & iconSmall;
|
||||||
h & iconMedium;
|
h & iconMedium;
|
||||||
h & iconLarge;
|
h & iconLarge;
|
||||||
@@ -48,25 +46,33 @@ private:
|
|||||||
std::vector<LevelInfo> levels; // bonuses provided by basic, advanced and expert level
|
std::vector<LevelInfo> levels; // bonuses provided by basic, advanced and expert level
|
||||||
void addNewBonus(const std::shared_ptr<Bonus> & b, int level);
|
void addNewBonus(const std::shared_ptr<Bonus> & b, int level);
|
||||||
|
|
||||||
|
SecondarySkill id;
|
||||||
|
std::string modScope;
|
||||||
|
std::string identifier;
|
||||||
|
|
||||||
|
const std::string & getName() const override;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CSkill(SecondarySkill id = SecondarySkill::DEFAULT, std::string identifier = "default");
|
CSkill(SecondarySkill id = SecondarySkill::DEFAULT, std::string identifier = "default");
|
||||||
~CSkill();
|
~CSkill();
|
||||||
|
|
||||||
int32_t getIndex() const override;
|
int32_t getIndex() const override;
|
||||||
int32_t getIconIndex() const override;
|
int32_t getIconIndex() const override;
|
||||||
const std::string & getName() const override;
|
|
||||||
const std::string & getJsonKey() const override;
|
const std::string & getJsonKey() const override;
|
||||||
void registerIcons(const IconRegistar & cb) const override;
|
void registerIcons(const IconRegistar & cb) const override;
|
||||||
SecondarySkill getId() const override;
|
SecondarySkill getId() const override;
|
||||||
|
|
||||||
|
std::string getNameTextID() const;
|
||||||
|
std::string getNameTranslated() const;
|
||||||
|
|
||||||
|
std::string getDescriptionTextID(int level) const;
|
||||||
|
std::string getDescriptionTranslated(int level) const;
|
||||||
|
|
||||||
const LevelInfo & at(int level) const;
|
const LevelInfo & at(int level) const;
|
||||||
LevelInfo & at(int level);
|
LevelInfo & at(int level);
|
||||||
|
|
||||||
std::string toString() const;
|
std::string toString() const;
|
||||||
|
|
||||||
SecondarySkill id;
|
|
||||||
std::string identifier;
|
|
||||||
std::string name; //as displayed in GUI
|
|
||||||
std::array<si32, 2> gainChance; // gainChance[0/1] = default gain chance on level-up for might/magic heroes
|
std::array<si32, 2> gainChance; // gainChance[0/1] = default gain chance on level-up for might/magic heroes
|
||||||
|
|
||||||
void updateFrom(const JsonNode & data);
|
void updateFrom(const JsonNode & data);
|
||||||
@@ -76,7 +82,6 @@ public:
|
|||||||
{
|
{
|
||||||
h & id;
|
h & id;
|
||||||
h & identifier;
|
h & identifier;
|
||||||
h & name;
|
|
||||||
h & gainChance;
|
h & gainChance;
|
||||||
h & levels;
|
h & levels;
|
||||||
}
|
}
|
||||||
@@ -86,7 +91,7 @@ public:
|
|||||||
friend DLL_LINKAGE std::ostream & operator<<(std::ostream & out, const CSkill::LevelInfo & info);
|
friend DLL_LINKAGE std::ostream & operator<<(std::ostream & out, const CSkill::LevelInfo & info);
|
||||||
};
|
};
|
||||||
|
|
||||||
class DLL_LINKAGE CSkillHandler: public CHandlerBase<SecondarySkill, Skill, CSkill, SkillService>
|
class DLL_LINKAGE CSkillHandler: public CHandlerBase<SecondarySkill, CSkill, CSkill, SkillService>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CSkillHandler();
|
CSkillHandler();
|
||||||
@@ -99,9 +104,6 @@ public:
|
|||||||
|
|
||||||
std::vector<bool> getDefaultAllowed() const override;
|
std::vector<bool> getDefaultAllowed() const override;
|
||||||
|
|
||||||
const std::string & skillInfo(int skill, int level) const;
|
|
||||||
const std::string & skillName(int skill) const;
|
|
||||||
|
|
||||||
///json serialization helpers
|
///json serialization helpers
|
||||||
static si32 decodeSkill(const std::string & identifier);
|
static si32 decodeSkill(const std::string & identifier);
|
||||||
static std::string encodeSkill(const si32 index);
|
static std::string encodeSkill(const si32 index);
|
||||||
|
|||||||
@@ -1603,7 +1603,7 @@ std::string Bonus::Description() const
|
|||||||
str << VLC->creh->objects[sid]->namePl;
|
str << VLC->creh->objects[sid]->namePl;
|
||||||
break;
|
break;
|
||||||
case SECONDARY_SKILL:
|
case SECONDARY_SKILL:
|
||||||
str << VLC->skillh->skillName(sid);
|
str << VLC->skillh->getByIndex(sid)->getNameTranslated();
|
||||||
break;
|
break;
|
||||||
case HERO_SPECIAL:
|
case HERO_SPECIAL:
|
||||||
str << VLC->heroh->objects[sid]->name;
|
str << VLC->heroh->objects[sid]->name;
|
||||||
|
|||||||
@@ -1522,7 +1522,7 @@ void CGHeroInstance::serializeCommonOptions(JsonSerializeFormat & handler)
|
|||||||
if(rawId < 0 || rawId >= VLC->skillh->size())
|
if(rawId < 0 || rawId >= VLC->skillh->size())
|
||||||
logGlobal->error("Invalid secondary skill %d", rawId);
|
logGlobal->error("Invalid secondary skill %d", rawId);
|
||||||
|
|
||||||
handler.serializeEnum((*VLC->skillh)[SecondarySkill(rawId)]->identifier, p.second, 0, NSecondarySkill::levels);
|
handler.serializeEnum((*VLC->skillh)[SecondarySkill(rawId)]->getJsonKey(), p.second, 0, NSecondarySkill::levels);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1498,7 +1498,7 @@ std::string CGWitchHut::getHoverText(PlayerColor player) const
|
|||||||
if(wasVisited(player))
|
if(wasVisited(player))
|
||||||
{
|
{
|
||||||
hoverName += "\n" + VLC->generaltexth->allTexts[356]; // + (learn %s)
|
hoverName += "\n" + VLC->generaltexth->allTexts[356]; // + (learn %s)
|
||||||
boost::algorithm::replace_first(hoverName, "%s", VLC->skillh->skillName(ability));
|
boost::algorithm::replace_first(hoverName, "%s", VLC->skillh->getByIndex(ability)->getNameTranslated());
|
||||||
}
|
}
|
||||||
return hoverName;
|
return hoverName;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ QList<QString> RewardsWidget::getListForType(RewardType typeId)
|
|||||||
for(int i = 0; i < map.allowedAbilities.size(); ++i)
|
for(int i = 0; i < map.allowedAbilities.size(); ++i)
|
||||||
{
|
{
|
||||||
if(map.allowedAbilities[i])
|
if(map.allowedAbilities[i])
|
||||||
result.append(QString::fromStdString(VLC->skillh->objects.at(i)->getName()));
|
result.append(QString::fromStdString(VLC->skillh->objects.at(i)->getNameTranslated()));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ MapSettings::MapSettings(MapController & ctrl, QWidget *parent) :
|
|||||||
|
|
||||||
for(int i = 0; i < controller.map()->allowedAbilities.size(); ++i)
|
for(int i = 0; i < controller.map()->allowedAbilities.size(); ++i)
|
||||||
{
|
{
|
||||||
auto * item = new QListWidgetItem(QString::fromStdString(VLC->skillh->objects[i]->getName()));
|
auto * item = new QListWidgetItem(QString::fromStdString(VLC->skillh->objects[i]->getNameTranslated()));
|
||||||
item->setData(Qt::UserRole, QVariant::fromValue(i));
|
item->setData(Qt::UserRole, QVariant::fromValue(i));
|
||||||
item->setFlags(item->flags() | Qt::ItemIsUserCheckable);
|
item->setFlags(item->flags() | Qt::ItemIsUserCheckable);
|
||||||
item->setCheckState(controller.map()->allowedAbilities[i] ? Qt::Checked : Qt::Unchecked);
|
item->setCheckState(controller.map()->allowedAbilities[i] ? Qt::Checked : Qt::Unchecked);
|
||||||
|
|||||||
Reference in New Issue
Block a user