1 /*************************************************************************** 2 * Mechanized Assault and Exploration Reloaded Projectfile * 3 * * 4 * This program is free software; you can redistribute it and/or modify * 5 * it under the terms of the GNU General Public License as published by * 6 * the Free Software Foundation; either version 2 of the License, or * 7 * (at your option) any later version. * 8 * * 9 * This program is distributed in the hope that it will be useful, * 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 12 * GNU General Public License for more details. * 13 * * 14 * You should have received a copy of the GNU General Public License * 15 * along with this program; if not, write to the * 16 * Free Software Foundation, Inc., * 17 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * 18 ***************************************************************************/ 19 20 #ifndef ui_graphical_menu_windows_windowgamesettings_gamesettingsH 21 #define ui_graphical_menu_windows_windowgamesettings_gamesettingsH 22 23 #include <string> 24 #include <chrono> 25 26 #include "utility/signal/signal.h" 27 28 class cNetMessage; 29 30 enum class eGameSettingsResourceAmount 31 { 32 Limited, 33 Normal, 34 High, 35 TooMuch 36 }; 37 38 enum class eGameSettingsResourceDensity 39 { 40 Sparse, 41 Normal, 42 Dense, 43 TooMuch 44 }; 45 46 enum class eGameSettingsBridgeheadType 47 { 48 Mobile, 49 Definite, 50 }; 51 52 enum class eGameSettingsGameType 53 { 54 Simultaneous, 55 Turns, 56 HotSeat 57 }; 58 59 enum class eGameSettingsVictoryCondition 60 { 61 Turns, 62 Points, 63 Death 64 }; 65 66 std::string gameSettingsResourceAmountToString (eGameSettingsResourceAmount amount, bool translated = false); 67 eGameSettingsResourceAmount gameSettingsResourceAmountFromString (const std::string& string); 68 69 std::string gameSettingsResourceDensityToString (eGameSettingsResourceDensity density, bool translated = false); 70 eGameSettingsResourceDensity gameSettingsResourceDensityFromString (const std::string& string); 71 72 std::string gameSettingsBridgeheadTypeToString (eGameSettingsBridgeheadType type, bool translated = false); 73 eGameSettingsBridgeheadType gameSettingsBridgeheadTypeFromString (const std::string& string); 74 75 std::string gameSettingsGameTypeToString (eGameSettingsGameType type, bool translated = false); 76 eGameSettingsGameType gameSettingsGameTypeString (const std::string& string); 77 78 std::string gameSettingsVictoryConditionToString (eGameSettingsVictoryCondition condition, bool translated = false); 79 eGameSettingsVictoryCondition gameSettingsVictoryConditionFromString (const std::string& string); 80 81 class cGameSettings 82 { 83 public: 84 static const int defaultCreditsNone = 0; 85 static const int defaultCreditsLow = 50; 86 static const int defaultCreditsLimited = 100; 87 static const int defaultCreditsNormal = 150; 88 static const int defaultCreditsHigh = 200; 89 static const int defaultCreditsMore = 250; 90 91 static const int defaultVictoryTurnsOption0 = 100; 92 static const int defaultVictoryTurnsOption1 = 200; 93 static const int defaultVictoryTurnsOption2 = 400; 94 95 static const int defaultVictoryPointsOption0 = 100; 96 static const int defaultVictoryPointsOption1 = 200; 97 static const int defaultVictoryPointsOption2 = 400; 98 99 static const std::chrono::seconds defaultTurnLimitOption0; 100 static const std::chrono::seconds defaultTurnLimitOption1; 101 static const std::chrono::seconds defaultTurnLimitOption2; 102 static const std::chrono::seconds defaultTurnLimitOption3; 103 static const std::chrono::seconds defaultTurnLimitOption4; 104 static const std::chrono::seconds defaultTurnLimitOption5; 105 106 static const std::chrono::seconds defaultEndTurnDeadlineOption0; 107 static const std::chrono::seconds defaultEndTurnDeadlineOption1; 108 static const std::chrono::seconds defaultEndTurnDeadlineOption2; 109 static const std::chrono::seconds defaultEndTurnDeadlineOption3; 110 static const std::chrono::seconds defaultEndTurnDeadlineOption4; 111 static const std::chrono::seconds defaultEndTurnDeadlineOption5; 112 113 cGameSettings(); 114 cGameSettings (const cGameSettings& other); 115 116 cGameSettings& operator= (const cGameSettings& other); 117 118 eGameSettingsResourceAmount getMetalAmount() const; 119 void setMetalAmount (eGameSettingsResourceAmount value); 120 121 eGameSettingsResourceAmount getOilAmount() const; 122 void setOilAmount (eGameSettingsResourceAmount value); 123 124 eGameSettingsResourceAmount getGoldAmount() const; 125 void setGoldAmount (eGameSettingsResourceAmount value); 126 127 eGameSettingsResourceDensity getResourceDensity() const; 128 void setResourceDensity (eGameSettingsResourceDensity value); 129 130 eGameSettingsBridgeheadType getBridgeheadType() const; 131 void setBridgeheadType (eGameSettingsBridgeheadType value); 132 133 eGameSettingsGameType getGameType() const; 134 void setGameType (eGameSettingsGameType value); 135 136 bool getClansEnabled() const; 137 void setClansEnabled (bool value); 138 139 unsigned int getStartCredits() const; 140 void setStartCredits (unsigned int value); 141 142 eGameSettingsVictoryCondition getVictoryCondition() const; 143 void setVictoryCondition (eGameSettingsVictoryCondition value); 144 145 unsigned int getVictoryTurns() const; 146 void setVictoryTurns (unsigned int value); 147 148 unsigned int getVictoryPoints() const; 149 void setVictoryPoints (unsigned int value); 150 151 const std::chrono::seconds& getTurnEndDeadline() const; 152 void setTurnEndDeadline (const std::chrono::seconds& value); 153 154 bool isTurnEndDeadlineActive() const; 155 void setTurnEndDeadlineActive (bool value); 156 157 const std::chrono::seconds& getTurnLimit() const; 158 void setTurnLimit (const std::chrono::seconds& value); 159 160 bool isTurnLimitActive() const; 161 void setTurnLimitActive (bool value); 162 163 void pushInto (cNetMessage& message) const; 164 void popFrom (cNetMessage& message); 165 166 mutable cSignal<void ()> metalAmountChanged; 167 mutable cSignal<void ()> oilAmountChanged; 168 mutable cSignal<void ()> goldAmountChanged; 169 170 mutable cSignal<void ()> resourceDensityChanged; 171 172 mutable cSignal<void ()> bridgeheadTypeChanged; 173 174 mutable cSignal<void ()> gameTypeChanged; 175 176 mutable cSignal<void ()> clansEnabledChanged; 177 178 mutable cSignal<void ()> startCreditsChanged; 179 180 mutable cSignal<void ()> victoryConditionTypeChanged; 181 mutable cSignal<void ()> victoryTurnsChanged; 182 mutable cSignal<void ()> victoryPointsChanged; 183 184 mutable cSignal<void ()> turnEndDeadlineChanged; 185 mutable cSignal<void ()> turnEndDeadlineActiveChanged; 186 187 mutable cSignal<void ()> turnLimitChanged; 188 mutable cSignal<void ()> turnLimitActiveChanged; 189 private: 190 eGameSettingsResourceAmount metalAmount; 191 eGameSettingsResourceAmount oilAmount; 192 eGameSettingsResourceAmount goldAmount; 193 194 eGameSettingsResourceDensity resourceDensity; 195 196 eGameSettingsBridgeheadType bridgeheadType; 197 198 eGameSettingsGameType gameType; 199 200 bool clansEnabled; 201 202 unsigned int startCredits; 203 204 eGameSettingsVictoryCondition victoryConditionType; 205 unsigned int victoryTurns; 206 unsigned int victoryPoints; 207 208 std::chrono::seconds turnEndDeadline; 209 bool turnEndDeadlineActive; 210 211 std::chrono::seconds turnLimit; 212 bool turnLimitActive; 213 }; 214 215 #endif // ui_graphical_menu_windows_windowgamesettings_gamesettingsH 216