OpenXcom  1.0
Open-source clone of the original X-Com
DebriefingState.h
1 #pragma once
2 /*
3  * Copyright 2010-2016 OpenXcom Developers.
4  *
5  * This file is part of OpenXcom.
6  *
7  * OpenXcom is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * OpenXcom is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with OpenXcom. If not, see <http://www.gnu.org/licenses/>.
19  */
20 #include "../Engine/State.h"
21 #include <string>
22 #include <vector>
23 #include <map>
24 #include "../Savegame/SavedGame.h"
25 
26 namespace OpenXcom
27 {
28 
29 class TextButton;
30 class Window;
31 class Text;
32 class TextList;
33 class BattleItem;
34 class Craft;
35 class Base;
36 class Region;
37 class Country;
38 class RuleItem;
39 class BattleUnit;
40 
41 struct DebriefingStat { DebriefingStat(const std::string &_item, bool recovery) : item(_item), qty(0), score(0), recovery(recovery) {}; std::string item; int qty; int score; bool recovery; };
42 
43 struct ReequipStat { std::string item; int qty; std::wstring craft; };
44 
45 struct RecoveryItem { std::string name; int value; };
46 
51 class DebriefingState : public State
52 {
53 private:
54  Region *_region;
55  Country *_country;
56  Base *_base;
57  std::vector<DebriefingStat*> _stats;
58  TextButton *_btnOk;
59  Window *_window;
60  Text *_txtTitle, *_txtItem, *_txtQuantity, *_txtScore, *_txtRecovery, *_txtRating;
61  TextList *_lstStats, *_lstRecovery, *_lstTotal;
62  std::vector<ReequipStat> _missingItems;
63  std::map<RuleItem*, int> _rounds;
64  std::map<int, RecoveryItem*> _recoveryStats;
65  bool _positiveScore, _noContainment, _manageContainment, _destroyBase;
66  int _limitsEnforced;
67  MissionStatistics *_missionStatistics;
68  std::vector<Soldier*> _soldiersCommended, _deadSoldiersCommended;
70  void addStat(const std::string &name, int quantity, int score);
72  void prepareDebriefing();
74  void recoverItems(std::vector<BattleItem*> *from, Base *base);
76  void recoverAlien(BattleUnit *from, Base *base);
78  void reequipCraft(Base *base, Craft *craft, bool vehicleItemsCanBeDestroyed);
79 public:
85  void btnOkClick(Action *action);
86  void init();
87 };
88 
89 }
Represents a craft stored in a base.
Definition: Craft.h:45
Container for all the information associated with a given user action, like mouse clicks...
Definition: Action.h:32
~DebriefingState()
Cleans up the Debriefing state.
Definition: DebriefingState.cpp:420
A game state that receives user input and reacts accordingly.
Definition: State.h:43
Box with a coloured border and custom background.
Definition: Window.h:40
void btnOkClick(Action *action)
Handler for clicking the OK button.
Definition: DebriefingState.cpp:460
List of Text&#39;s split into columns.
Definition: TextList.h:40
Text string displayed on screen.
Definition: Text.h:40
Debriefing screen shown after a Battlescape mission that displays the results.
Definition: DebriefingState.h:51
Container for mission statistics.
Definition: MissionStatistics.h:32
Definition: DebriefingState.h:43
Represents a player base on the globe.
Definition: Base.h:45
Definition: DebriefingState.h:45
Coloured button with a text label.
Definition: TextButton.h:38
Definition: DebriefingState.h:41
void init()
Initializes the state.
Definition: DebriefingState.cpp:438
Represents a region of the world.
Definition: Region.h:33
Represents a country that funds the player.
Definition: Country.h:33
Represents a moving unit in the battlescape, player controlled or AI controlled it holds info about i...
Definition: BattleUnit.h:59
DebriefingState()
Creates the Debriefing state.
Definition: DebriefingState.cpp:75
Definition: BaseInfoState.cpp:40