aboutsummaryrefslogtreecommitdiff
path: root/archive/hgehelp/hgegui.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'archive/hgehelp/hgegui.cpp')
-rw-r--r--archive/hgehelp/hgegui.cpp397
1 files changed, 0 insertions, 397 deletions
diff --git a/archive/hgehelp/hgegui.cpp b/archive/hgehelp/hgegui.cpp
deleted file mode 100644
index 2faf24c..0000000
--- a/archive/hgehelp/hgegui.cpp
+++ /dev/null
@@ -1,397 +0,0 @@
-/*
-** Haaf's Game Engine 1.7
-** Copyright (C) 2003-2007, Relish Games
-** hge.relishgames.com
-**
-** hgeGUI helper class implementation
-*/
-
-
-#include "hgegui.h"
-
-
-HGE *hgeGUI::hge=0;
-HGE *hgeGUIObject::hge=0;
-
-
-hgeGUI::hgeGUI()
-{
- hge=hgeCreate(HGE_VERSION);
-
- ctrls=0;
- ctrlLock=0;
- ctrlFocus=0;
- ctrlOver=0;
- navmode=HGEGUI_NONAVKEYS;
- bLPressed=bLReleased=false;
- bRPressed=bRReleased=false;
- nWheel=0;
- mx=my=0.0f;
- nEnterLeave=0;
- sprCursor=0;
-}
-
-hgeGUI::~hgeGUI()
-{
- hgeGUIObject *ctrl=ctrls, *nextctrl;
-
- while(ctrl)
- {
- nextctrl=ctrl->next;
- delete ctrl;
- ctrl=nextctrl;
- }
-
- hge->Release();
-}
-
-void hgeGUI::AddCtrl(hgeGUIObject *ctrl)
-{
- hgeGUIObject *last=ctrls;
-
- ctrl->gui=this;
-
- if(!ctrls)
- {
- ctrls=ctrl;
- ctrl->prev=0;
- ctrl->next=0;
- }
- else
- {
- while(last->next) last=last->next;
- last->next=ctrl;
- ctrl->prev=last;
- ctrl->next=0;
- }
-}
-
-void hgeGUI::DelCtrl(int id)
-{
- hgeGUIObject *ctrl=ctrls;
-
- while(ctrl)
- {
- if(ctrl->id == id)
- {
- if(ctrl->prev) ctrl->prev->next = ctrl->next;
- else ctrls = ctrl->next;
- if(ctrl->next) ctrl->next->prev = ctrl->prev;
- delete ctrl;
- return;
- }
- ctrl=ctrl->next;
- }
-}
-
-hgeGUIObject* hgeGUI::GetCtrl(int id) const
-{
- hgeGUIObject *ctrl=ctrls;
-
- while(ctrl)
- {
- if(ctrl->id == id) return ctrl;
- ctrl=ctrl->next;
- }
-
- return NULL;
-}
-
-void hgeGUI::MoveCtrl(int id, float x, float y)
-{
- hgeGUIObject *ctrl=GetCtrl(id);
- ctrl->rect.x2=x + (ctrl->rect.x2 - ctrl->rect.x1);
- ctrl->rect.y2=y + (ctrl->rect.y2 - ctrl->rect.y1);
- ctrl->rect.x1=x;
- ctrl->rect.y1=y;
-}
-
-void hgeGUI::ShowCtrl(int id, bool bVisible)
-{
- GetCtrl(id)->bVisible=bVisible;
-}
-
-void hgeGUI::EnableCtrl(int id, bool bEnabled)
-{
- GetCtrl(id)->bEnabled=bEnabled;
-}
-
-void hgeGUI::SetNavMode(int mode)
-{
- navmode=mode;
-}
-
-void hgeGUI::SetCursor(hgeSprite *spr)
-{
- sprCursor=spr;
-}
-
-
-void hgeGUI::SetColor(DWORD color)
-{
- hgeGUIObject *ctrl=ctrls;
-
- while(ctrl)
- {
- ctrl->SetColor(color);
- ctrl=ctrl->next;
- }
-}
-
-
-void hgeGUI::Reset()
-{
- hgeGUIObject *ctrl=ctrls;
-
- while(ctrl)
- {
- ctrl->Reset();
- ctrl=ctrl->next;
- }
-
- ctrlLock=0;
- ctrlOver=0;
- ctrlFocus=0;
-}
-
-
-void hgeGUI::Move(float dx, float dy)
-{
- hgeGUIObject *ctrl=ctrls;
-
- while(ctrl)
- {
- ctrl->rect.x1 += dx;
- ctrl->rect.y1 += dy;
- ctrl->rect.x2 += dx;
- ctrl->rect.y2 += dy;
-
- ctrl=ctrl->next;
- }
-}
-
-
-void hgeGUI::SetFocus(int id)
-{
- hgeGUIObject *ctrlNewFocus=GetCtrl(id);
-
- if(ctrlNewFocus==ctrlFocus) return;
- if(!ctrlNewFocus)
- {
- if(ctrlFocus) ctrlFocus->Focus(false);
- ctrlFocus=0;
- }
- else if(!ctrlNewFocus->bStatic && ctrlNewFocus->bVisible && ctrlNewFocus->bEnabled)
- {
- if(ctrlFocus) ctrlFocus->Focus(false);
- if(ctrlNewFocus) ctrlNewFocus->Focus(true);
- ctrlFocus=ctrlNewFocus;
- }
-}
-
-int hgeGUI::GetFocus() const
-{
- if(ctrlFocus) return ctrlFocus->id;
- else return 0;
-}
-
-void hgeGUI::Enter()
-{
- hgeGUIObject *ctrl=ctrls;
-
- while(ctrl)
- {
- ctrl->Enter();
- ctrl=ctrl->next;
- }
-
- nEnterLeave=2;
-}
-
-void hgeGUI::Leave()
-{
- hgeGUIObject *ctrl=ctrls;
-
- while(ctrl)
- {
- ctrl->Leave();
- ctrl=ctrl->next;
- }
-
- ctrlFocus=0;
- ctrlOver=0;
- ctrlLock=0;
- nEnterLeave=1;
-}
-
-void hgeGUI::Render()
-{
- hgeGUIObject *ctrl=ctrls;
-
- while(ctrl)
- {
- if(ctrl->bVisible) ctrl->Render();
- ctrl=ctrl->next;
- }
-
- if(hge->Input_IsMouseOver() && sprCursor) sprCursor->Render(mx,my);
-}
-
-int hgeGUI::Update(float dt)
-{
- bool bDone;
- int key;
- hgeGUIObject *ctrl;
-
-// Update the mouse variables
-
- hge->Input_GetMousePos(&mx, &my);
- bLPressed = hge->Input_KeyDown(HGEK_LBUTTON);
- bLReleased = hge->Input_KeyUp(HGEK_LBUTTON);
- bRPressed = hge->Input_KeyDown(HGEK_RBUTTON);
- bRReleased = hge->Input_KeyUp(HGEK_RBUTTON);
- nWheel=hge->Input_GetMouseWheel();
-
-// Update all controls
-
- ctrl=ctrls;
- while(ctrl)
- {
- ctrl->Update(dt);
- ctrl=ctrl->next;
- }
-
-// Handle Enter/Leave
-
- if(nEnterLeave)
- {
- ctrl=ctrls; bDone=true;
- while(ctrl)
- {
- if(!ctrl->IsDone()) { bDone=false; break; }
- ctrl=ctrl->next;
- }
- if(!bDone) return 0;
- else
- {
- if(nEnterLeave==1) return -1;
- else nEnterLeave=0;
- }
- }
-
-// Handle keys
-
- key=hge->Input_GetKey();
- if(((navmode & HGEGUI_LEFTRIGHT) && key==HGEK_LEFT) ||
- ((navmode & HGEGUI_UPDOWN) && key==HGEK_UP))
- {
- ctrl=ctrlFocus;
- if(!ctrl)
- {
- ctrl=ctrls;
- if(!ctrl) return 0;
- }
- do {
- ctrl=ctrl->prev;
- if(!ctrl && ((navmode & HGEGUI_CYCLED) || !ctrlFocus))
- {
- ctrl=ctrls;
- while(ctrl->next) ctrl=ctrl->next;
- }
- if(!ctrl || ctrl==ctrlFocus) break;
- } while(ctrl->bStatic==true || ctrl->bVisible==false || ctrl->bEnabled==false);
-
- if(ctrl && ctrl!=ctrlFocus)
- {
- if(ctrlFocus) ctrlFocus->Focus(false);
- if(ctrl) ctrl->Focus(true);
- ctrlFocus=ctrl;
- }
- }
- else if(((navmode & HGEGUI_LEFTRIGHT) && key==HGEK_RIGHT) ||
- ((navmode & HGEGUI_UPDOWN) && key==HGEK_DOWN))
- {
- ctrl=ctrlFocus;
- if(!ctrl)
- {
- ctrl=ctrls;
- if(!ctrl) return 0;
- while(ctrl->next) ctrl=ctrl->next;
- }
- do {
- ctrl=ctrl->next;
- if(!ctrl && ((navmode & HGEGUI_CYCLED) || !ctrlFocus)) ctrl=ctrls;
- if(!ctrl || ctrl==ctrlFocus) break;
- } while(ctrl->bStatic==true || ctrl->bVisible==false || ctrl->bEnabled==false);
-
- if(ctrl && ctrl!=ctrlFocus)
- {
- if(ctrlFocus) ctrlFocus->Focus(false);
- if(ctrl) ctrl->Focus(true);
- ctrlFocus=ctrl;
- }
- }
- else if(ctrlFocus && key && key!=HGEK_LBUTTON && key!=HGEK_RBUTTON)
- {
- if(ctrlFocus->KeyClick(key, hge->Input_GetChar())) return ctrlFocus->id;
- }
-
-// Handle mouse
-
- bool bLDown = hge->Input_GetKeyState(HGEK_LBUTTON);
- bool bRDown = hge->Input_GetKeyState(HGEK_RBUTTON);
-
- if(ctrlLock)
- {
- ctrl=ctrlLock;
- if(!bLDown && !bRDown) ctrlLock=0;
- if(ProcessCtrl(ctrl)) return ctrl->id;
- }
- else
- {
- // Find last (topmost) control
-
- ctrl=ctrls;
- if(ctrl)
- while(ctrl->next) ctrl=ctrl->next;
-
- while(ctrl)
- {
- if(ctrl->rect.TestPoint(mx,my) && ctrl->bEnabled)
- {
- if(ctrlOver != ctrl)
- {
- if(ctrlOver) ctrlOver->MouseOver(false);
- ctrl->MouseOver(true);
- ctrlOver=ctrl;
- }
-
- if(ProcessCtrl(ctrl)) return ctrl->id;
- else return 0;
- }
- ctrl=ctrl->prev;
- }
-
- if(ctrlOver) {ctrlOver->MouseOver(false); ctrlOver=0;}
-
- }
-
- return 0;
-}
-
-bool hgeGUI::ProcessCtrl(hgeGUIObject *ctrl)
-{
- bool bResult=false;
-
- if(bLPressed) { ctrlLock=ctrl;SetFocus(ctrl->id);bResult=bResult || ctrl->MouseLButton(true); }
- if(bRPressed) { ctrlLock=ctrl;SetFocus(ctrl->id);bResult=bResult || ctrl->MouseRButton(true); }
- if(bLReleased) { bResult=bResult || ctrl->MouseLButton(false); }
- if(bRReleased) { bResult=bResult || ctrl->MouseRButton(false); }
- if(nWheel) { bResult=bResult || ctrl->MouseWheel(nWheel); }
- bResult=bResult || ctrl->MouseMove(mx-ctrl->rect.x1,my-ctrl->rect.y1);
-
- return bResult;
-}
-
-
-