You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
3.5 KiB
C++
117 lines
3.5 KiB
C++
#ifndef MWGUI_TRADEWINDOW_H
|
|
#define MWGUI_TRADEWINDOW_H
|
|
|
|
#include "../mwmechanics/trading.hpp"
|
|
|
|
#include "referenceinterface.hpp"
|
|
#include "windowbase.hpp"
|
|
|
|
namespace Gui
|
|
{
|
|
class NumericEditBox;
|
|
}
|
|
|
|
namespace MyGUI
|
|
{
|
|
class ControllerItem;
|
|
}
|
|
|
|
namespace MWGui
|
|
{
|
|
class ItemView;
|
|
class SortFilterItemModel;
|
|
class TradeItemModel;
|
|
|
|
class TradeWindow : public WindowBase, public ReferenceInterface
|
|
{
|
|
public:
|
|
TradeWindow();
|
|
|
|
void setPtr(const MWWorld::Ptr& actor);
|
|
|
|
void onFrame(float dt);
|
|
void clear() { resetReference(); }
|
|
|
|
void borrowItem (int index, size_t count);
|
|
void returnItem (int index, size_t count);
|
|
|
|
int getMerchantServices();
|
|
|
|
virtual bool exit();
|
|
|
|
virtual void resetReference();
|
|
|
|
typedef MyGUI::delegates::CMultiDelegate0 EventHandle_TradeDone;
|
|
EventHandle_TradeDone eventTradeDone;
|
|
|
|
private:
|
|
ItemView* mItemView;
|
|
SortFilterItemModel* mSortModel;
|
|
TradeItemModel* mTradeModel;
|
|
MWMechanics::Trading mTrading;
|
|
|
|
static const float sBalanceChangeInitialPause; // in seconds
|
|
static const float sBalanceChangeInterval; // in seconds
|
|
|
|
MyGUI::Button* mFilterAll;
|
|
MyGUI::Button* mFilterWeapon;
|
|
MyGUI::Button* mFilterApparel;
|
|
MyGUI::Button* mFilterMagic;
|
|
MyGUI::Button* mFilterMisc;
|
|
|
|
MyGUI::Button* mIncreaseButton;
|
|
MyGUI::Button* mDecreaseButton;
|
|
MyGUI::TextBox* mTotalBalanceLabel;
|
|
Gui::NumericEditBox* mTotalBalance;
|
|
|
|
MyGUI::Widget* mBottomPane;
|
|
|
|
MyGUI::Button* mMaxSaleButton;
|
|
MyGUI::Button* mCancelButton;
|
|
MyGUI::Button* mOfferButton;
|
|
MyGUI::TextBox* mPlayerGold;
|
|
MyGUI::TextBox* mMerchantGold;
|
|
|
|
int mItemToSell;
|
|
|
|
int mCurrentBalance;
|
|
int mCurrentMerchantOffer;
|
|
|
|
void sellToNpc(const MWWorld::Ptr& item, int count, bool boughtItem); ///< only used for adjusting the gold balance
|
|
void buyFromNpc(const MWWorld::Ptr& item, int count, bool soldItem); ///< only used for adjusting the gold balance
|
|
|
|
void updateOffer();
|
|
|
|
void onItemSelected (int index);
|
|
void sellItem (MyGUI::Widget* sender, int count);
|
|
|
|
void onFilterChanged(MyGUI::Widget* _sender);
|
|
void onOfferButtonClicked(MyGUI::Widget* _sender);
|
|
void onAccept(MyGUI::EditBox* sender);
|
|
void onCancelButtonClicked(MyGUI::Widget* _sender);
|
|
void onMaxSaleButtonClicked(MyGUI::Widget* _sender);
|
|
void onIncreaseButtonPressed(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id);
|
|
void onDecreaseButtonPressed(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id);
|
|
void onBalanceButtonReleased(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id);
|
|
void onBalanceValueChanged(int value);
|
|
void onRepeatClick(MyGUI::Widget* widget, MyGUI::ControllerItem* controller);
|
|
|
|
void addRepeatController(MyGUI::Widget* widget);
|
|
|
|
void onIncreaseButtonTriggered();
|
|
void onDecreaseButtonTriggered();
|
|
|
|
void addOrRemoveGold(int gold, const MWWorld::Ptr& actor);
|
|
|
|
void updateLabels();
|
|
|
|
virtual void onReferenceUnavailable();
|
|
|
|
int getMerchantGold();
|
|
|
|
void restock();
|
|
};
|
|
}
|
|
|
|
#endif
|