OpenXcom  1.0
Open-source clone of the original X-Com
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
DebriefingState.h
1 /*
2  * Copyright 2010-2014 OpenXcom Developers.
3  *
4  * This file is part of OpenXcom.
5  *
6  * OpenXcom is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * OpenXcom is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with OpenXcom. If not, see <http://www.gnu.org/licenses/>.
18  */
19 #ifndef OPENXCOM_DEBRIEFINGSTATE_H
20 #define OPENXCOM_DEBRIEFINGSTATE_H
21 
22 #include "../Engine/State.h"
23 #include <string>
24 #include <vector>
25 #include <map>
26 
27 namespace OpenXcom
28 {
29 
30 class TextButton;
31 class Window;
32 class Text;
33 class TextList;
34 class BattleItem;
35 class Craft;
36 class Base;
37 class Region;
38 class Country;
39 class RuleItem;
40 
41 struct DebriefingStat { DebriefingStat(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 
49 class DebriefingState : public State
50 {
51 private:
52  Region *_region;
53  Country *_country;
54  Base *_base;
55  std::vector<DebriefingStat*> _stats;
56  TextButton *_btnOk;
57  Window *_window;
58  Text *_txtTitle, *_txtItem, *_txtQuantity, *_txtScore, *_txtRecovery, *_txtRating;
59  TextList *_lstStats, *_lstRecovery, *_lstTotal;
60  std::vector<ReequipStat> _missingItems;
61  std::map<RuleItem*, int> _rounds;
63  void addStat(const std::string &name, int quantity, int score);
65  void prepareDebriefing();
67  void recoverItems(std::vector<BattleItem*> *from, Base *base);
69  void reequipCraft(Base *base, Craft *craft, bool vehicleItemsCanBeDestroyed);
70  bool _noContainment, _manageContainment, _destroyBase;
71  int _limitsEnforced;
72 public:
74  DebriefingState(Game *game);
78  void btnOkClick(Action *action);
79 };
80 
81 }
82 
83 #endif
Represents a craft stored in a base.
Definition: Craft.h:44
Container for all the information associated with a given user action, like mouse clicks...
Definition: Action.h:34
~DebriefingState()
Cleans up the Debriefing state.
Definition: DebriefingState.cpp:240
A game state that receives user input and reacts accordingly.
Definition: State.h:44
Box with a coloured border and custom background.
Definition: Window.h:42
void btnOkClick(Action *action)
Handler for clicking the OK button.
Definition: DebriefingState.cpp:257
List of Text's split into columns.
Definition: TextList.h:42
Text string displayed on screen.
Definition: Text.h:41
DebriefingState(Game *game)
Creates the Debriefing state.
Definition: DebriefingState.cpp:74
Debriefing screen shown after a Battlescape mission that displays the results.
Definition: DebriefingState.h:49
Definition: DebriefingState.h:43
Represents a player base on the globe.
Definition: Base.h:47
Coloured button with a text label.
Definition: TextButton.h:40
Definition: DebriefingState.h:41
Represents a region of the world.
Definition: Region.h:35
The core of the game engine, manages the game's entire contents and structure.
Definition: Game.h:44
Represents a country that funds the player.
Definition: Country.h:34