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_PURCHASESTATE_H 20 #define OPENXCOM_PURCHASESTATE_H 21 22 #include "../Engine/State.h" 23 #include <vector> 24 #include <string> 25 26 namespace OpenXcom 27 { 28 29 class TextButton; 30 class Window; 31 class Text; 32 class TextList; 33 class Timer; 34 class Base; 35 36 /** 37 * Purchase/Hire screen that lets the player buy 38 * new items for a base. 39 */ 40 class PurchaseState : public State 41 { 42 private: 43 Base *_base; 44 45 TextButton *_btnOk, *_btnCancel; 46 Window *_window; 47 Text *_txtTitle, *_txtFunds, *_txtPurchases, *_txtItem, *_txtCost, *_txtQuantity, *_txtSpaceUsed; 48 TextList *_lstItems; 49 std::vector<std::string> _crafts, _items; 50 std::vector<int> _qtys; 51 size_t _sel, _itemOffset; 52 int _total, _pQty, _cQty; 53 double _iQty; 54 Timer *_timerInc, *_timerDec; 55 /// Gets selected price. 56 int getPrice(); 57 /// Is it excluded in the options file? 58 bool isExcluded(std::string item); 59 public: 60 /// Creates the Purchase state. 61 PurchaseState(Game *game, Base *base); 62 /// Cleans up the Purchase state. 63 ~PurchaseState(); 64 /// Runs the timers. 65 void think(); 66 /// Handler for clicking the OK button. 67 void btnOkClick(Action *action); 68 /// Handler for clicking the Cancel button. 69 void btnCancelClick(Action *action); 70 /// Handler for pressing an Increase arrow in the list. 71 void lstItemsLeftArrowPress(Action *action); 72 /// Handler for releasing an Increase arrow in the list. 73 void lstItemsLeftArrowRelease(Action *action); 74 /// Handler for clicking an Increase arrow in the list. 75 void lstItemsLeftArrowClick(Action *action); 76 /// Handler for pressing a Decrease arrow in the list. 77 void lstItemsRightArrowPress(Action *action); 78 /// Handler for releasing a Decrease arrow in the list. 79 void lstItemsRightArrowRelease(Action *action); 80 /// Handler for clicking a Decrease arrow in the list. 81 void lstItemsRightArrowClick(Action *action); 82 /// Handler for pressing-down a mouse-button in the list. 83 void lstItemsMousePress(Action *action); 84 /// Increases the quantity of an item by one. 85 void increase(); 86 /// Increases the quantity of an item by the given value. 87 void increaseByValue(int change); 88 /// Decreases the quantity of an item by one. 89 void decrease(); 90 /// Decreases the quantity of an item by the given value. 91 void decreaseByValue(int change); 92 /// Updates the quantity-strings of the selected item. 93 void updateItemStrings(); 94 }; 95 96 } 97 98 #endif 99