From 0b9f00a4a526d4fcc61ba98316765638692f07ec Mon Sep 17 00:00:00 2001 From: Alexander Hunt Date: Thu, 6 Mar 2025 16:15:17 -0500 Subject: [PATCH] Replaced MapViewState colony ship related member variable and logic with new ColonyShip Class --- appOPHD/States/MapViewState.cpp | 17 +++++------------ appOPHD/States/MapViewState.h | 5 ----- appOPHD/States/MapViewStateIO.cpp | 8 +++----- appOPHD/States/MapViewStateTurn.cpp | 7 +++---- appOPHD/States/MapViewStateUi.cpp | 5 +++-- 5 files changed, 14 insertions(+), 28 deletions(-) diff --git a/appOPHD/States/MapViewState.cpp b/appOPHD/States/MapViewState.cpp index 2e3d1b412..0a0dff9af 100644 --- a/appOPHD/States/MapViewState.cpp +++ b/appOPHD/States/MapViewState.cpp @@ -5,6 +5,7 @@ #include "MainMenuState.h" #include "MainReportsUiState.h" #include "GameState.h" +#include "ColonyShip.h" #include "Route.h" #include "../Constants/Strings.h" @@ -224,7 +225,6 @@ MapViewState::MapViewState(GameState& gameState, const Planet::Attributes& plane mColonyShip{gameState.colonyShip()} { setMeanSolarDistance(mPlanetAttributes.meanSolarDistance); - setPopulationLevel(PopulationLevel::Large); ccLocation() = CcNotPlaced; NAS2D::Utility::get().windowResized().connect({this, &MapViewState::onWindowResized}); } @@ -250,13 +250,6 @@ MapViewState::~MapViewState() } -void MapViewState::setPopulationLevel(PopulationLevel popLevel) -{ - mLandersColonist = static_cast(popLevel); - mLandersCargo = 2; ///\todo This should be set based on difficulty level. -} - - /** * Initialize values, the UI and set up event handling. */ @@ -888,8 +881,8 @@ void MapViewState::placeStructure(Tile& tile) s.deploySignal().connect({this, &MapViewState::onDeployColonistLander}); NAS2D::Utility::get().addStructure(s, tile); - --mLandersColonist; - if (mLandersColonist == 0) + mColonyShip.onDeployColonistLander(); + if (mColonyShip.colonistLanders() == 0) { clearMode(); resetUi(); @@ -904,8 +897,8 @@ void MapViewState::placeStructure(Tile& tile) cargoLander.deploySignal().connect({this, &MapViewState::onDeployCargoLander}); NAS2D::Utility::get().addStructure(cargoLander, tile); - --mLandersCargo; - if (mLandersCargo == 0) + mColonyShip.onDeployCargoLander(); + if (mColonyShip.cargoLanders() == 0) { clearMode(); resetUi(); diff --git a/appOPHD/States/MapViewState.h b/appOPHD/States/MapViewState.h index 42ea31b18..1c7cd42a4 100644 --- a/appOPHD/States/MapViewState.h +++ b/appOPHD/States/MapViewState.h @@ -113,8 +113,6 @@ class MapViewState : public Wrapper MapViewState(GameState& gameState, const Planet::Attributes& planetAttributes, Difficulty selectedDifficulty); ~MapViewState() override; - void setPopulationLevel(PopulationLevel popLevel); - ReportsUiSignal::Source& showReportsUi() { return mReportsUiSignal; } QuitSignal::Source& quit() { return mQuitSignal; } MapChangedSignal::Source& mapChanged() { return mMapChangedSignal; } @@ -313,9 +311,6 @@ class MapViewState : public Wrapper Morale mMorale; - int mLandersColonist = 0; - int mLandersCargo = 0; - int mResidentialCapacity = 0; // POOLS diff --git a/appOPHD/States/MapViewStateIO.cpp b/appOPHD/States/MapViewStateIO.cpp index ce03959c8..4de4d2657 100644 --- a/appOPHD/States/MapViewStateIO.cpp +++ b/appOPHD/States/MapViewStateIO.cpp @@ -5,6 +5,7 @@ // ================================================================================== #include "MapViewState.h" +#include "ColonyShip.h" #include "MapViewStateHelper.h" @@ -168,8 +169,8 @@ void MapViewState::save(const std::string& filePath) {{ {"morale", mMorale.currentMorale()}, {"prev_morale", mMorale.previousMorale()}, - {"colonist_landers", mLandersColonist}, - {"cargo_landers", mLandersCargo}, + {"colonist_landers", mColonyShip.colonistLanders()}, + {"cargo_landers", mColonyShip.cargoLanders()}, {"turn_number_of_landing", mTurnNumberOfLanding}, {"children", population.child}, {"students", population.student}, @@ -572,9 +573,6 @@ void MapViewState::readPopulation(NAS2D::Xml::XmlElement* element) const auto dictionary = NAS2D::attributesToDictionary(*element); - mLandersColonist = dictionary.get("colonist_landers"); - mLandersCargo = dictionary.get("cargo_landers"); - mMorale = Morale(dictionary.get("morale"), dictionary.get("prev_morale")); mTurnNumberOfLanding = dictionary.get("turn_number_of_landing", constants::ColonyShipOrbitTime); diff --git a/appOPHD/States/MapViewStateTurn.cpp b/appOPHD/States/MapViewStateTurn.cpp index 501062d10..5415d728d 100644 --- a/appOPHD/States/MapViewStateTurn.cpp +++ b/appOPHD/States/MapViewStateTurn.cpp @@ -780,9 +780,6 @@ void MapViewState::nextTurn() updateResearch(); - populateRobotMenu(); - populateStructureMenu(); - if (!mColonyShip.crashed()) { mColonyShip.onTurn(); @@ -794,12 +791,14 @@ void MapViewState::nextTurn() mMineOperationsWindow.updateTruckAvailability(); // Check for Game Over conditions - if (mPopulation.getPopulations().size() <= 0 && mLandersColonist == 0) + if (mPopulation.getPopulations().size() <= 0 && mColonyShip.colonistLanders() == 0) { hideUi(); mGameOverDialog.show(); } + populateRobotMenu(); + populateStructureMenu(); mMorale.commitMoraleChanges(); diff --git a/appOPHD/States/MapViewStateUi.cpp b/appOPHD/States/MapViewStateUi.cpp index bdd35e28e..511d7f6f8 100644 --- a/appOPHD/States/MapViewStateUi.cpp +++ b/appOPHD/States/MapViewStateUi.cpp @@ -5,6 +5,7 @@ // ================================================================================== #include "MapViewState.h" +#include "ColonyShip.h" #include "MapViewStateHelper.h" #include "MainMenuState.h" @@ -335,8 +336,8 @@ void MapViewState::populateStructureMenu() fillList(mConnections, mStructureTracker.surfaceTubes()); // Special case code, not thrilled with this - if (mLandersColonist > 0) { mStructures.addItem({constants::ColonistLander, 2, StructureID::SID_COLONIST_LANDER}); } - if (mLandersCargo > 0) { mStructures.addItem({constants::CargoLander, 1, StructureID::SID_CARGO_LANDER}); } + if (mColonyShip.colonistLanders() > 0) { mStructures.addItem({constants::ColonistLander, 2, StructureID::SID_COLONIST_LANDER}); } + if (mColonyShip.cargoLanders() > 0) { mStructures.addItem({constants::CargoLander, 1, StructureID::SID_CARGO_LANDER}); } } else {