|
|
@@ -1008,6 +1008,9 @@ void CSelectionScreen::setSInfo(const StartInfo &si)
|
|
|
|
|
|
card->difficulty->setSelected(si.difficulty);
|
|
|
|
|
|
+ if(curTab == randMapTab)
|
|
|
+ randMapTab->setMapGenOptions(si.mapGenOptions);
|
|
|
+
|
|
|
GH.totalRedraw();
|
|
|
}
|
|
|
|
|
|
@@ -1642,16 +1645,22 @@ CRandomMapTab::CRandomMapTab()
|
|
|
mapSizeBtnGroup->setSelected(1);
|
|
|
mapSizeBtnGroup->addCallback([&](int btnId)
|
|
|
{
|
|
|
- const std::vector<int> mapSizeVal = {CMapHeader::MAP_SIZE_SMALL,CMapHeader::MAP_SIZE_MIDDLE,CMapHeader::MAP_SIZE_LARGE,CMapHeader::MAP_SIZE_XLARGE};
|
|
|
+ auto mapSizeVal = getPossibleMapSizes();
|
|
|
mapGenOptions.setWidth(mapSizeVal[btnId]);
|
|
|
mapGenOptions.setHeight(mapSizeVal[btnId]);
|
|
|
- updateMapInfo();
|
|
|
+ if(!SEL->isGuest())
|
|
|
+ updateMapInfo();
|
|
|
});
|
|
|
|
|
|
// Two levels
|
|
|
twoLevelsBtn = new CToggleButton(Point(346, 81), "RANUNDR", CGI->generaltexth->zelp[202]);
|
|
|
//twoLevelsBtn->select(true); for now, deactivated
|
|
|
- twoLevelsBtn->addCallback([&](bool on) { mapGenOptions.setHasTwoLevels(on); updateMapInfo(); });
|
|
|
+ twoLevelsBtn->addCallback([&](bool on)
|
|
|
+ {
|
|
|
+ mapGenOptions.setHasTwoLevels(on);
|
|
|
+ if(!SEL->isGuest())
|
|
|
+ updateMapInfo();
|
|
|
+ });
|
|
|
|
|
|
// Create number defs list
|
|
|
std::vector<std::string> numberDefs;
|
|
|
@@ -1673,7 +1682,8 @@ CRandomMapTab::CRandomMapTab()
|
|
|
deactivateButtonsFrom(teamsCntGroup, btnId);
|
|
|
deactivateButtonsFrom(compOnlyPlayersCntGroup, 8 - btnId + 1);
|
|
|
validatePlayersCnt(btnId);
|
|
|
- updateMapInfo();
|
|
|
+ if(!SEL->isGuest())
|
|
|
+ updateMapInfo();
|
|
|
});
|
|
|
|
|
|
// Amount of teams
|
|
|
@@ -1684,7 +1694,8 @@ CRandomMapTab::CRandomMapTab()
|
|
|
teamsCntGroup->addCallback([&](int btnId)
|
|
|
{
|
|
|
mapGenOptions.setTeamCount(btnId);
|
|
|
- updateMapInfo();
|
|
|
+ if(!SEL->isGuest())
|
|
|
+ updateMapInfo();
|
|
|
});
|
|
|
|
|
|
// Computer only players
|
|
|
@@ -1698,7 +1709,8 @@ CRandomMapTab::CRandomMapTab()
|
|
|
mapGenOptions.setCompOnlyPlayerCount(btnId);
|
|
|
deactivateButtonsFrom(compOnlyTeamsCntGroup, btnId);
|
|
|
validateCompOnlyPlayersCnt(btnId);
|
|
|
- updateMapInfo();
|
|
|
+ if(!SEL->isGuest())
|
|
|
+ updateMapInfo();
|
|
|
});
|
|
|
|
|
|
// Computer only teams
|
|
|
@@ -1710,7 +1722,8 @@ CRandomMapTab::CRandomMapTab()
|
|
|
compOnlyTeamsCntGroup->addCallback([&](int btnId)
|
|
|
{
|
|
|
mapGenOptions.setCompOnlyTeamCount(btnId);
|
|
|
- updateMapInfo();
|
|
|
+ if(!SEL->isGuest())
|
|
|
+ updateMapInfo();
|
|
|
});
|
|
|
|
|
|
const int WIDE_BTN_WIDTH = 85;
|
|
|
@@ -1743,7 +1756,8 @@ CRandomMapTab::CRandomMapTab()
|
|
|
showRandMaps = new CButton(Point(54, 535), "RANSHOW", CGI->generaltexth->zelp[252]);
|
|
|
|
|
|
// Initialize map info object
|
|
|
- updateMapInfo();
|
|
|
+ if(!SEL->isGuest())
|
|
|
+ updateMapInfo();
|
|
|
}
|
|
|
|
|
|
void CRandomMapTab::addButtonsWithRandToGroup(CToggleGroup * group, const std::vector<std::string> & defs, int nStart, int nEnd, int btnWidth, int helpStartIndex, int helpRandIndex) const
|
|
|
@@ -1826,6 +1840,11 @@ void CRandomMapTab::validateCompOnlyPlayersCnt(int compOnlyPlayersCnt)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+std::vector<int> CRandomMapTab::getPossibleMapSizes()
|
|
|
+{
|
|
|
+ return {CMapHeader::MAP_SIZE_SMALL,CMapHeader::MAP_SIZE_MIDDLE,CMapHeader::MAP_SIZE_LARGE,CMapHeader::MAP_SIZE_XLARGE};
|
|
|
+}
|
|
|
+
|
|
|
void CRandomMapTab::showAll(SDL_Surface * to)
|
|
|
{
|
|
|
CIntObject::showAll(to);
|
|
|
@@ -1914,6 +1933,18 @@ const CMapGenOptions & CRandomMapTab::getMapGenOptions() const
|
|
|
return mapGenOptions;
|
|
|
}
|
|
|
|
|
|
+void CRandomMapTab::setMapGenOptions(shared_ptr<CMapGenOptions> opts)
|
|
|
+{
|
|
|
+ mapSizeBtnGroup->setSelected(vstd::find_pos(getPossibleMapSizes(), opts->getWidth()));
|
|
|
+ twoLevelsBtn->setSelected(opts->getHasTwoLevels());
|
|
|
+ playersCntGroup->setSelected(opts->getPlayerCount());
|
|
|
+ teamsCntGroup->setSelected(opts->getTeamCount());
|
|
|
+ compOnlyPlayersCntGroup->setSelected(opts->getCompOnlyPlayerCount());
|
|
|
+ compOnlyTeamsCntGroup->setSelected(opts->getCompOnlyTeamCount());
|
|
|
+ waterContentGroup->setSelected(opts->getWaterContent());
|
|
|
+ monsterStrengthGroup->setSelected(opts->getMonsterStrength());
|
|
|
+}
|
|
|
+
|
|
|
CChatBox::CChatBox(const Rect &rect)
|
|
|
{
|
|
|
OBJ_CONSTRUCTION;
|
|
|
@@ -3935,6 +3966,7 @@ void PlayerJoined::apply(CSelectionScreen *selScreen)
|
|
|
|
|
|
selScreen->propagateNames();
|
|
|
selScreen->propagateOptions();
|
|
|
+ selScreen->toggleTab(selScreen->curTab);
|
|
|
|
|
|
GH.totalRedraw();
|
|
|
}
|