diff --git a/client/lobby/OptionsTab.cpp b/client/lobby/OptionsTab.cpp index 1211ac9e1..4a9e1f0db 100644 --- a/client/lobby/OptionsTab.cpp +++ b/client/lobby/OptionsTab.cpp @@ -436,6 +436,7 @@ OptionsTab::SelectionWindow::SelectionWindow(PlayerColor _color) selectedHero = selectedHero; selectedBonus = selectedBonus; allowedFactions = SEL->getPlayerInfo(color.getNum()).allowedFactions; + allowedHeroes = SEL->getMapInfo()->mapHeader->allowedHeroes; redraw(); @@ -454,6 +455,7 @@ void OptionsTab::SelectionWindow::apply() void OptionsTab::SelectionWindow::setSelection() { + // fraction int selectedFractionPos = -1; for(int i = 0; isetPlayerOption(LobbyChangePlayerOption::TOWN, deltatown > 0 ? 1 : -1, color); + if(deltaFraction != 0) + for(int i = 0; isetPlayerOption(LobbyChangePlayerOption::TOWN, deltaFraction > 0 ? 1 : -1, color); + + // hero + int selectedHeroPos = -1; + for(int i = 0; isetPlayerOption(LobbyChangePlayerOption::HERO, deltaHero > 0 ? 1 : -1, color); + + // bonus + //int deltaBonus = selectedBonus - initialBonus; + + //if(deltaBonus != 0) + // for(int i = 0; isetPlayerOption(LobbyChangePlayerOption::BONUS, deltaBonus > 0 ? 1 : -1, color); } void OptionsTab::SelectionWindow::redraw() @@ -487,9 +514,9 @@ void OptionsTab::SelectionWindow::redraw() void OptionsTab::SelectionWindow::genContentTitle() { - components.push_back(std::make_shared((ELEMENTS_PER_LINE - 1) * 58, 40, FONT_BIG, ETextAlignment::CENTER, Colors::YELLOW, "Town")); - components.push_back(std::make_shared((ELEMENTS_PER_LINE * 2) * 58, 40, FONT_BIG, ETextAlignment::CENTER, Colors::YELLOW, "Hero")); - components.push_back(std::make_shared((ELEMENTS_PER_LINE * 2 + 3) * 58 + 29, 40, FONT_BIG, ETextAlignment::CENTER, Colors::YELLOW, "Bonus")); + components.push_back(std::make_shared((ELEMENTS_PER_LINE - 1) * 58, 40, FONT_BIG, ETextAlignment::CENTER, Colors::YELLOW, CGI->generaltexth->translate("core.genrltxt.518"))); + components.push_back(std::make_shared((ELEMENTS_PER_LINE * 2) * 58, 40, FONT_BIG, ETextAlignment::CENTER, Colors::YELLOW, CGI->generaltexth->translate("core.genrltxt.519"))); + components.push_back(std::make_shared((ELEMENTS_PER_LINE * 2 + 3) * 58 + 29, 40, FONT_BIG, ETextAlignment::CENTER, Colors::YELLOW, CGI->generaltexth->translate("core.genrltxt.520"))); } void OptionsTab::SelectionWindow::genContentCastles() @@ -528,7 +555,7 @@ void OptionsTab::SelectionWindow::genContentHeroes() CPlayerSettingsHelper helper = CPlayerSettingsHelper(set, SelType::HERO); components.push_back(std::make_shared(helper.getImageName(), helper.getImageIndex(), 0, (ELEMENTS_PER_LINE / 2) * 58 + (ELEMENTS_PER_LINE + 1) * 58 + 34, 32 / 2 + 64)); - std::vector allowedHeroesFlag = SEL->getMapInfo()->mapHeader->allowedHeroes; + std::vector allowedHeroesFlag = allowedHeroes; std::set allowedHeroes; for(int i = 0; i < allowedHeroesFlag.size(); i++) @@ -648,7 +675,10 @@ void OptionsTab::SelectionWindow::clickReleased(const Point & cursorPosition) { if(set.castle != -2) { selectedFraction = set.castle; - redraw(); + if(set.castle == -1) + apply(); + else + redraw(); } else if(set.hero != -2) { diff --git a/client/lobby/OptionsTab.h b/client/lobby/OptionsTab.h index 014f8d04b..0b198b841 100644 --- a/client/lobby/OptionsTab.h +++ b/client/lobby/OptionsTab.h @@ -115,6 +115,8 @@ public: int selectedBonus; std::set allowedFactions; + std::vector allowedHeroes; + std::vector allowedBonus; void genContentTitle(); void genContentCastles();