OpenMW
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
tradewindow.hpp
Go to the documentation of this file.
1 #ifndef MWGUI_TRADEWINDOW_H
2 #define MWGUI_TRADEWINDOW_H
3 
4 #include "../mwmechanics/trading.hpp"
5 
6 #include "referenceinterface.hpp"
7 #include "windowbase.hpp"
8 
9 namespace Gui
10 {
11  class NumericEditBox;
12 }
13 
14 namespace MyGUI
15 {
16  class ControllerItem;
17 }
18 
19 namespace MWGui
20 {
21  class ItemView;
22  class SortFilterItemModel;
23  class TradeItemModel;
24 
25  class TradeWindow : public WindowBase, public ReferenceInterface
26  {
27  public:
28  TradeWindow();
29 
30  void setPtr(const MWWorld::Ptr& actor);
31 
32  void onFrame(float dt);
33  void clear() { resetReference(); }
34 
35  void borrowItem (int index, size_t count);
36  void returnItem (int index, size_t count);
37 
38  int getMerchantServices();
39 
40  virtual bool exit();
41 
42  virtual void resetReference();
43 
44  typedef MyGUI::delegates::CMultiDelegate0 EventHandle_TradeDone;
46 
47  private:
52 
53  static const float sBalanceChangeInitialPause; // in seconds
54  static const float sBalanceChangeInterval; // in seconds
55 
56  MyGUI::Button* mFilterAll;
57  MyGUI::Button* mFilterWeapon;
58  MyGUI::Button* mFilterApparel;
59  MyGUI::Button* mFilterMagic;
60  MyGUI::Button* mFilterMisc;
61 
62  MyGUI::Button* mIncreaseButton;
63  MyGUI::Button* mDecreaseButton;
64  MyGUI::TextBox* mTotalBalanceLabel;
66 
67  MyGUI::Widget* mBottomPane;
68 
69  MyGUI::Button* mMaxSaleButton;
70  MyGUI::Button* mCancelButton;
71  MyGUI::Button* mOfferButton;
72  MyGUI::TextBox* mPlayerGold;
73  MyGUI::TextBox* mMerchantGold;
74 
76 
79 
80  void sellToNpc(const MWWorld::Ptr& item, int count, bool boughtItem);
81  void buyFromNpc(const MWWorld::Ptr& item, int count, bool soldItem);
82 
83  void updateOffer();
84 
85  void onItemSelected (int index);
86  void sellItem (MyGUI::Widget* sender, int count);
87 
88  void onFilterChanged(MyGUI::Widget* _sender);
89  void onOfferButtonClicked(MyGUI::Widget* _sender);
90  void onAccept(MyGUI::EditBox* sender);
91  void onCancelButtonClicked(MyGUI::Widget* _sender);
92  void onMaxSaleButtonClicked(MyGUI::Widget* _sender);
93  void onIncreaseButtonPressed(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id);
94  void onDecreaseButtonPressed(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id);
95  void onBalanceButtonReleased(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id);
96  void onBalanceValueChanged(int value);
97  void onRepeatClick(MyGUI::Widget* widget, MyGUI::ControllerItem* controller);
98 
99  void addRepeatController(MyGUI::Widget* widget);
100 
103 
104  void addOrRemoveGold(int gold, const MWWorld::Ptr& actor);
105 
106  void updateLabels();
107 
108  virtual void onReferenceUnavailable();
109 
110  int getMerchantGold();
111 
112  void restock();
113  };
114 }
115 
116 #endif
void setPtr(const MWWorld::Ptr &actor)
Open this object in the GUI, for windows that support it.
Definition: tradewindow.cpp:116
Definition: tradewindow.hpp:25
A variant of the EditBox that only allows integer inputs.
Definition: numericeditbox.hpp:14
void addOrRemoveGold(int gold, const MWWorld::Ptr &actor)
Definition: tradewindow.cpp:256
void sellToNpc(const MWWorld::Ptr &item, int count, bool boughtItem)
only used for adjusting the gold balance
Definition: tradewindow.cpp:491
static const float sBalanceChangeInitialPause
Definition: tradewindow.hpp:53
int getMerchantServices()
Definition: tradewindow.cpp:174
Definition: itemview.hpp:11
EventHandle_TradeDone eventTradeDone
Definition: tradewindow.hpp:45
void onBalanceValueChanged(int value)
Definition: tradewindow.cpp:419
virtual void onReferenceUnavailable()
called when reference has become unavailable
Definition: tradewindow.cpp:501
MyGUI::Button * mFilterWeapon
Definition: tradewindow.hpp:57
An item model that allows 'borrowing' items from another item model. Used for previewing barter offer...
Definition: tradeitemmodel.hpp:13
void onRepeatClick(MyGUI::Widget *widget, MyGUI::ControllerItem *controller)
Definition: tradewindow.cpp:406
MyGUI::TextBox * mPlayerGold
Definition: tradewindow.hpp:72
void returnItem(int index, size_t count)
Definition: tradewindow.cpp:247
int mCurrentMerchantOffer
Definition: tradewindow.hpp:78
void onFilterChanged(MyGUI::Widget *_sender)
Definition: tradewindow.cpp:150
MyGUI::TextBox * mTotalBalanceLabel
Definition: tradewindow.hpp:64
void onDecreaseButtonPressed(MyGUI::Widget *_sender, int _left, int _top, MyGUI::MouseButton _id)
Definition: tradewindow.cpp:400
void buyFromNpc(const MWWorld::Ptr &item, int count, bool soldItem)
only used for adjusting the gold balance
Definition: tradewindow.cpp:496
MyGUI::delegates::CMultiDelegate0 EventHandle_TradeDone
Definition: tradewindow.hpp:44
void onMaxSaleButtonClicked(MyGUI::Widget *_sender)
Definition: tradewindow.cpp:379
ItemView * mItemView
Definition: tradewindow.hpp:48
TradeItemModel * mTradeModel
Definition: tradewindow.hpp:50
void updateLabels()
Definition: tradewindow.cpp:446
SortFilterItemModel * mSortModel
Definition: tradewindow.hpp:49
MyGUI::Button * mCancelButton
Definition: tradewindow.hpp:70
TradeWindow()
Definition: tradewindow.cpp:51
int getMerchantGold()
Definition: tradewindow.cpp:508
virtual void resetReference()
Definition: tradewindow.cpp:514
void onCancelButtonClicked(MyGUI::Widget *_sender)
Definition: tradewindow.cpp:373
void restock()
Definition: tradewindow.cpp:102
MyGUI::Widget * mBottomPane
Definition: tradewindow.hpp:67
void onDecreaseButtonTriggered()
Definition: tradewindow.cpp:439
void updateOffer()
Definition: tradewindow.cpp:467
Definition: sortfilteritemmodel.hpp:9
MyGUI::Button * mFilterMisc
Definition: tradewindow.hpp:60
void sellItem(MyGUI::Widget *sender, int count)
Definition: tradewindow.cpp:212
void onIncreaseButtonTriggered()
Definition: tradewindow.cpp:429
MyGUI::Button * mOfferButton
Definition: tradewindow.hpp:71
Gui::NumericEditBox * mTotalBalance
Definition: tradewindow.hpp:65
MyGUI::TextBox * mMerchantGold
Definition: tradewindow.hpp:73
MyGUI::Button * mFilterAll
Definition: tradewindow.hpp:56
int mItemToSell
Definition: tradewindow.hpp:75
void borrowItem(int index, size_t count)
Definition: tradewindow.cpp:239
void clear()
Clear any state specific to the running game.
Definition: tradewindow.hpp:33
Definition: windowbase.hpp:21
MyGUI::Button * mFilterApparel
Definition: tradewindow.hpp:58
MyGUI::Button * mMaxSaleButton
Definition: tradewindow.hpp:69
void onFrame(float dt)
Called every frame if the window is in an active GUI mode.
Definition: tradewindow.cpp:145
void onIncreaseButtonPressed(MyGUI::Widget *_sender, int _left, int _top, MyGUI::MouseButton _id)
Definition: tradewindow.cpp:394
MyGUI::Button * mIncreaseButton
Definition: tradewindow.hpp:62
this class is intended for GUI interfaces that access an MW-Reference for example dialogue window acc...
Definition: referenceinterface.hpp:12
int mCurrentBalance
Definition: tradewindow.hpp:77
void addRepeatController(MyGUI::Widget *widget)
Definition: tradewindow.cpp:385
void onBalanceButtonReleased(MyGUI::Widget *_sender, int _left, int _top, MyGUI::MouseButton _id)
Definition: tradewindow.cpp:414
MyGUI::Button * mFilterMagic
Definition: tradewindow.hpp:59
MyGUI::Button * mDecreaseButton
Definition: tradewindow.hpp:63
void onAccept(MyGUI::EditBox *sender)
Definition: tradewindow.cpp:365
Pointer to a LiveCellRef.
Definition: ptr.hpp:19
void onItemSelected(int index)
Definition: tradewindow.cpp:186
void onOfferButtonClicked(MyGUI::Widget *_sender)
Definition: tradewindow.cpp:270
virtual bool exit()
Gracefully exits the window.
Definition: tradewindow.cpp:179
Definition: trading.hpp:8
static const float sBalanceChangeInterval
Definition: tradewindow.hpp:54
MWMechanics::Trading mTrading
Definition: tradewindow.hpp:51