From 47d522c0f676d4c5b453671ac50328c5fb1fefa5 Mon Sep 17 00:00:00 2001 From: SupSuper Date: Wed, 5 Dec 2018 18:52:07 +0000 Subject: [PATCH] Add "transferTime" property to ruleset soldiers. --- src/Basescape/PurchaseState.cpp | 5 ++++- src/Mod/RuleSoldier.cpp | 13 ++++++++++++- src/Mod/RuleSoldier.h | 4 +++- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/Basescape/PurchaseState.cpp b/src/Basescape/PurchaseState.cpp index de15edf9f9..06af8a494c 100644 --- a/src/Basescape/PurchaseState.cpp +++ b/src/Basescape/PurchaseState.cpp @@ -338,7 +338,10 @@ void PurchaseState::btnOkClick(Action *) for (int s = 0; s < i->amount; s++) { RuleSoldier *rule = (RuleSoldier*)i->rule; - t = new Transfer(_game->getMod()->getPersonnelTime()); + int time = rule->getTransferTime(); + if (time == 0) + time = _game->getMod()->getPersonnelTime(); + t = new Transfer(time); t->setSoldier(_game->getMod()->genSoldier(_game->getSavedGame(), rule->getType())); _base->getTransfers()->push_back(t); } diff --git a/src/Mod/RuleSoldier.cpp b/src/Mod/RuleSoldier.cpp index 4ee667c9a5..6f9ee4fc65 100644 --- a/src/Mod/RuleSoldier.cpp +++ b/src/Mod/RuleSoldier.cpp @@ -29,7 +29,7 @@ namespace OpenXcom * type of soldier. * @param type String defining the type. */ -RuleSoldier::RuleSoldier(const std::string &type) : _type(type), _costBuy(0), _costSalary(0), _standHeight(0), _kneelHeight(0), _floatHeight(0), _femaleFrequency(50), _value(20) +RuleSoldier::RuleSoldier(const std::string &type) : _type(type), _costBuy(0), _costSalary(0), _standHeight(0), _kneelHeight(0), _floatHeight(0), _femaleFrequency(50), _value(20), _transferTime(0) { } @@ -67,6 +67,7 @@ void RuleSoldier::load(const YAML::Node &node, Mod *mod) _floatHeight = node["floatHeight"].as(_floatHeight); _femaleFrequency = node["femaleFrequency"].as(_femaleFrequency); _value = node["value"].as(_value); + _transferTime = node["transferTime"].as(_transferTime); if (node["deathMale"]) { @@ -283,4 +284,14 @@ int RuleSoldier::getValue() const return _value; } +/** + * Gets the amount of time this item + * takes to arrive at a base. + * @return The time in hours. + */ +int RuleSoldier::getTransferTime() const +{ + return _transferTime; +} + } diff --git a/src/Mod/RuleSoldier.h b/src/Mod/RuleSoldier.h index 0cb2adc706..0ae7bf2308 100644 --- a/src/Mod/RuleSoldier.h +++ b/src/Mod/RuleSoldier.h @@ -40,7 +40,7 @@ class RuleSoldier UnitStats _minStats, _maxStats, _statCaps; std::string _armor; int _costBuy, _costSalary, _standHeight, _kneelHeight, _floatHeight; - int _femaleFrequency, _value; + int _femaleFrequency, _value, _transferTime; std::vector _deathSoundMale, _deathSoundFemale; std::vector _names; @@ -84,6 +84,8 @@ class RuleSoldier const std::vector &getNames() const; /// Gets the value - for score calculation. int getValue() const; + /// Gets the soldier's transfer time. + int getTransferTime() const; }; }