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 struct UnitStats;
41 
42 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; };
43 
44 struct ReequipStat { std::string item; int qty; std::wstring craft; };
45 
46 struct RecoveryItem { std::string name; int value; };
47 
52 class DebriefingState : public State
53 {
54 private:
55  typedef std::pair<std::wstring, UnitStats> SoldierStatsEntry;
56 
57  Region *_region;
58  Country *_country;
59  Base *_base;
60  std::vector<DebriefingStat*> _stats;
61  std::vector<SoldierStatsEntry> _soldierStats;
62  TextButton *_btnOk, *_btnStats;
63  Window *_window;
64  Text *_txtTitle, *_txtItem, *_txtQuantity, *_txtScore, *_txtRecovery, *_txtRating,
65  *_txtSoldier, *_txtTU, *_txtStamina, *_txtHealth, *_txtBravery, *_txtReactions,
66  *_txtFiring, *_txtThrowing, *_txtMelee, *_txtStrength, *_txtPsiStrength, *_txtPsiSkill;
67  TextList *_lstStats, *_lstRecovery, *_lstTotal, *_lstSoldierStats;
68  std::string _currentTooltip;
69  Text *_txtTooltip;
70  std::vector<ReequipStat> _missingItems;
71  std::map<RuleItem*, int> _rounds;
72  std::map<int, RecoveryItem*> _recoveryStats;
73  bool _positiveScore, _noContainment, _manageContainment, _destroyBase;
74  int _limitsEnforced;
75  MissionStatistics *_missionStatistics;
76  std::vector<Soldier*> _soldiersCommended, _deadSoldiersCommended;
78  void addStat(const std::string &name, int quantity, int score);
80  void prepareDebriefing();
82  void recoverItems(std::vector<BattleItem*> *from, Base *base);
84  void recoverAlien(BattleUnit *from, Base *base);
86  void reequipCraft(Base *base, Craft *craft, bool vehicleItemsCanBeDestroyed);
88  bool _showSoldierStats;
90  void applyVisibility();
92  std::wstring makeSoldierString(int stat);
93 public:
97  ~DebriefingState();
99  void btnOkClick(Action *action);
100  void init();
102  void btnStatsClick(Action *action);
104  void txtTooltipIn(Action *action);
106  void txtTooltipOut(Action *action);
107 };
108 
109 }
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
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
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:52
Container for mission statistics.
Definition: MissionStatistics.h:32
Definition: DebriefingState.h:44
Represents a player base on the globe.
Definition: Base.h:45
Definition: DebriefingState.h:46
Coloured button with a text label.
Definition: TextButton.h:38
Definition: DebriefingState.h:42
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
Definition: BaseInfoState.cpp:40