This commit is contained in:
Paul 2000-11-03 16:41:57 +00:00
parent b02ddd5d0f
commit fff2459f10
7 changed files with 125 additions and 105 deletions

View file

@ -52,6 +52,8 @@ eng=CONTROL TYPE
eng=MUSIC eng=MUSIC
[STR__PAULS_TEST__SFX] [STR__PAULS_TEST__SFX]
eng=SFX eng=SFX
[STR__PAULS_TEST__EXIT]
eng=EXIT

View file

@ -45,13 +45,14 @@
Vars Vars
---- */ ---- */
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
Function: Function:
Purpose: Purpose:
Params: Params:
Returns: Returns:
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CGUIButton::setButtonTarget(int *_target) void CGUIToggleButton::setButtonTarget(int *_target)
{ {
m_target=_target; m_target=_target;
} }
@ -63,7 +64,44 @@ void CGUIButton::setButtonTarget(int *_target)
Params: Params:
Returns: Returns:
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CGUIButton::setButtonData(int *_data) void CGUIToggleButton::think(int _frames)
{
ASSERT(getTarget());
CGUIObject::think(_frames);
if(isSelected())
{
int pad;
pad=PadGetRepeat(0);
if(pad&PAD_CROSS)
{
int *target;
target=getTarget();
if(*target==true)
{
*target=false;
}
else
{
*target=true;
}
}
}
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
void CGUICycleButton::setButtonData(int *_data)
{ {
m_data=_data; m_data=_data;
} }
@ -75,12 +113,12 @@ void CGUIButton::setButtonData(int *_data)
Params: Params:
Returns: Returns:
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CGUIButton::think(int _frames) void CGUICycleButton::think(int _frames)
{ {
ASSERT(m_target); ASSERT(getTarget());
ASSERT(m_data); ASSERT(getData());
CGUIObject::think(_frames); CGUIToggleButton::think(_frames);
if(isSelected()) if(isSelected())
{ {
int pad; int pad;
@ -88,29 +126,31 @@ void CGUIButton::think(int _frames)
pad=PadGetRepeat(0); pad=PadGetRepeat(0);
if(pad&PAD_CROSS) if(pad&PAD_CROSS)
{ {
int *target;
int *data; int *data;
int tmp; int tmp;
data=m_data; target=getTarget();
tmp=*data; data=getData();
do do
{ {
tmp=*data; tmp=*data;
data++; if(*target==*data)
if(*m_target==tmp)
{ {
break; break;
} }
data++;
} }
while(tmp<*data); while(tmp<*data);
if(tmp>*data) if(tmp>*data)
{ {
data=m_data; data=getData();
} }
*m_target=*data; *target=*data;
} }
} }
} }
/*=========================================================================== /*===========================================================================
end */ end */

View file

@ -34,22 +34,40 @@
Structure defintions Structure defintions
-------------------- */ -------------------- */
class CGUIButton : public CGUIObject class CGUIToggleButton : public CGUIObject
{ {
public: public:
virtual void setButtonTarget(int *_target); virtual void setButtonTarget(int *_target);
virtual void think(int _frames);
protected:
int *getTarget() {return m_target;}
virtual int isSelectable() {return true;}
private:
int *m_target;
};
class CGUICycleButton : public CGUIToggleButton
{
public:
virtual void setButtonData(int *_data); virtual void setButtonData(int *_data);
virtual void think(int _frames); virtual void think(int _frames);
protected: protected:
virtual int isSelectable() {return true;} int *getData() {return m_data;}
private: private:
int *m_target;
int *m_data; int *m_data;
}; };

View file

@ -44,7 +44,7 @@ public:
} TextReadoutData; } TextReadoutData;
virtual void init(CGUIObject *_parent,GUIId _id); virtual void init(CGUIObject *_parent,GUIId _id=noId);
virtual void setReadoutTarget(int *_target); virtual void setReadoutTarget(int *_target);
virtual void setReadoutData(TextReadoutData *_data); virtual void setReadoutData(TextReadoutData *_data);
@ -77,7 +77,7 @@ public:
} SpriteReadoutData; } SpriteReadoutData;
virtual void init(CGUIObject *_parent,GUIId _id); virtual void init(CGUIObject *_parent,GUIId _id=noId);
virtual void shutdown(); virtual void shutdown();
virtual void setReadoutTarget(int *_target); virtual void setReadoutTarget(int *_target);

View file

