OpenXcom  1.0
Open-source clone of the original X-Com
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
TransferItemsState.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_TRANSFERITEMSSTATE_H
20 #define OPENXCOM_TRANSFERITEMSSTATE_H
21 
22 #include "../Engine/State.h"
23 #include "../Savegame/Transfer.h"
24 #include <vector>
25 #include <string>
26 
27 namespace OpenXcom
28 {
29 
30 class TextButton;
31 class Window;
32 class Text;
33 class TextList;
34 class Timer;
35 class Base;
36 class Soldier;
37 class Craft;
38 
43 class TransferItemsState : public State
44 {
45 private:
46  Base *_baseFrom, *_baseTo;
47  TextButton *_btnOk, *_btnCancel;
48  Window *_window;
49  Text *_txtTitle, *_txtItem, *_txtQuantity, *_txtAmountTransfer, *_txtAmountDestination;
50  TextList *_lstItems;
51  std::vector<int> _baseQty, _transferQty;
52  std::vector<Soldier*> _soldiers;
53  std::vector<Craft*> _crafts;
54  std::vector<std::string> _items;
55  size_t _sel, _itemOffset;
56  int _total, _pQty, _cQty, _aQty;
57  double _iQty;
58  int _hasSci, _hasEng;
59  double _distance;
60  Timer *_timerInc, *_timerDec;
62  int getCost() const;
64  int getQuantity() const;
66  double getDistance() const;
68  enum TransferType getType(size_t selected) const;
70  size_t getItemIndex(size_t selected) const;
71 public:
73  TransferItemsState(Game *game, Base *baseFrom, Base *baseTo);
77  void think();
79  void btnOkClick(Action *action);
81  void completeTransfer();
83  void btnCancelClick(Action *action);
85  void lstItemsLeftArrowPress(Action *action);
87  void lstItemsLeftArrowRelease(Action *action);
89  void lstItemsLeftArrowClick(Action *action);
91  void lstItemsRightArrowPress(Action *action);
93  void lstItemsRightArrowRelease(Action *action);
95  void lstItemsRightArrowClick(Action *action);
97  void lstItemsMousePress(Action *action);
99  void increase();
101  void increaseByValue(int change);
103  void decrease();
105  void decreaseByValue(int change);
107  void updateItemStrings();
109  int getTotal() const;
110 };
111 
112 }
113 
114 #endif
Container for all the information associated with a given user action, like mouse clicks...
Definition: Action.h:34
void updateItemStrings()
Updates the quantity-strings of the selected item.
Definition: TransferItemsState.cpp:703
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 lstItemsMousePress(Action *action)
Handler for pressing-down a mouse-button in the list.
Definition: TransferItemsState.cpp:457
Timer used to run code in fixed intervals.
Definition: Timer.h:37
List of Text's split into columns.
Definition: TextList.h:42
Text string displayed on screen.
Definition: Text.h:41
void lstItemsLeftArrowPress(Action *action)
Handler for pressing an Increase arrow in the list.
Definition: TransferItemsState.cpp:381
void lstItemsLeftArrowClick(Action *action)
Handler for clicking an Increase arrow in the list.
Definition: TransferItemsState.cpp:404
void increase()
Increases the quantity of an item by one.
Definition: TransferItemsState.cpp:532
void completeTransfer()
Completes the transfer between bases.
Definition: TransferItemsState.cpp:244
void btnCancelClick(Action *action)
Handler for clicking the Cancel button.
Definition: TransferItemsState.cpp:371
void lstItemsLeftArrowRelease(Action *action)
Handler for releasing an Increase arrow in the list.
Definition: TransferItemsState.cpp:391
void decrease()
Decreases the quantity of an item by one.
Definition: TransferItemsState.cpp:650
void think()
Runs the timers.
Definition: TransferItemsState.cpp:224
void lstItemsRightArrowPress(Action *action)
Handler for pressing a Decrease arrow in the list.
Definition: TransferItemsState.cpp:419
Represents a player base on the globe.
Definition: Base.h:47
TransferItemsState(Game *game, Base *baseFrom, Base *baseTo)
Creates the Transfer Items state.
Definition: TransferItemsState.cpp:58
Coloured button with a text label.
Definition: TextButton.h:40
Transfer screen that lets the player pick what items to transfer between bases.
Definition: TransferItemsState.h:43
~TransferItemsState()
Cleans up the Transfer Items state.
Definition: TransferItemsState.cpp:215
The core of the game engine, manages the game's entire contents and structure.
Definition: Game.h:44
void increaseByValue(int change)
Increases the quantity of an item by the given value.
Definition: TransferItemsState.cpp:543
void btnOkClick(Action *action)
Handler for clicking the OK button.
Definition: TransferItemsState.cpp:236
void lstItemsRightArrowRelease(Action *action)
Handler for releasing a Decrease arrow in the list.
Definition: TransferItemsState.cpp:429
void decreaseByValue(int change)
Decreases the quantity of an item by the given value.
Definition: TransferItemsState.cpp:661
int getTotal() const
Gets the total of the transfer.
Definition: TransferItemsState.cpp:732
void lstItemsRightArrowClick(Action *action)
Handler for clicking a Decrease arrow in the list.
Definition: TransferItemsState.cpp:442