1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-02-05 15:40:10 +00:00
OpenMW/apps/openmw/mwgui/tradewindow.hpp

123 lines
3.5 KiB
C++
Raw Normal View History

#ifndef MWGUI_TRADEWINDOW_H
#define MWGUI_TRADEWINDOW_H
#include "../mwmechanics/trading.hpp"
#include "referenceinterface.hpp"
#include "windowbase.hpp"
2012-05-17 17:15:44 +02:00
2014-09-25 20:28:00 +02:00
namespace Gui
{
2014-09-25 20:28:00 +02:00
class NumericEditBox;
}
2015-01-10 02:50:43 +01:00
namespace MyGUI
{
2015-01-10 02:50:43 +01:00
class ControllerItem;
}
namespace MWGui
{
2013-05-11 18:38:27 +02:00
class ItemView;
class SortFilterItemModel;
class TradeItemModel;
class TradeWindow : public WindowBase, public ReferenceInterface
{
2022-09-22 21:26:05 +03:00
public:
TradeWindow();
2022-09-22 21:26:05 +03:00
void setPtr(const MWWorld::Ptr& actor) override;
2022-09-22 21:26:05 +03:00
void onClose() override;
void onFrame(float dt) override;
void clear() override { resetReference(); }
2022-09-22 21:26:05 +03:00
void borrowItem(int index, size_t count);
void returnItem(int index, size_t count);
2013-05-11 18:38:27 +02:00
2022-09-22 21:26:05 +03:00
int getMerchantServices();
2013-05-11 18:38:27 +02:00
2022-09-22 21:26:05 +03:00
bool exit() override;
2022-09-22 21:26:05 +03:00
void resetReference() override;
2013-05-11 18:38:27 +02:00
2022-09-22 21:26:05 +03:00
void onDeleteCustomData(const MWWorld::Ptr& ptr) override;
2022-09-22 21:26:05 +03:00
typedef MyGUI::delegates::CMultiDelegate0 EventHandle_TradeDone;
EventHandle_TradeDone eventTradeDone;
2022-09-22 21:26:05 +03:00
private:
ItemView* mItemView;
SortFilterItemModel* mSortModel;
TradeItemModel* mTradeModel;
MWMechanics::Trading mTrading;
2013-05-11 18:38:27 +02:00
2022-09-22 21:26:05 +03:00
static const float sBalanceChangeInitialPause; // in seconds
static const float sBalanceChangeInterval; // in seconds
2022-09-22 21:26:05 +03:00
MyGUI::Button* mFilterAll;
MyGUI::Button* mFilterWeapon;
MyGUI::Button* mFilterApparel;
MyGUI::Button* mFilterMagic;
MyGUI::Button* mFilterMisc;
2022-09-22 21:26:05 +03:00
MyGUI::EditBox* mFilterEdit;
2022-09-22 21:26:05 +03:00
MyGUI::Button* mIncreaseButton;
MyGUI::Button* mDecreaseButton;
MyGUI::TextBox* mTotalBalanceLabel;
Gui::NumericEditBox* mTotalBalance;
2012-05-17 21:15:48 +02:00
2022-09-22 21:26:05 +03:00
MyGUI::Widget* mBottomPane;
2012-05-17 21:15:48 +02:00
2022-09-22 21:26:05 +03:00
MyGUI::Button* mMaxSaleButton;
MyGUI::Button* mCancelButton;
MyGUI::Button* mOfferButton;
MyGUI::TextBox* mPlayerGold;
MyGUI::TextBox* mMerchantGold;
2012-05-17 21:15:48 +02:00
2022-09-22 21:26:05 +03:00
int mItemToSell;
2013-05-11 18:38:27 +02:00
2022-09-22 21:26:05 +03:00
int mCurrentBalance;
int mCurrentMerchantOffer;
2022-09-22 21:26:05 +03:00
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
2013-05-11 18:38:27 +02:00
2022-09-22 21:26:05 +03:00
void updateOffer();
2022-09-22 21:26:05 +03:00
void onItemSelected(int index);
void sellItem(MyGUI::Widget* sender, int count);
2013-05-11 18:38:27 +02:00
2022-09-22 21:26:05 +03:00
void onFilterChanged(MyGUI::Widget* _sender);
void onNameFilterChanged(MyGUI::EditBox* _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);
2022-09-22 21:26:05 +03:00
void addRepeatController(MyGUI::Widget* widget);
2022-09-22 21:26:05 +03:00
void onIncreaseButtonTriggered();
void onDecreaseButtonTriggered();
2022-09-22 21:26:05 +03:00
void addOrRemoveGold(int gold, const MWWorld::Ptr& actor);
2022-09-22 21:26:05 +03:00
void updateLabels();
2022-09-22 21:26:05 +03:00
void onReferenceUnavailable() override;
2022-09-22 21:26:05 +03:00
int getMerchantGold();
};
}
#endif