diff --git a/model/Rocket.cpp b/model/Rocket.cpp index 64d39be..f81cd5d 100644 --- a/model/Rocket.cpp +++ b/model/Rocket.cpp @@ -7,6 +7,10 @@ namespace model Rocket::Rocket() { + // A rocket needs at least one stage. Upon creation, we need to create at least one stage + currentStage.reset(new Stage("sustainer")); + stages.push_back(currentStage); + } @@ -39,7 +43,7 @@ double Rocket::getMass(double t) double totalMass = 0.0; for(const auto& stage : stages) { - totalMass += stage.second->getMass(t); + totalMass += stage->getMass(t); } return totalMass; } diff --git a/model/Rocket.h b/model/Rocket.h index 9949583..4078924 100644 --- a/model/Rocket.h +++ b/model/Rocket.h @@ -4,7 +4,7 @@ /// \cond // C headers // C++ headers -#include +#include #include #include #include // std::move @@ -57,7 +57,7 @@ public: * @param t current simulation time * @return mass in kg */ - virtual double getMass(double t) override; + double getMass(double t) override; /** * @brief setMotorModel @@ -84,8 +84,8 @@ public: */ void setName(const std::string& n) { name = n; } - virtual double getDragCoefficient() override { return 1.0; } - virtual void setDragCoefficient(double d) override { } + double getDragCoefficient() override { return 1.0; } + void setDragCoefficient(double d) override { } void setMass(double m) { } std::shared_ptr getCurrentStage() { return currentStage; } @@ -94,7 +94,7 @@ private: std::string name; /// Rocket name - std::map> stages; + std::vector> stages; std::shared_ptr currentStage; //model::MotorModel mm; /// Current Motor Model diff --git a/model/Stage.cpp b/model/Stage.cpp index 6d17794..af7c593 100644 --- a/model/Stage.cpp +++ b/model/Stage.cpp @@ -11,7 +11,8 @@ namespace model { -Stage::Stage() +Stage::Stage(const std::string& inName) + : name(inName) {} Stage::~Stage() diff --git a/model/Stage.h b/model/Stage.h index f215674..bf61a40 100644 --- a/model/Stage.h +++ b/model/Stage.h @@ -21,7 +21,7 @@ namespace model class Stage : public Propagatable { public: - Stage(); + Stage(const std::string& inName); virtual ~Stage(); /** @@ -72,4 +72,4 @@ private: } // namespace model -#endif // SIM_STAGE_H \ No newline at end of file +#endif // SIM_STAGE_H