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 game_startup_local_singleplayer_localsingleplayergamenewH
21 #define game_startup_local_singleplayer_localsingleplayergamenewH
22 
23 #include <memory>
24 #include <vector>
25 #include <utility>
26 
27 #include "game/startup/local/singleplayer/localsingleplayergame.h"
28 #include "maxrconfig.h"
29 #include "utility/signal/signalconnectionmanager.h"
30 #include "utility/position.h"
31 
32 class cApplication;
33 class cStaticMap;
34 class cGameSettings;
35 class cPlayerBasicData;
36 class cPlayer;
37 class cPosition;
38 class cUnitUpgrade;
39 
40 struct sLandingUnit;
41 struct sID;
42 
43 class cLocalSingleplayerGameNew : public cLocalSingleplayerGame
44 {
45 public:
46 	cLocalSingleplayerGameNew();
47 
48 	void start (cApplication& application);
49 
50 	void setGameSettings (std::shared_ptr<cGameSettings> gameSettings);
51 
52 	void setStaticMap (std::shared_ptr<cStaticMap> staticMap);
53 
54 	void setPlayerClan (int clan);
55 
56 	void setLandingUnits (std::vector<sLandingUnit> landingUnits);
57 
58 	void setUnitUpgrades (std::vector<std::pair<sID, cUnitUpgrade>> unitUpgrades);
59 
60 	void setLandingPosition (const cPosition& landingPosition);
61 
62 	cPlayerBasicData createPlayer();
63 private:
64 	cSignalConnectionManager signalConnectionManager;
65 
66 	std::shared_ptr<cStaticMap> staticMap;
67 	std::shared_ptr<cGameSettings> gameSettings;
68 
69 	int playerClan;
70 
71 	std::vector<sLandingUnit> landingUnits;
72 	std::vector<std::pair<sID, cUnitUpgrade>> unitUpgrades;
73 	cPosition landingPosition;
74 };
75 
76 #endif // game_startup_local_singleplayer_localsingleplayergamenewH
77