1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-23 22:37:55 +02:00

Removed CGI in favor of VLC. Map handle is for now global variable

This commit is contained in:
Ivan Savenko
2025-02-10 22:52:48 +00:00
parent f657e85305
commit ffd37a8fa8
106 changed files with 940 additions and 1211 deletions

View File

@@ -12,7 +12,6 @@
#include "CSelectionBase.h"
#include "../CGameInfo.h"
#include "../CServerHandler.h"
#include "../GameEngine.h"
#include "../gui/Shortcut.h"
@@ -48,6 +47,7 @@
#include "../../lib/CConfigHandler.h"
#include "../../lib/mapping/CMapInfo.h"
#include "../../lib/mapping/CMapHeader.h"
#include "../../lib/VCMI_Lib.h"
static JsonPath optionsTabConfigLocation()
{
@@ -112,7 +112,7 @@ size_t OptionsTab::CPlayerSettingsHelper::getImageIndex(bool big)
if (playerSettings.castle == FactionID::RANDOM)
return TOWN_RANDOM;
return (*CGI->townh)[factionIndex]->town->clientInfo.icons[true][false] + (big ? 0 : 2);
return (*VLC->townh)[factionIndex]->town->clientInfo.icons[true][false] + (big ? 0 : 2);
}
case HERO:
@@ -127,7 +127,7 @@ size_t OptionsTab::CPlayerSettingsHelper::getImageIndex(bool big)
return playerSettings.heroPortrait;
auto index = playerSettings.getHeroValidated();
return (*CGI->heroh)[index]->imageIndex;
return (*VLC->heroh)[index]->imageIndex;
}
case BONUS:
@@ -142,7 +142,7 @@ size_t OptionsTab::CPlayerSettingsHelper::getImageIndex(bool big)
return GOLD;
case PlayerStartingBonus::RESOURCE:
{
switch((*CGI->townh)[factionIndex]->town->primaryRes.toEnum())
switch((*VLC->townh)[factionIndex]->town->primaryRes.toEnum())
{
case EGameResID::WOOD_AND_ORE:
return WOOD_ORE;
@@ -191,33 +191,33 @@ std::string OptionsTab::CPlayerSettingsHelper::getName()
case TOWN:
{
if (playerSettings.castle == FactionID::NONE)
return CGI->generaltexth->allTexts[523];
return VLC->generaltexth->allTexts[523];
if (playerSettings.castle == FactionID::RANDOM)
return CGI->generaltexth->allTexts[522];
return VLC->generaltexth->allTexts[522];
auto factionIndex = playerSettings.getCastleValidated();
return (*CGI->townh)[factionIndex]->getNameTranslated();
return (*VLC->townh)[factionIndex]->getNameTranslated();
}
case HERO:
{
if (playerSettings.hero == HeroTypeID::NONE)
return CGI->generaltexth->allTexts[523];
return VLC->generaltexth->allTexts[523];
if (playerSettings.hero == HeroTypeID::RANDOM)
return CGI->generaltexth->allTexts[522];
return VLC->generaltexth->allTexts[522];
if(!playerSettings.heroNameTextId.empty())
return CGI->generaltexth->translate(playerSettings.heroNameTextId);
return VLC->generaltexth->translate(playerSettings.heroNameTextId);
auto index = playerSettings.getHeroValidated();
return (*CGI->heroh)[index]->getNameTranslated();
return (*VLC->heroh)[index]->getNameTranslated();
}
case BONUS:
{
if (playerSettings.bonus == PlayerStartingBonus::RANDOM)
return CGI->generaltexth->allTexts[522];
return VLC->generaltexth->allTexts[522];
return CGI->generaltexth->arraytxt[214 + static_cast<int>(playerSettings.bonus)];
return VLC->generaltexth->arraytxt[214 + static_cast<int>(playerSettings.bonus)];
}
}
return "";
@@ -229,21 +229,21 @@ std::string OptionsTab::CPlayerSettingsHelper::getTitle()
switch(selectionType)
{
case OptionsTab::TOWN:
return playerSettings.castle.isValid() ? CGI->generaltexth->allTexts[80] : CGI->generaltexth->allTexts[103];
return playerSettings.castle.isValid() ? VLC->generaltexth->allTexts[80] : VLC->generaltexth->allTexts[103];
case OptionsTab::HERO:
return playerSettings.hero.isValid() ? CGI->generaltexth->allTexts[77] : CGI->generaltexth->allTexts[101];
return playerSettings.hero.isValid() ? VLC->generaltexth->allTexts[77] : VLC->generaltexth->allTexts[101];
case OptionsTab::BONUS:
{
switch(playerSettings.bonus)
{
case PlayerStartingBonus::RANDOM:
return CGI->generaltexth->allTexts[86]; //{Random Bonus}
return VLC->generaltexth->allTexts[86]; //{Random Bonus}
case PlayerStartingBonus::ARTIFACT:
return CGI->generaltexth->allTexts[83]; //{Artifact Bonus}
return VLC->generaltexth->allTexts[83]; //{Artifact Bonus}
case PlayerStartingBonus::GOLD:
return CGI->generaltexth->allTexts[84]; //{Gold Bonus}
return VLC->generaltexth->allTexts[84]; //{Gold Bonus}
case PlayerStartingBonus::RESOURCE:
return CGI->generaltexth->allTexts[85]; //{Resource Bonus}
return VLC->generaltexth->allTexts[85]; //{Resource Bonus}
}
}
}
@@ -261,7 +261,7 @@ std::string OptionsTab::CPlayerSettingsHelper::getSubtitle()
case HERO:
{
if(playerSettings.hero.isValid())
return getName() + " - " + (*CGI->heroh)[heroIndex]->heroClass->getNameTranslated();
return getName() + " - " + (*VLC->heroh)[heroIndex]->heroClass->getNameTranslated();
return getName();
}
@@ -270,21 +270,21 @@ std::string OptionsTab::CPlayerSettingsHelper::getSubtitle()
switch(playerSettings.bonus)
{
case PlayerStartingBonus::GOLD:
return CGI->generaltexth->allTexts[87]; //500-1000
return VLC->generaltexth->allTexts[87]; //500-1000
case PlayerStartingBonus::RESOURCE:
{
switch((*CGI->townh)[factionIndex]->town->primaryRes.toEnum())
switch((*VLC->townh)[factionIndex]->town->primaryRes.toEnum())
{
case EGameResID::MERCURY:
return CGI->generaltexth->allTexts[694];
return VLC->generaltexth->allTexts[694];
case EGameResID::SULFUR:
return CGI->generaltexth->allTexts[695];
return VLC->generaltexth->allTexts[695];
case EGameResID::CRYSTAL:
return CGI->generaltexth->allTexts[692];
return VLC->generaltexth->allTexts[692];
case EGameResID::GEMS:
return CGI->generaltexth->allTexts[693];
return VLC->generaltexth->allTexts[693];
case EGameResID::WOOD_AND_ORE:
return CGI->generaltexth->allTexts[89]; //At the start of the game, 5-10 wood and 5-10 ore are added to your Kingdom's resource pool
return VLC->generaltexth->allTexts[89]; //At the start of the game, 5-10 wood and 5-10 ore are added to your Kingdom's resource pool
}
}
}
@@ -300,33 +300,33 @@ std::string OptionsTab::CPlayerSettingsHelper::getDescription()
switch(selectionType)
{
case TOWN:
return CGI->generaltexth->allTexts[104];
return VLC->generaltexth->allTexts[104];
case HERO:
return CGI->generaltexth->allTexts[102];
return VLC->generaltexth->allTexts[102];
case BONUS:
{
switch(playerSettings.bonus)
{
case PlayerStartingBonus::RANDOM:
return CGI->generaltexth->allTexts[94]; //Gold, wood and ore, or an artifact is randomly chosen as your starting bonus
return VLC->generaltexth->allTexts[94]; //Gold, wood and ore, or an artifact is randomly chosen as your starting bonus
case PlayerStartingBonus::ARTIFACT:
return CGI->generaltexth->allTexts[90]; //An artifact is randomly chosen and equipped to your starting hero
return VLC->generaltexth->allTexts[90]; //An artifact is randomly chosen and equipped to your starting hero
case PlayerStartingBonus::GOLD:
return CGI->generaltexth->allTexts[92]; //At the start of the game, 500-1000 gold is added to your Kingdom's resource pool
return VLC->generaltexth->allTexts[92]; //At the start of the game, 500-1000 gold is added to your Kingdom's resource pool
case PlayerStartingBonus::RESOURCE:
{
switch((*CGI->townh)[factionIndex]->town->primaryRes.toEnum())
switch((*VLC->townh)[factionIndex]->town->primaryRes.toEnum())
{
case EGameResID::MERCURY:
return CGI->generaltexth->allTexts[690];
return VLC->generaltexth->allTexts[690];
case EGameResID::SULFUR:
return CGI->generaltexth->allTexts[691];
return VLC->generaltexth->allTexts[691];
case EGameResID::CRYSTAL:
return CGI->generaltexth->allTexts[688];
return VLC->generaltexth->allTexts[688];
case EGameResID::GEMS:
return CGI->generaltexth->allTexts[689];
return VLC->generaltexth->allTexts[689];
case EGameResID::WOOD_AND_ORE:
return CGI->generaltexth->allTexts[93]; //At the start of the game, 5-10 wood and 5-10 ore are added to your Kingdom's resource pool
return VLC->generaltexth->allTexts[93]; //At the start of the game, 5-10 wood and 5-10 ore are added to your Kingdom's resource pool
}
}
}
@@ -375,9 +375,9 @@ void OptionsTab::CPlayerOptionTooltipBox::genTownWindow()
pos = Rect(0, 0, 228, 290);
genHeader();
labelAssociatedCreatures = std::make_shared<CLabel>(pos.w / 2 + 8, 122, FONT_MEDIUM, ETextAlignment::CENTER, Colors::YELLOW, CGI->generaltexth->allTexts[79]);
labelAssociatedCreatures = std::make_shared<CLabel>(pos.w / 2 + 8, 122, FONT_MEDIUM, ETextAlignment::CENTER, Colors::YELLOW, VLC->generaltexth->allTexts[79]);
std::vector<std::shared_ptr<CComponent>> components;
const CTown * town = (*CGI->townh)[factionIndex]->town;
const CTown * town = (*VLC->townh)[factionIndex]->town;
for(auto & elem : town->creatures)
{
@@ -396,10 +396,10 @@ void OptionsTab::CPlayerOptionTooltipBox::genHeroWindow()
pos = Rect(0, 0, 292, 226);
genHeader();
labelHeroSpeciality = std::make_shared<CLabel>(pos.w / 2 + 4, 117, FONT_MEDIUM, ETextAlignment::CENTER, Colors::YELLOW, CGI->generaltexth->allTexts[78]);
labelHeroSpeciality = std::make_shared<CLabel>(pos.w / 2 + 4, 117, FONT_MEDIUM, ETextAlignment::CENTER, Colors::YELLOW, VLC->generaltexth->allTexts[78]);
imageSpeciality = std::make_shared<CAnimImage>(AnimationPath::builtin("UN44"), (*CGI->heroh)[heroIndex]->imageIndex, 0, pos.w / 2 - 22, 134);
labelSpecialityName = std::make_shared<CLabel>(pos.w / 2, 188, FONT_SMALL, ETextAlignment::CENTER, Colors::WHITE, (*CGI->heroh)[heroIndex]->getSpecialtyNameTranslated());
imageSpeciality = std::make_shared<CAnimImage>(AnimationPath::builtin("UN44"), (*VLC->heroh)[heroIndex]->imageIndex, 0, pos.w / 2 - 22, 134);
labelSpecialityName = std::make_shared<CLabel>(pos.w / 2, 188, FONT_SMALL, ETextAlignment::CENTER, Colors::WHITE, (*VLC->heroh)[heroIndex]->getSpecialtyNameTranslated());
}
void OptionsTab::CPlayerOptionTooltipBox::genBonusWindow()
@@ -813,7 +813,7 @@ OptionsTab::HandicapWindow::HandicapWindow()
backgroundTexture = std::make_shared<FilledTexturePlayerColored>(pos);
backgroundTexture->setPlayerColor(PlayerColor(1));
labels.push_back(std::make_shared<CLabel>(pos.w / 2 + 8, 15, FONT_BIG, ETextAlignment::CENTER, Colors::YELLOW, CGI->generaltexth->translate("vcmi.lobby.handicap")));
labels.push_back(std::make_shared<CLabel>(pos.w / 2 + 8, 15, FONT_BIG, ETextAlignment::CENTER, Colors::YELLOW, VLC->generaltexth->translate("vcmi.lobby.handicap")));
enum Columns : int32_t
{
@@ -841,9 +841,9 @@ OptionsTab::HandicapWindow::HandicapWindow()
if(i == 0)
{
if(isIncome)
labels.push_back(std::make_shared<CLabel>(xPos, 38, FONT_TINY, ETextAlignment::TOPLEFT, Colors::WHITE, CGI->generaltexth->translate("core.jktext.32")));
labels.push_back(std::make_shared<CLabel>(xPos, 38, FONT_TINY, ETextAlignment::TOPLEFT, Colors::WHITE, VLC->generaltexth->translate("core.jktext.32")));
else if(isGrowth)
labels.push_back(std::make_shared<CLabel>(xPos, 38, FONT_TINY, ETextAlignment::TOPLEFT, Colors::WHITE, CGI->generaltexth->translate("core.genrltxt.194")));
labels.push_back(std::make_shared<CLabel>(xPos, 38, FONT_TINY, ETextAlignment::TOPLEFT, Colors::WHITE, VLC->generaltexth->translate("core.genrltxt.194")));
else
anim.push_back(std::make_shared<CAnimImage>(AnimationPath::builtin("SMALRES"), GameResID(resource), 0, 15 + xPos + (j == 0 ? 10 : 0), 35));
}
@@ -864,11 +864,11 @@ OptionsTab::HandicapWindow::HandicapWindow()
textinputs[player][resource]->setPopupCallback([isIncome, isGrowth](){
// Help for the textinputs
if(isIncome)
CRClickPopup::createAndPush(CGI->generaltexth->translate("vcmi.lobby.handicap.income"));
CRClickPopup::createAndPush(VLC->generaltexth->translate("vcmi.lobby.handicap.income"));
else if(isGrowth)
CRClickPopup::createAndPush(CGI->generaltexth->translate("vcmi.lobby.handicap.growth"));
CRClickPopup::createAndPush(VLC->generaltexth->translate("vcmi.lobby.handicap.growth"));
else
CRClickPopup::createAndPush(CGI->generaltexth->translate("vcmi.lobby.handicap.resource"));
CRClickPopup::createAndPush(VLC->generaltexth->translate("vcmi.lobby.handicap.resource"));
});
if(isIncome || isGrowth)
labels.push_back(std::make_shared<CLabel>(area.topRight().x, area.center().y, FONT_SMALL, ETextAlignment::CENTERRIGHT, Colors::WHITE, "%"));
@@ -1039,10 +1039,10 @@ OptionsTab::PlayerOptionsEntry::PlayerOptionsEntry(const PlayerSettings & S, con
labelPlayerNameEdit->setText(name);
}
labelWhoCanPlay = std::make_shared<CMultiLineLabel>(Rect(6, 21, 45, 26), EFonts::FONT_TINY, ETextAlignment::CENTER, Colors::WHITE, CGI->generaltexth->arraytxt[206 + whoCanPlay]);
labelWhoCanPlay = std::make_shared<CMultiLineLabel>(Rect(6, 21, 45, 26), EFonts::FONT_TINY, ETextAlignment::CENTER, Colors::WHITE, VLC->generaltexth->arraytxt[206 + whoCanPlay]);
auto hasHandicap = [this](){ return s->handicap.startBonus.empty() && s->handicap.percentIncome == 100 && s->handicap.percentGrowth == 100; };
std::string labelHandicapText = hasHandicap() ? CGI->generaltexth->arraytxt[210] : MetaString::createFromTextID("vcmi.lobby.handicap").toString();
std::string labelHandicapText = hasHandicap() ? VLC->generaltexth->arraytxt[210] : MetaString::createFromTextID("vcmi.lobby.handicap").toString();
labelHandicap = std::make_shared<CMultiLineLabel>(Rect(55, 23, 46, 24), EFonts::FONT_TINY, ETextAlignment::CENTER, Colors::WHITE, labelHandicapText);
handicap = std::make_shared<LRClickableArea>(Rect(53, 23, 50, 24), [](){
if(!CSH->isHost())
@@ -1084,12 +1084,12 @@ OptionsTab::PlayerOptionsEntry::PlayerOptionsEntry(const PlayerSettings & S, con
if(SEL->screenType == ESelectionScreen::newGame)
{
buttonTownLeft = std::make_shared<CButton>(Point(107, 5), AnimationPath::builtin("ADOPLFA.DEF"), CGI->generaltexth->zelp[132], std::bind(&IServerAPI::setPlayerOption, CSH, LobbyChangePlayerOption::TOWN, -1, s->color));
buttonTownRight = std::make_shared<CButton>(Point(168, 5), AnimationPath::builtin("ADOPRTA.DEF"), CGI->generaltexth->zelp[133], std::bind(&IServerAPI::setPlayerOption, CSH, LobbyChangePlayerOption::TOWN, +1, s->color));
buttonHeroLeft = std::make_shared<CButton>(Point(183, 5), AnimationPath::builtin("ADOPLFA.DEF"), CGI->generaltexth->zelp[148], std::bind(&IServerAPI::setPlayerOption, CSH, LobbyChangePlayerOption::HERO, -1, s->color));
buttonHeroRight = std::make_shared<CButton>(Point(244, 5), AnimationPath::builtin("ADOPRTA.DEF"), CGI->generaltexth->zelp[149], std::bind(&IServerAPI::setPlayerOption, CSH, LobbyChangePlayerOption::HERO, +1, s->color));
buttonBonusLeft = std::make_shared<CButton>(Point(259, 5), AnimationPath::builtin("ADOPLFA.DEF"), CGI->generaltexth->zelp[164], std::bind(&IServerAPI::setPlayerOption, CSH, LobbyChangePlayerOption::BONUS, -1, s->color));
buttonBonusRight = std::make_shared<CButton>(Point(320, 5), AnimationPath::builtin("ADOPRTA.DEF"), CGI->generaltexth->zelp[165], std::bind(&IServerAPI::setPlayerOption, CSH, LobbyChangePlayerOption::BONUS, +1, s->color));
buttonTownLeft = std::make_shared<CButton>(Point(107, 5), AnimationPath::builtin("ADOPLFA.DEF"), VLC->generaltexth->zelp[132], std::bind(&IServerAPI::setPlayerOption, CSH, LobbyChangePlayerOption::TOWN, -1, s->color));
buttonTownRight = std::make_shared<CButton>(Point(168, 5), AnimationPath::builtin("ADOPRTA.DEF"), VLC->generaltexth->zelp[133], std::bind(&IServerAPI::setPlayerOption, CSH, LobbyChangePlayerOption::TOWN, +1, s->color));
buttonHeroLeft = std::make_shared<CButton>(Point(183, 5), AnimationPath::builtin("ADOPLFA.DEF"), VLC->generaltexth->zelp[148], std::bind(&IServerAPI::setPlayerOption, CSH, LobbyChangePlayerOption::HERO, -1, s->color));
buttonHeroRight = std::make_shared<CButton>(Point(244, 5), AnimationPath::builtin("ADOPRTA.DEF"), VLC->generaltexth->zelp[149], std::bind(&IServerAPI::setPlayerOption, CSH, LobbyChangePlayerOption::HERO, +1, s->color));
buttonBonusLeft = std::make_shared<CButton>(Point(259, 5), AnimationPath::builtin("ADOPLFA.DEF"), VLC->generaltexth->zelp[164], std::bind(&IServerAPI::setPlayerOption, CSH, LobbyChangePlayerOption::BONUS, -1, s->color));
buttonBonusRight = std::make_shared<CButton>(Point(320, 5), AnimationPath::builtin("ADOPRTA.DEF"), VLC->generaltexth->zelp[165], std::bind(&IServerAPI::setPlayerOption, CSH, LobbyChangePlayerOption::BONUS, +1, s->color));
}
hideUnavailableButtons();
@@ -1099,7 +1099,7 @@ OptionsTab::PlayerOptionsEntry::PlayerOptionsEntry(const PlayerSettings & S, con
flag = std::make_shared<CButton>(
Point(-43, 2),
AnimationPath::builtin(flags[s->color.getNum()]),
CGI->generaltexth->zelp[180],
VLC->generaltexth->zelp[180],
std::bind(&OptionsTab::onSetPlayerClicked, &parentTab, *s)
);
flag->setHoverable(true);