@ -37,7 +37,7 @@
class CGUITextBox : public CGUIObjectWithFont class CGUITextBox : public CGUIObjectWithFont
{ {
public: public:
virtual void init(CGUIObject *_parent,GUIId _id); virtual void init(CGUIObject *_parent,GUIId _id=noId);
virtual void setText(unsigned int _textId); virtual void setText(unsigned int _textId);

View file

@ -33,6 +33,7 @@ class CGUIObject
{ {
public: public:
typedef int GUIId; typedef int GUIId;
static const GUIId noId=-1;
typedef enum typedef enum
{ {
@ -50,7 +51,7 @@ public:
}; };
virtual void init(CGUIObject *_parent,GUIId _id); virtual void init(CGUIObject *_parent,GUIId _id=noId);
virtual void shutdown(); virtual void shutdown();
void setObjectX(int _x) {m_x=_x;recalc();} void setObjectX(int _x) {m_x=_x;recalc();}
@ -115,7 +116,7 @@ private:
class CGUIObjectWithFont : public CGUIObject class CGUIObjectWithFont : public CGUIObject
{ {
public: public:
virtual void init(CGUIObject *_parent,GUIId _id); virtual void init(CGUIObject *_parent,GUIId _id=noId);
virtual void shutdown(); virtual void shutdown();
virtual void setFlags(GUI_FLAGS _flags); virtual void setFlags(GUI_FLAGS _flags);

View file

@ -112,23 +112,19 @@ int h=40;
CGUITextReadout::TextReadoutData onOffTextReadouts[]= CGUITextReadout::TextReadoutData onOffTextReadouts[]=
{ {
{ 0, STR__ON, }, { false, STR__ON, },
{ 1, STR__OFF, }, { true, STR__OFF, },
{ 0, 0, }, { 0, 0, },
}; };
CGUISpriteReadout::SpriteReadoutData onOffSpriteReadouts[]= CGUISpriteReadout::SpriteReadoutData onOffSpriteReadouts[]=
{ {
{ 0, FRM__CROSS, }, { false, FRM__CROSS, },
{ 1, FRM__TICK, }, { true, FRM__TICK, },
{ 0, 0, }, { 0, 0, },
}; };
int onOffValues[]= int musicStatus=false;
{ int sfxStatus=false;
0,1, int readyToExit=false;
0,
};
int musicStatus=0;
int sfxStatus=0;
@ -139,99 +135,59 @@ void CPaulScene::init()
{ {
CGUIGroupFrame *fr; CGUIGroupFrame *fr;
CGUITextBox *tb; CGUITextBox *tb;
CGUIButton *bu; CGUIToggleButton *tg;
CGUITextReadout *tr; CGUITextReadout *tr;
CGUISpriteReadout *sr; CGUISpriteReadout *sr;
s_fontBank.initialise(&standardFont); s_fontBank.initialise(&standardFont);
baseGUIObject=new ("Uber GUI object") CGUIControlFrame(); baseGUIObject=new ("Uber GUI object") CGUIControlFrame();
baseGUIObject->init(NULL,1); baseGUIObject->init(NULL);
baseGUIObject->setObjectXYWH(32,32,512-64,256-64); baseGUIObject->setObjectXYWH(32,32,512-64,256-64);
fr=new ("frame") CGUIGroupFrame(); fr=new ("frame") CGUIGroupFrame();
fr->init(baseGUIObject,2); fr->init(baseGUIObject);
fr->setObjectXYWH(10,10,448-20,30); fr->setObjectXYWH(10,10,448-20,30);
tb=new ("textbox") CGUITextBox(); tb=new ("textbox") CGUITextBox();
tb->init(fr,20); tb->init(fr);
tb->setObjectXYWH(0,0,300,30); tb->setObjectXYWH(0,0,300,30);
tb->setText(STR__PAULS_TEST__MUSIC); tb->setText(STR__PAULS_TEST__MUSIC);
bu=new ("button") CGUIButton(); tg=new ("togglebutton") CGUIToggleButton();
bu->init(fr,21); tg->init(fr);
// bu->setObjectXYWH(0,0,0,0); tg->setButtonTarget(&musicStatus);
bu->setButtonTarget(&musicStatus);
bu->setButtonData(onOffValues);
tr=new ("textreadout") CGUITextReadout(); tr=new ("textreadout") CGUITextReadout();
tr->init(fr,22); tr->init(fr);
tr->setObjectXYWH(300,0,128,30); tr->setObjectXYWH(300,0,128,30);
tr->setReadoutTarget(&musicStatus); tr->setReadoutTarget(&musicStatus);
tr->setReadoutData(onOffTextReadouts); tr->setReadoutData(onOffTextReadouts);
fr=new ("frame") CGUIGroupFrame(); fr=new ("frame") CGUIGroupFrame();
fr->init(baseGUIObject,3); fr->init(baseGUIObject);
fr->setObjectXYWH(10,50,448-20,30); fr->setObjectXYWH(10,50,448-20,30);
tb=new ("textbox") CGUITextBox(); tb=new ("textbox") CGUITextBox();
tb->init(fr,30); tb->init(fr);
tb->setObjectXYWH(0,0,300,30); tb->setObjectXYWH(0,0,300,30);
tb->setText(STR__PAULS_TEST__SFX); tb->setText(STR__PAULS_TEST__SFX);
bu=new ("button") CGUIButton(); tg=new ("togglebutton") CGUIToggleButton();
bu->init(fr,31); tg->init(fr);
// bu->setObjectXYWH(0,0,0,0); tg->setButtonTarget(&sfxStatus);
bu->setButtonTarget(&sfxStatus);
bu->setButtonData(onOffValues);
sr=new ("spritereadout") CGUISpriteReadout(); sr=new ("spritereadout") CGUISpriteReadout();
sr->init(fr,32); sr->init(fr);
sr->setObjectXYWH(300,0,128,30); sr->setObjectXYWH(300,0,128,30);
sr->setReadoutTarget(&sfxStatus); sr->setReadoutTarget(&sfxStatus);
sr->setReadoutData(onOffSpriteReadouts); sr->setReadoutData(onOffSpriteReadouts);
fr=new ("frame") CGUIGroupFrame(); fr=new ("frame") CGUIGroupFrame();
fr->init(baseGUIObject,3); fr->init(baseGUIObject);
fr->setObjectXYWH(10,90,448-20,30); fr->setObjectXYWH(10,155,448-20,30);
tb=new ("textbox") CGUITextBox(); tb=new ("textbox") CGUITextBox();
tb->init(fr,30); tb->init(fr);
tb->setObjectXYWH(0,0,300,30); tb->setObjectXYWH(0,0,428,30);
tb->setText(STR__PAULS_TEST__SFX); tb->setText(STR__PAULS_TEST__EXIT);
bu=new ("button") CGUIButton(); tg=new ("togglebutton") CGUIToggleButton();
bu->init(fr,31); tg->init(fr);
// bu->setObjectXYWH(0,0,0,0); tg->setButtonTarget(&readyToExit);
bu->setButtonTarget(&sfxStatus);
bu->setButtonData(onOffValues);
sr=new ("spritereadout") CGUISpriteReadout();
sr->init(fr,32);
sr->setObjectXYWH(300,0,128,30);
sr->setReadoutTarget(&sfxStatus);
sr->setReadoutData(onOffSpriteReadouts);
/*
tb=new ("textbox") CGUITextBox();
tb->init(baseGUIObject,1);
tb->setObjectXYWH(10,10,400,25);
tb->setText(STR__PAULS_TEST_STRING_1);
fr=new ("frame") CGUIGroupFrame();
fr->init(baseGUIObject,2);
fr->setObjectXYWH(10,40,400,25);
tb=new ("textbox") CGUITextBox();
tb->init(fr,20);
tb->setObjectXYWH(50,1,300,22);
tb->setText(STR__PAULS_TEST_STRING_1);
bu=new ("button") CGUIButton();
bu->init(fr,21);
bu->setObjectXYWH(50,1,10,10);
bu->setButtonTarget(&testValue);
bu->setButtonData(testButtonData);
tr=new ("textreadout") CGUITextReadout();
tr->init(baseGUIObject,3);
tr->setObjectXYWH(10,70,400,25);
tr->setReadoutTarget(&testValue);
tr->setReadoutData(testReadoutData);
*/
// Heh.. this'll actually work =) // Heh.. this'll actually work =)
// baseGUIObject->shutdown(); // baseGUIObject->shutdown();
@ -276,6 +232,7 @@ void CPaulScene::render()
} }
} }
if(baseGUIObject)
baseGUIObject->render(); baseGUIObject->render();
} }
@ -288,13 +245,15 @@ void CPaulScene::render()
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CPaulScene::think(int _frames) void CPaulScene::think(int _frames)
{ {
/* if(readyToExit)
CGUITextBox *tb; {
tb=(CGUITextBox *)guiGetItem(1); baseGUIObject->shutdown();
tb->setObjectWH(w,h); delete baseGUIObject;
tb->setText(str); baseGUIObject=NULL;
*/ readyToExit=0;
}
if(baseGUIObject)
baseGUIObject->think(_frames); baseGUIObject->think(_frames);
} }