From cf28d610356f531d2751dbb2188904edec35e644 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Thu, 2 Feb 2023 18:42:08 -0700 Subject: [PATCH] Scenario editor initialize new town bounds/entrances --- src/scenario/scenario.hpp | 1 + src/scenario/town.cpp | 2 ++ src/scenedit/scen.townout.cpp | 6 +++--- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/scenario/scenario.hpp b/src/scenario/scenario.hpp index 90608358..2e7d8029 100644 --- a/src/scenario/scenario.hpp +++ b/src/scenario/scenario.hpp @@ -94,6 +94,7 @@ public: std::vector towns; void addTown(size_t dim) { towns.push_back(new cTown(*this, dim)); + towns.back()->init_start(); } void import_legacy(legacy::scenario_data_type& old); diff --git a/src/scenario/town.cpp b/src/scenario/town.cpp index a400db92..a02e8a44 100644 --- a/src/scenario/town.cpp +++ b/src/scenario/town.cpp @@ -81,10 +81,12 @@ cTown::cTown(cScenario& scenario, size_t dim) : cArea(dim), scenario(&scenario), town_chop_key = -1; for(short i = 0; i < wandering.size(); i++) { wandering[i] = d_wan; + // x of 100 indicates an unset wandering monster location wandering_locs[i].x = 100; } lighting_type = LIGHT_NORMAL; for(short i = 0; i < 4; i++) { + // x of 100 indicates an unset starting location start_locs[i].x = 100; exits[i].spec = -1; exits[i].x = -1; diff --git a/src/scenedit/scen.townout.cpp b/src/scenedit/scen.townout.cpp index fc901f54..ffef9103 100644 --- a/src/scenedit/scen.townout.cpp +++ b/src/scenedit/scen.townout.cpp @@ -1324,9 +1324,9 @@ bool new_town() { std::string size = dynamic_cast(new_dlg->getControl("size")).getSelected(); std::string preset = dynamic_cast(new_dlg->getControl("preset")).getSelected(); - if(size == "lg") scenario.towns.push_back(new cTown(scenario, AREA_LARGE)); - else if(size == "med") scenario.towns.push_back(new cTown(scenario, AREA_MEDIUM)); - else if(size == "sm") scenario.towns.push_back(new cTown(scenario, AREA_SMALL)); + if(size == "lg") scenario.addTown(AREA_LARGE); + else if(size == "med") scenario.addTown(AREA_MEDIUM); + else if(size == "sm") scenario.addTown(AREA_SMALL); set_current_town(scenario.towns.size() - 1); town->name = new_dlg->getControl("name").getText().substr(0,30);