blob: 7e2144b841a80ca74f917f2d2635ae9751a470b8 (
plain) (
tree)
|
|
/*
** Haaf's Game Engine 1.7
** Copyright (C) 2003-2007, Relish Games
** hge.relishgames.com
**
** hgeGUI helper classes header
*/
#ifndef HGEGUI_H
#define HGEGUI_H
#include "hge.h"
#include "hgesprite.h"
#include "hgerect.h"
#define HGEGUI_NONAVKEYS 0
#define HGEGUI_LEFTRIGHT 1
#define HGEGUI_UPDOWN 2
#define HGEGUI_CYCLED 4
class hgeGUI;
/*
** hgeGUIObject
*/
class hgeGUIObject
{
public:
hgeGUIObject() { hge=hgeCreate(HGE_VERSION); color=0xFFFFFFFF; }
virtual ~hgeGUIObject() { hge->Release(); }
virtual void Render() = 0;
virtual void Update(float dt) {}
virtual void Enter() {}
virtual void Leave() {}
virtual void Reset() {}
virtual bool IsDone() { return true; }
virtual void Focus(bool bFocused) {}
virtual void MouseOver(bool bOver) {}
virtual bool MouseMove(float x, float y) { return false; }
virtual bool MouseLButton(bool bDown) { return false; }
virtual bool MouseRButton(bool bDown) { return false; }
virtual bool MouseWheel(int nNotches) { return false; }
virtual bool KeyClick(int key, int chr) { return false; }
virtual void SetColor(DWORD _color) { color=_color; }
int id;
bool bStatic;
bool bVisible;
bool bEnabled;
hgeRect rect;
DWORD color;
hgeGUI *gui;
hgeGUIObject *next;
hgeGUIObject *prev;
protected:
hgeGUIObject(const hgeGUIObject &go);
hgeGUIObject& operator= (const hgeGUIObject &go);
static HGE *hge;
};
/*
** hgeGUI
*/
class hgeGUI
{
public:
hgeGUI();
~hgeGUI();
void AddCtrl(hgeGUIObject *ctrl);
void DelCtrl(int id);
hgeGUIObject* GetCtrl(int id) const;
void MoveCtrl(int id, float x, float y);
void ShowCtrl(int id, bool bVisible);
void EnableCtrl(int id, bool bEnabled);
void SetNavMode(int mode);
void SetCursor(hgeSprite *spr);
void SetColor(DWORD color);
void SetFocus(int id);
int GetFocus() const;
void Enter();
void Leave();
void Reset();
void Move(float dx, float dy);
int Update(float dt);
void Render();
private:
hgeGUI(const hgeGUI &);
hgeGUI& operator= (const hgeGUI&);
bool ProcessCtrl(hgeGUIObject *ctrl);
static HGE *hge;
hgeGUIObject *ctrls;
hgeGUIObject *ctrlLock;
hgeGUIObject *ctrlFocus;
hgeGUIObject *ctrlOver;
int navmode;
int nEnterLeave;
hgeSprite *sprCursor;
float mx,my;
int nWheel;
bool bLPressed, bLReleased;
bool bRPressed, bRReleased;
};
#endif
|