Files
vcmi/AdventureMapButton.h
T

74 lines
3.3 KiB
C++
Raw Normal View History

2008-01-10 19:01:25 +00:00
#pragma once
#include "CPlayerInterface.h"
2008-08-15 12:11:42 +00:00
#include "client/FunctionList.h"
2008-05-18 17:33:39 +00:00
#include <boost/bind.hpp>
class AdventureMapButton
: public ClickableL, public ClickableR, public Hoverable, public KeyInterested, public CButtonBase
{
public:
2008-08-28 17:36:34 +00:00
std::map<int,std::string> hoverTexts; //state -> text for statusbar
std::string helpBox; //for right-click help
char key; //key shortcut
2008-08-15 12:11:42 +00:00
CFunctionList<void()> callback;
bool colorChange, blocked,
2008-04-04 17:30:53 +00:00
actOnDown; //runs when mouse is pressed down over it, not when up
void clickRight (tribool down);
2008-08-28 17:36:34 +00:00
virtual void clickLeft (tribool down);
void hover (bool on);
void block(bool on); //if button is blocked then it'll change it's graphic to inactive (offset==2) and won't react on l-clicks
void keyPressed (SDL_KeyboardEvent & key);
void activate(); // makes button active
void deactivate(); // makes button inactive (but doesn't delete)
AdventureMapButton(); //c-tor
2008-08-28 17:36:34 +00:00
AdventureMapButton( const std::map<int,std::string> &, const std::string &HelpBox, const CFunctionList<void()> &Callback, int x, int y, const std::string &defName, bool activ=false, std::vector<std::string> * add = NULL, bool playerColoredButton = false );//c-tor
AdventureMapButton( const std::string &Name, const std::string &HelpBox, const CFunctionList<void()> &Callback, int x, int y, const std::string &defName, bool activ=false, std::vector<std::string> * add = NULL, bool playerColoredButton = false );//c-tor
//AdventureMapButton( std::string Name, std::string HelpBox, boost::function<void()> Callback, int x, int y, std::string defName, bool activ=false, std::vector<std::string> * add = NULL, bool playerColoredButton = false );//c-tor
2008-08-15 12:11:42 +00:00
2008-08-28 17:36:34 +00:00
void init(const CFunctionList<void()> &Callback, const std::map<int,std::string> &Name, const std::string &HelpBox, bool playerColoredButton, const std::string &defName, std::vector<std::string> * add, int x, int y, bool activ );
};
class CHighlightableButton
: public AdventureMapButton
{
public:
CHighlightableButton(const CFunctionList<void()> &onSelect, const CFunctionList<void()> &onDeselect, const std::map<int,std::string> &Name, const std::string &HelpBox, bool playerColoredButton, const std::string &defName, std::vector<std::string> * add, int x, int y, bool activ );
bool selected;
CFunctionList<void()> callback2; //when disselecting
void clickLeft (tribool down);
};
2008-01-09 17:21:31 +00:00
2008-05-18 17:33:39 +00:00
//template<typename T>
2008-04-04 17:30:53 +00:00
class CSlider : public IShowable, public MotionInterested, public ClickableL
{
public:
2008-05-18 17:33:39 +00:00
AdventureMapButton left, right, slider; //if vertical then left=up
2008-04-04 17:30:53 +00:00
int capacity,//how many elements can be active at same time
amount, //how many elements
value; //first active element
bool horizontal, moving;
CDefEssential *imgs ;
2008-05-18 17:33:39 +00:00
boost::function<void(int)> moved;
//void(T::*moved)(int to);
//T* owner;
2008-04-04 17:30:53 +00:00
void redrawSlider();
void sliderClicked();
void moveLeft();
void clickLeft (tribool down);
void mouseMoved (SDL_MouseMotionEvent & sEvent);
void moveRight();
void moveTo(int to);
2008-09-07 03:38:37 +00:00
void block(bool on);
2008-04-04 17:30:53 +00:00
void activate(); // makes button active
void deactivate(); // makes button inactive (but doesn't delete)
void show(SDL_Surface * to = NULL);
2008-05-18 17:33:39 +00:00
CSlider(int x, int y, int totalw, boost::function<void(int)> Moved, int Capacity, int Amount,
2008-04-04 17:30:53 +00:00
int Value=0, bool Horizontal=true);
~CSlider();
};