From 2571ca4aed3749e2698333d25fba0f3f627ed4e3 Mon Sep 17 00:00:00 2001 From: Laserlicht <13953785+Laserlicht@users.noreply.github.com> Date: Tue, 18 Nov 2025 21:46:03 +0100 Subject: [PATCH] code review --- client/lobby/RandomMapTab.cpp | 73 +++++++++++++++++++---------------- client/lobby/RandomMapTab.h | 3 +- 2 files changed, 41 insertions(+), 35 deletions(-) diff --git a/client/lobby/RandomMapTab.cpp b/client/lobby/RandomMapTab.cpp index 23ac9dab2..41e4294cf 100644 --- a/client/lobby/RandomMapTab.cpp +++ b/client/lobby/RandomMapTab.cpp @@ -54,37 +54,7 @@ RandomMapTab::RandomMapTab(): addCallback("toggleMapSize", [this](int btnId) { - if(btnId == -1) - return; - - auto mapSizeVal = getPossibleMapSizes(); - - auto setTemplateForSize = [this](){ - if(mapGenOptions->getMapTemplate()) - if(!mapGenOptions->getMapTemplate()->matchesSize(int3{mapGenOptions->getWidth(), mapGenOptions->getHeight(), mapGenOptions->getLevels()})) - setTemplate(nullptr); - updateMapInfoByHost(); - }; - - if(btnId == mapSizeVal.size() - 1) - { - ENGINE->windows().createAndPushWindow(int3(mapGenOptions->getWidth(), mapGenOptions->getHeight(), mapGenOptions->getLevels()), [this, setTemplateForSize](int3 ret){ - if(ret.z > 2) - { - std::shared_ptr temp = CInfoWindow::create(LIBRARY->generaltexth->translate("vcmi.lobby.customRmgSize.experimental"), PlayerColor(0), {}); //TODO: multilevel support - ENGINE->windows().pushWindow(temp); - } - mapGenOptions->setWidth(ret.x); - mapGenOptions->setHeight(ret.y); - mapGenOptions->setLevels(ret.z); - setTemplateForSize(); - }); - return; - } - - mapGenOptions->setWidth(mapSizeVal[btnId]); - mapGenOptions->setHeight(mapSizeVal[btnId]); - setTemplateForSize(); + onToggleMapSize(btnId); }); addCallback("toggleTwoLevels", [&](bool on) { @@ -225,6 +195,41 @@ RandomMapTab::RandomMapTab(): loadOptions(); } +void RandomMapTab::onToggleMapSize(int btnId) +{ + if(btnId == -1) + return; + + auto mapSizeVal = getStandardMapSizes(); + + auto setTemplateForSize = [this](){ + if(mapGenOptions->getMapTemplate()) + if(!mapGenOptions->getMapTemplate()->matchesSize(int3{mapGenOptions->getWidth(), mapGenOptions->getHeight(), mapGenOptions->getLevels()})) + setTemplate(nullptr); + updateMapInfoByHost(); + }; + + if(btnId == mapSizeVal.size() - 1) + { + ENGINE->windows().createAndPushWindow(int3(mapGenOptions->getWidth(), mapGenOptions->getHeight(), mapGenOptions->getLevels()), [this, setTemplateForSize](int3 ret){ + if(ret.z > 2) + { + std::shared_ptr temp = CInfoWindow::create(LIBRARY->generaltexth->translate("vcmi.lobby.customRmgSize.experimental"), PlayerColor(0), {}); //TODO: multilevel support + ENGINE->windows().pushWindow(temp); + } + mapGenOptions->setWidth(ret.x); + mapGenOptions->setHeight(ret.y); + mapGenOptions->setLevels(ret.z); + setTemplateForSize(); + }); + return; + } + + mapGenOptions->setWidth(mapSizeVal[btnId]); + mapGenOptions->setHeight(mapSizeVal[btnId]); + setTemplateForSize(); +} + void RandomMapTab::updateMapInfoByHost() { if(GAME->server().isGuest()) @@ -372,7 +377,7 @@ void RandomMapTab::setMapGenOptions(std::shared_ptr opts) if(auto w = widget("groupMapSize")) { - const auto & mapSizes = getPossibleMapSizes(); + const auto & mapSizes = getStandardMapSizes(); for(auto toggle : w->buttons) { if(auto button = std::dynamic_pointer_cast(toggle.second)) @@ -383,7 +388,7 @@ void RandomMapTab::setMapGenOptions(std::shared_ptr opts) button->block(!sizeAllowed && !(toggle.first == mapSizes.size() - 1)); } } - auto position = vstd::find_pos(getPossibleMapSizes(), opts->getWidth()); + auto position = vstd::find_pos(getStandardMapSizes(), opts->getWidth()); w->setSelected(position == mapSizes.size() - 1 || opts->getWidth() != opts->getHeight() ? -1 : position); } if(auto w = widget("buttonTwoLevels")) @@ -485,7 +490,7 @@ void RandomMapTab::deactivateButtonsFrom(CToggleGroup & group, const std::set RandomMapTab::getPossibleMapSizes() +std::vector RandomMapTab::getStandardMapSizes() { return {CMapHeader::MAP_SIZE_SMALL, CMapHeader::MAP_SIZE_MIDDLE, CMapHeader::MAP_SIZE_LARGE, CMapHeader::MAP_SIZE_XLARGE, CMapHeader::MAP_SIZE_HUGE, CMapHeader::MAP_SIZE_XHUGE, CMapHeader::MAP_SIZE_GIANT}; } diff --git a/client/lobby/RandomMapTab.h b/client/lobby/RandomMapTab.h index dae74eea6..965539137 100644 --- a/client/lobby/RandomMapTab.h +++ b/client/lobby/RandomMapTab.h @@ -47,7 +47,8 @@ public: private: void deactivateButtonsFrom(CToggleGroup & group, const std::set & allowed); - std::vector getPossibleMapSizes(); + std::vector getStandardMapSizes(); + void onToggleMapSize(int btnId); std::shared_ptr mapInfo; std::shared_ptr mapGenOptions;