Pick a TeamPlacement in Atlas
This moves the TeamPlacement selection to Atlas, so the map don't have to worry about it.
This commit is contained in:
parent
e56ebb3f46
commit
37871429dc
@ -20,17 +20,15 @@ function* GenerateMap(mapSettings)
|
||||
|
||||
yield 10;
|
||||
|
||||
const pattern = mapSettings.TeamPlacement ||
|
||||
pickRandom(["line", "radial", "randomGroup", "stronghold"]);
|
||||
const [playerIDs, playerPosition] =
|
||||
createBases(
|
||||
...playerPlacementByPattern(
|
||||
pattern,
|
||||
mapSettings.TeamPlacement,
|
||||
fractionToTiles(randFloat(0.2, 0.35)),
|
||||
fractionToTiles(randFloat(0.08, 0.1)),
|
||||
randomAngle(),
|
||||
undefined),
|
||||
g_PlayerbaseTypes[pattern].walls);
|
||||
g_PlayerbaseTypes[mapSettings.TeamPlacement].walls);
|
||||
|
||||
if (!isNomad())
|
||||
markPlayerAvoidanceArea(playerPosition, defaultPlayerBaseRadius());
|
||||
|
@ -23,17 +23,14 @@ function* GenerateMap(mapSettings)
|
||||
|
||||
if (!isNomad())
|
||||
{
|
||||
// Note: `|| pickRandom(...)` is needed for atlas.
|
||||
const pattern = mapSettings.TeamPlacement ||
|
||||
pickRandom(["line", "radial", "randomGroup", "stronghold"]);
|
||||
createBases(
|
||||
...playerPlacementByPattern(
|
||||
pattern,
|
||||
mapSettings.TeamPlacement,
|
||||
fractionToTiles(randFloat(0.2, 0.35)),
|
||||
fractionToTiles(randFloat(0.08, 0.1)),
|
||||
randomAngle(),
|
||||
undefined),
|
||||
g_PlayerbaseTypes[pattern].walls);
|
||||
g_PlayerbaseTypes[mapSettings.TeamPlacement].walls);
|
||||
}
|
||||
yield 40;
|
||||
|
||||
|
@ -708,6 +708,19 @@ void MapSidebar::OnRandomGenerate(wxCommandEvent& WXUNUSED(evt))
|
||||
|
||||
settings.setInt("Seed", wxAtoi(wxDynamicCast(FindWindow(ID_RandomSeed), wxTextCtrl)->GetValue()));
|
||||
|
||||
std::default_random_engine rngEngine{std::random_device{}()};
|
||||
|
||||
std::vector<std::string> playerPlacements;
|
||||
for (AtIter it{settings["TeamPlacements"]["item"]}; it.defined(); ++it)
|
||||
{
|
||||
playerPlacements.push_back(static_cast<const char*>(*it));
|
||||
}
|
||||
if (!playerPlacements.empty())
|
||||
{
|
||||
std::uniform_int_distribution distrib{static_cast<size_t>(0), playerPlacements.size() - 1};
|
||||
settings.set("TeamPlacement", playerPlacements[distrib(rngEngine)].c_str());
|
||||
}
|
||||
|
||||
std::string json = AtlasObject::SaveToJSON(settings);
|
||||
|
||||
wxBusyInfo busy(_("Generating map"));
|
||||
|
Loading…
Reference in New Issue
Block a user