mirror of
https://github.com/vcmi/vcmi.git
synced 2025-11-25 22:42:04 +02:00
@@ -38,6 +38,10 @@
|
||||
#include "../../lib/filesystem/Filesystem.h"
|
||||
#include "../../lib/RoadHandler.h"
|
||||
|
||||
#include "../../lib/CConfigHandler.h"
|
||||
#include "../../lib/serializer/JsonSerializer.h"
|
||||
#include "../../lib/serializer/JsonDeserializer.h"
|
||||
|
||||
RandomMapTab::RandomMapTab():
|
||||
InterfaceObjectConfigurable()
|
||||
{
|
||||
@@ -162,7 +166,7 @@ RandomMapTab::RandomMapTab():
|
||||
};
|
||||
}
|
||||
|
||||
updateMapInfoByHost();
|
||||
loadOptions();
|
||||
}
|
||||
|
||||
void RandomMapTab::updateMapInfoByHost()
|
||||
@@ -461,7 +465,7 @@ TeamAlignmentsWidget::TeamAlignmentsWidget(RandomMapTab & randomMapTab):
|
||||
//int totalPlayers = randomMapTab.obtainMapGenOptions().getPlayerLimit();
|
||||
int totalPlayers = randomMapTab.obtainMapGenOptions().getMaxPlayersCount();
|
||||
assert(totalPlayers <= PlayerColor::PLAYER_LIMIT_I);
|
||||
auto settings = randomMapTab.obtainMapGenOptions().getPlayersSettings();
|
||||
auto playerSettings = randomMapTab.obtainMapGenOptions().getPlayersSettings();
|
||||
variables["totalPlayers"].Integer() = totalPlayers;
|
||||
|
||||
pos.w = variables["windowSize"]["x"].Integer() + totalPlayers * variables["cellMargin"]["x"].Integer();
|
||||
@@ -502,20 +506,20 @@ TeamAlignmentsWidget::TeamAlignmentsWidget(RandomMapTab & randomMapTab):
|
||||
// Window should have X * X columns, where X is max players allowed for current settings
|
||||
// For random player count, X is 8
|
||||
|
||||
if (totalPlayers > settings.size())
|
||||
if (totalPlayers > playerSettings.size())
|
||||
{
|
||||
auto savedPlayers = randomMapTab.obtainMapGenOptions().getSavedPlayersMap();
|
||||
for (const auto & player : savedPlayers)
|
||||
{
|
||||
if (!vstd::contains(settings, player.first))
|
||||
if (!vstd::contains(playerSettings, player.first))
|
||||
{
|
||||
settings[player.first] = player.second;
|
||||
playerSettings[player.first] = player.second;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<CMapGenOptions::CPlayerSettings> settingsVec;
|
||||
for (const auto & player : settings)
|
||||
for (const auto & player : playerSettings)
|
||||
{
|
||||
settingsVec.push_back(player.second);
|
||||
}
|
||||
@@ -569,3 +573,36 @@ TeamAlignmentsWidget::TeamAlignmentsWidget(RandomMapTab & randomMapTab):
|
||||
buttonOk = widget<CButton>("buttonOK");
|
||||
buttonCancel = widget<CButton>("buttonCancel");
|
||||
}
|
||||
|
||||
void RandomMapTab::saveOptions(const CMapGenOptions & options)
|
||||
{
|
||||
JsonNode data;
|
||||
JsonSerializer ser(nullptr, data);
|
||||
|
||||
ser.serializeStruct("lastSettings", const_cast<CMapGenOptions & >(options));
|
||||
|
||||
// FIXME: Do not nest fields
|
||||
Settings rmgSettings = persistentStorage.write["rmg"];
|
||||
rmgSettings["rmg"] = data;
|
||||
}
|
||||
|
||||
void RandomMapTab::loadOptions()
|
||||
{
|
||||
auto rmgSettings = persistentStorage["rmg"]["rmg"];
|
||||
if (!rmgSettings.Struct().empty())
|
||||
{
|
||||
mapGenOptions.reset(new CMapGenOptions());
|
||||
JsonDeserializer handler(nullptr, rmgSettings);
|
||||
handler.serializeStruct("lastSettings", *mapGenOptions);
|
||||
|
||||
// Will check template and set other options as well
|
||||
setTemplate(mapGenOptions->getMapTemplate());
|
||||
if(auto w = widget<ComboBox>("templateList"))
|
||||
{
|
||||
w->setItem(mapGenOptions->getMapTemplate());
|
||||
}
|
||||
}
|
||||
updateMapInfoByHost();
|
||||
|
||||
// TODO: Save & load difficulty?
|
||||
}
|
||||
Reference in New Issue
Block a user