1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-11-24 08:32:34 +02:00
vcmi/CHeroWindow.h

117 lines
3.6 KiB
C
Raw Normal View History

#pragma once
#include "CPlayerInterface.h"
#include "CAdvmapInterface.h"
2008-01-11 20:56:39 +02:00
template <typename T> class AdventureMapButton;
struct SDL_Surface;
class CGHeroInstance;
2008-01-12 14:55:45 +02:00
class CDefHandler;
class CArtifact;
2008-01-25 21:09:41 +02:00
class CHeroWindow;
class LClickableArea: public ClickableL
{
public:
virtual void clickLeft (tribool down);
virtual void activate();
virtual void deactivate();
};
class RClickableArea: public ClickableR
{
public:
virtual void clickRight (tribool down);
virtual void activate();
virtual void deactivate();
};
2008-01-25 21:09:41 +02:00
class LClickableAreaHero : public LClickableArea
{
public:
int id;
CHeroWindow * owner;
virtual void clickLeft (tribool down);
};
class LRClickableAreaWText: public virtual LClickableArea, public virtual RClickableArea
{
public:
std::string text;
virtual void activate();
virtual void deactivate();
virtual void clickLeft (tribool down);
virtual void clickRight (tribool down);
};
class LRClickableAreaWTextComp: public virtual LClickableArea, public virtual RClickableArea
2008-01-20 15:53:11 +02:00
{
public:
std::string text;
int bonus, type;
virtual void activate();
virtual void deactivate();
2008-01-20 15:53:11 +02:00
virtual void clickLeft (tribool down);
virtual void clickRight (tribool down);
2008-01-20 15:53:11 +02:00
};
class CArtPlace: public ClickableL, public IShowable
{
2008-01-20 17:26:34 +02:00
private:
bool active;
public:
const CArtifact * ourArt;
CArtPlace(CArtifact * art);
void clickLeft (tribool down);
void activate();
void deactivate();
void show(SDL_Surface * to = NULL);
2008-01-20 15:53:11 +02:00
~CArtPlace();
};
class CHeroWindow: public IActivable, public IShowable, public virtual CIntObject
{
2008-01-12 14:55:45 +02:00
SDL_Surface * background, * curBack;
const CGHeroInstance * curHero;
2008-01-11 20:56:39 +02:00
2008-01-12 14:55:45 +02:00
//general graphics
2008-01-13 18:24:24 +02:00
CDefHandler * skillpics, *flags;
2008-01-12 14:55:45 +02:00
2008-01-11 20:56:39 +02:00
//buttons
2008-01-13 18:24:24 +02:00
AdventureMapButton<CHeroWindow> * quitButton, * dismissButton, * questlogButton, //general
2008-01-13 21:42:21 +02:00
* gar1button, * gar2button, * gar3button, * gar4button, //garrison / formation handling
* leftArtRoll, * rightArtRoll;
2008-01-25 21:09:41 +02:00
//std::vector< AdventureMapButton<CHeroWindow> * > heroList; //list of heroes
std::vector<LClickableAreaHero *> heroListMi; //new better list of heroes
//artifact places
CArtPlace * artHead, * artLRing, * artRRing, * artLHand, * artRhand,
* artFeet, * artSpellBook, * artMach1, * artMach2, * artMach3,
* artMach4, * artMisc1, * artMisc2, * artMisc3, * artMisc4,
* artMisc5, * artTorso, * artNeck, * artShoulders; //heroes' artifacts
std::vector<CArtPlace *> backpack; //hero's visible backpack (only 5 elements!)
int backpackPos; //unmber of first art visible in backpack (in hero's vector)
//clickable areas
LRClickableAreaWText * portraitArea;
std::vector<LRClickableAreaWTextComp *> primSkillAreas;
LRClickableAreaWText * expArea;
public:
2008-01-25 21:09:41 +02:00
int player;
2008-01-11 20:56:39 +02:00
CHeroWindow(int playerColor); //c-tor
~CHeroWindow(); //d-tor
void setHero(const CGHeroInstance * hero); //sets main displayed hero
2008-01-11 20:56:39 +02:00
void activate(); //activates hero window;
void deactivate(); //activates hero window;
virtual void show(SDL_Surface * to = NULL); //shows hero window
void redrawCurBack(); //redraws curBAck from scratch
2008-01-11 20:56:39 +02:00
void quit(); //stops displaying hero window
2008-01-12 14:55:45 +02:00
void dismissCurrent(); //dissmissed currently displayed hero (curHero) //TODO: make it working
2008-01-13 21:42:21 +02:00
void questlog(); //show quest log in hero window
2008-01-13 18:24:24 +02:00
void gar1(); //garrison / formation handling
void gar2(); //garrison / formation handling
void gar3(); //garrison / formation handling
void gar4(); //garrison / formation handling
2008-01-13 21:42:21 +02:00
void leftArtRoller(); //scrolls artifacts in bag left
void rightArtRoller(); //scrolls artifacts in bag right
void switchHero(); //changes displayed hero
};