1 #ifndef _CommonParams_h_ 2 #define _CommonParams_h_ 3 4 5 #include <map> 6 #include <memory> 7 #include <set> 8 #include <string> 9 #include <vector> 10 11 #include "EnumsFwd.h" 12 13 #include "../util/Export.h" 14 15 16 namespace Condition { 17 struct Condition; 18 } 19 namespace Effect { 20 class EffectsGroup; 21 } 22 namespace ValueRef { 23 template <typename T> 24 struct ValueRef; 25 } 26 27 template <typename T> 28 using ConsumptionMap = std::map<T, std::pair<std::unique_ptr<ValueRef::ValueRef<double>>, 29 std::unique_ptr<Condition::Condition>>>; 30 31 //! Common parameters for ShipPart, ShipHull, and BuildingType constructors. 32 //! 33 //! Used as temporary storage for parsing to reduce number of sub-items parsed 34 //! per item. 35 struct FO_COMMON_API CommonParams { 36 CommonParams(); 37 CommonParams(std::unique_ptr<ValueRef::ValueRef<double>>&& production_cost_, 38 std::unique_ptr<ValueRef::ValueRef<int>>&& production_time_, 39 bool producible_, 40 const std::set<std::string>& tags_, 41 std::unique_ptr<Condition::Condition>&& location_, 42 std::vector<std::unique_ptr<Effect::EffectsGroup>>&& effects_, 43 ConsumptionMap<MeterType>&& production_meter_consumption_, 44 ConsumptionMap<std::string>&& production_special_consumption_, 45 std::unique_ptr<Condition::Condition>&& enqueue_location_); 46 ~CommonParams(); 47 48 std::unique_ptr<ValueRef::ValueRef<double>> production_cost; 49 std::unique_ptr<ValueRef::ValueRef<int>> production_time; 50 bool producible = true; 51 std::set<std::string> tags; 52 ConsumptionMap<MeterType> production_meter_consumption; 53 ConsumptionMap<std::string> production_special_consumption; 54 std::unique_ptr<Condition::Condition> location; 55 std::unique_ptr<Condition::Condition> enqueue_location; 56 std::vector<std::unique_ptr<Effect::EffectsGroup>> effects; 57 }; 58 59 struct MoreCommonParams { MoreCommonParamsMoreCommonParams60 MoreCommonParams() : 61 name(), 62 description(), 63 exclusions() 64 {} MoreCommonParamsMoreCommonParams65 MoreCommonParams(const std::string& name_, const std::string& description_, 66 const std::set<std::string>& exclusions_) : 67 name(name_), 68 description(description_), 69 exclusions(exclusions_) 70 {} 71 std::string name; 72 std::string description; 73 std::set<std::string> exclusions; 74 }; 75 76 #endif // _CommonParams_h_ 77