From dbd7d3cf31e7ddca1e87ed6f69ecbad3eef9565d Mon Sep 17 00:00:00 2001 From: Paul Date: Fri, 17 Aug 2001 15:54:50 +0000 Subject: [PATCH] --- data/translations/text.dat | 2 + source/frontend/options.cpp | 166 +++++++++++++++++++++++++----------- source/frontend/options.h | 1 + source/gui/gfactory.cpp | 19 ++--- source/gui/gfactory.h | 19 +++-- source/gui/gframe.cpp | 25 ++++++ source/gui/gframe.h | 1 + source/gui/gui.h | 5 +- 8 files changed, 171 insertions(+), 67 deletions(-) diff --git a/data/translations/text.dat b/data/translations/text.dat index b54fc6a2b..31a6e3f0f 100644 --- a/data/translations/text.dat +++ b/data/translations/text.dat @@ -53,6 +53,8 @@ eng=OPTIONS [STR__FRONTEND__CROSS_TO_SELECT] eng=Select +[STR__FRONTEND__ARROWS_TO_ADJUST] +eng=Adjust [STR__FRONTEND__TRIANGLE_TO_GO_BACK] eng=Back diff --git a/source/frontend/options.cpp b/source/frontend/options.cpp index a91cbbf41..6a640c9d4 100644 --- a/source/frontend/options.cpp +++ b/source/frontend/options.cpp @@ -197,6 +197,17 @@ int CFrontEndOptions::s_loadModeTextIds[LOADMODE__COUNT]= }; + +enum +{ + ID_SCREEN_X_SLIDER=10, + ID_SCREEN_Y_SLIDER, + ID_SOUND_BGM_SLIDER, + ID_SOUND_SFX_SLIDER, + ID_SOUND_SPEECH_SLIDER, +}; + + /*---------------------------------------------------------------------- Function: Purpose: @@ -387,25 +398,30 @@ void CFrontEndOptions::init() CGUIFactory::createSliderButtonFrame(m_modeMenus[MODE__SCREEN], X_BORDER,Y_BORDER,OPTIONS_FRAME_W-(X_BORDER*2),35, STR__FRONTEND__HORIZONTAL_POSITION, - &m_screenXOff,0,64); + &m_screenXOff,0,64, + ID_SCREEN_X_SLIDER); CGUIFactory::createSliderButtonFrame(m_modeMenus[MODE__SCREEN], X_BORDER,Y_BORDER+40,OPTIONS_FRAME_W-(X_BORDER*2),35, STR__FRONTEND__VERTICAL_POSITION, - &m_screenYOff,0,32); + &m_screenYOff,0,32, + ID_SCREEN_Y_SLIDER); // Populate SOUND menu CGUIFactory::createSliderButtonFrame(m_modeMenus[MODE__SOUND], X_BORDER,Y_BORDER,OPTIONS_FRAME_W-(X_BORDER*2),35, STR__FRONTEND__BGM, - &m_bgmVolume,CSoundMediator::MIN_VOLUME,CSoundMediator::MAX_VOLUME); + &m_bgmVolume,CSoundMediator::MIN_VOLUME,CSoundMediator::MAX_VOLUME, + ID_SOUND_BGM_SLIDER); CGUIFactory::createSliderButtonFrame(m_modeMenus[MODE__SOUND], X_BORDER,Y_BORDER+35,OPTIONS_FRAME_W-(X_BORDER*2),35, STR__FRONTEND__SFX, - &m_sfxVolume,CSoundMediator::MIN_VOLUME,CSoundMediator::MAX_VOLUME); + &m_sfxVolume,CSoundMediator::MIN_VOLUME,CSoundMediator::MAX_VOLUME, + ID_SOUND_SFX_SLIDER); CGUIFactory::createSliderButtonFrame(m_modeMenus[MODE__SOUND], X_BORDER,Y_BORDER+70,OPTIONS_FRAME_W-(X_BORDER*2),35, STR__FRONTEND__SPEECH, - &m_speechVolume,CSoundMediator::MIN_VOLUME,CSoundMediator::MAX_VOLUME); + &m_speechVolume,CSoundMediator::MIN_VOLUME,CSoundMediator::MAX_VOLUME, + ID_SOUND_SPEECH_SLIDER); // Memcard menu m_loadTextBox=new ("textbox") CGUITextBox(); @@ -532,7 +548,6 @@ void CFrontEndOptions::render() { POLY_G4 *g4; int rgb[3]; - int renderButtons=true; rh+=rspeed; rh&=4095; @@ -553,35 +568,7 @@ rh&=4095; m_background->render(); // Button prompts - switch(m_mode) - { - case MODE__OPTIONS: - case MODE__CONTROL: - case MODE__SCREEN: - case MODE__SOUND: - break; - case MODE__LOAD: - switch(m_loadMode) - { - case LOADMODE__INIT: - case LOADMODE__CHECKING: - case LOADMODE__LOADING: - renderButtons=false; - break; - - case LOADMODE__UNFORMATTED: - case LOADMODE__NODATA: - case LOADMODE__NOCARD: - case LOADMODE__CONFIRMLOAD: - case LOADMODE__LOADOK: - case LOADMODE__LOADERROR: - break; - } - } - if(renderButtons) - { - renderButtonPrompts(); - } + renderButtonPrompts(); // UI if(m_mode==MODE__LOAD) @@ -974,22 +961,103 @@ void CFrontEndOptions::setLoadMode(int _newMode) ---------------------------------------------------------------------- */ void CFrontEndOptions::renderButtonPrompts() { - sFrameHdr *fh1,*fh2; - int x,y,width; + CGUIObject::GUIId id; + int renderCross=false; + int renderArrows=false; + int renderTriangle=false; + sFrameHdr *fh1,*fh2; + int x,y,width; - fh1=m_spriteBank->getFrameHeader(FRM__BUTX); - width=fh1->W+OPTIONS_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT+m_fontBank->getStringWidth(STR__FRONTEND__CROSS_TO_SELECT); - x=128-(width/2); - m_spriteBank->printFT4(fh1,x,OPTIONS_INSTRUCTIONS_Y_POS+OPTIONS_INSTRUCTIONS_BUTTON_Y_OFFSET,0,0,0); - x+=fh1->W+OPTIONS_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT; - m_fontBank->print(x,OPTIONS_INSTRUCTIONS_Y_POS,STR__FRONTEND__CROSS_TO_SELECT); - fh1=m_spriteBank->getFrameHeader(FRM__BUTT); - width=fh1->W+OPTIONS_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT+m_fontBank->getStringWidth(STR__FRONTEND__TRIANGLE_TO_GO_BACK); - x=256+128-(width/2); - m_spriteBank->printFT4(fh1,x,OPTIONS_INSTRUCTIONS_Y_POS+OPTIONS_INSTRUCTIONS_BUTTON_Y_OFFSET,0,0,0); - x+=fh1->W+OPTIONS_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT; - m_fontBank->print(x,OPTIONS_INSTRUCTIONS_Y_POS,STR__FRONTEND__TRIANGLE_TO_GO_BACK); + // What shall we draw today? + switch(m_mode) + { + case MODE__OPTIONS: + case MODE__CONTROL: + renderCross=true; + renderTriangle=true; + break; + + case MODE__SCREEN: + id=m_modeMenus[MODE__SCREEN]->getIdOfSelectedItem(); + if(id==ID_SCREEN_X_SLIDER||id==ID_SCREEN_Y_SLIDER) + { + renderArrows=true; + } + else + { + renderCross=true; + } + renderTriangle=true; + break; + + case MODE__SOUND: + id=m_modeMenus[MODE__SOUND]->getIdOfSelectedItem(); + if(id==ID_SOUND_BGM_SLIDER||id==ID_SOUND_SFX_SLIDER||id==ID_SOUND_SPEECH_SLIDER) + { + renderArrows=true; + } + else + { + renderCross=true; + } + renderTriangle=true; + break; + + case MODE__LOAD: + switch(m_loadMode) + { + case LOADMODE__INIT: + case LOADMODE__CHECKING: + case LOADMODE__LOADING: + break; + + case LOADMODE__UNFORMATTED: + case LOADMODE__NODATA: + case LOADMODE__NOCARD: + case LOADMODE__CONFIRMLOAD: + case LOADMODE__LOADOK: + case LOADMODE__LOADERROR: + renderCross=true; + renderTriangle=true; + break; + } + break; + } + + + if(renderCross) + { + fh1=m_spriteBank->getFrameHeader(FRM__BUTX); + width=fh1->W+OPTIONS_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT+m_fontBank->getStringWidth(STR__FRONTEND__CROSS_TO_SELECT); + x=128-(width/2); + m_spriteBank->printFT4(fh1,x,OPTIONS_INSTRUCTIONS_Y_POS+OPTIONS_INSTRUCTIONS_BUTTON_Y_OFFSET,0,0,0); + x+=fh1->W+OPTIONS_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT; + m_fontBank->print(x,OPTIONS_INSTRUCTIONS_Y_POS,STR__FRONTEND__CROSS_TO_SELECT); + } + + if(renderArrows) + { + fh1=m_spriteBank->getFrameHeader(FRM__BUTL); + fh2=m_spriteBank->getFrameHeader(FRM__BUTR); + width=fh1->W+OPTIONS_INSTRUCTIONS_GAP_BETWEEN_BUTTONS+fh2->W+OPTIONS_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT+m_fontBank->getStringWidth(STR__FRONTEND__ARROWS_TO_ADJUST); + x=128-(width/2); + m_spriteBank->printFT4(fh1,x,OPTIONS_INSTRUCTIONS_Y_POS+OPTIONS_INSTRUCTIONS_BUTTON_Y_OFFSET,0,0,0); + x+=fh1->W+OPTIONS_INSTRUCTIONS_GAP_BETWEEN_BUTTONS; + m_spriteBank->printFT4(fh2,x,OPTIONS_INSTRUCTIONS_Y_POS+OPTIONS_INSTRUCTIONS_BUTTON_Y_OFFSET,0,0,0); + x+=fh2->W+OPTIONS_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT; + m_fontBank->print(x,OPTIONS_INSTRUCTIONS_Y_POS,STR__FRONTEND__ARROWS_TO_ADJUST); + } + + if(renderTriangle) + { + fh1=m_spriteBank->getFrameHeader(FRM__BUTT); + width=fh1->W+OPTIONS_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT+m_fontBank->getStringWidth(STR__FRONTEND__TRIANGLE_TO_GO_BACK); + x=256+128-(width/2); + m_spriteBank->printFT4(fh1,x,OPTIONS_INSTRUCTIONS_Y_POS+OPTIONS_INSTRUCTIONS_BUTTON_Y_OFFSET,0,0,0); + x+=fh1->W+OPTIONS_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT; + m_fontBank->print(x,OPTIONS_INSTRUCTIONS_Y_POS,STR__FRONTEND__TRIANGLE_TO_GO_BACK); + } } /*=========================================================================== diff --git a/source/frontend/options.h b/source/frontend/options.h index 6bc40faa2..2424ec091 100644 --- a/source/frontend/options.h +++ b/source/frontend/options.h @@ -124,6 +124,7 @@ private: X_BORDER=30, Y_BORDER=10, OPTIONS_INSTRUCTIONS_Y_POS=185, + OPTIONS_INSTRUCTIONS_GAP_BETWEEN_BUTTONS=5, OPTIONS_INSTRUCTIONS_GAP_BETWEEN_BUTTONS_AND_TEXT=10, OPTIONS_INSTRUCTIONS_BUTTON_Y_OFFSET=4, }; diff --git a/source/gui/gfactory.cpp b/source/gui/gfactory.cpp index 7e38a918f..6a4871416 100644 --- a/source/gui/gfactory.cpp +++ b/source/gui/gfactory.cpp @@ -18,10 +18,6 @@ #include "gui\gfactory.h" -#ifndef __GUI_GUI_H__ -#include "gui\gui.h" -#endif - #ifndef __GUI_GTEXTBOX_H__ #include "gui\gtextbox.h" #endif @@ -74,14 +70,15 @@ CGUIObject *CGUIFactory::createValueButtonFrame(class CGUIObject *_parent, int _x,int _y,int _w,int _h, int _textId, - int *_target,int _value) + int *_target,int _value, + CGUIObject::GUIId _id) { CGUIGroupFrame *fr; CGUITextBox *tb; CGUIValueButton *vb; fr=new ("frame") CGUIGroupFrame(); - fr->init(_parent); + fr->init(_parent,_id); fr->setObjectXYWH(_x,_y,_w,_h); tb=new ("textbox") CGUITextBox(); tb->init(fr); @@ -104,7 +101,8 @@ CGUIObject *CGUIFactory::createValueButtonFrame(class CGUIObject *_parent, CGUIObject *CGUIFactory::createCycleButtonFrame(class CGUIObject *_parent, int _x,int _y,int _w,int _h, int _textId, - int *_target,int *_data,CGUITextReadout::TextReadoutData *_readoutData) + int *_target,int *_data,CGUITextReadout::TextReadoutData *_readoutData, + CGUIObject::GUIId _id) { CGUIGroupFrame *fr; CGUITextBox *tb; @@ -112,7 +110,7 @@ CGUIObject *CGUIFactory::createCycleButtonFrame(class CGUIObject *_parent, CGUITextReadout *tr; fr=new ("frame") CGUIGroupFrame(); - fr->init(_parent); + fr->init(_parent,_id); fr->setObjectXYWH(_x,_y,_w,_h); tb=new ("textbox") CGUITextBox(); tb->init(fr); @@ -140,7 +138,8 @@ CGUIObject *CGUIFactory::createCycleButtonFrame(class CGUIObject *_parent, CGUIObject *CGUIFactory::createSliderButtonFrame(class CGUIObject *_parent, int _x,int _y,int _w,int _h, int _textId, - int *_target,int _min,int _max) + int *_target,int _min,int _max, + CGUIObject::GUIId _id) { CGUIGroupFrame *fr; CGUITextBox *tb; @@ -148,7 +147,7 @@ CGUIObject *CGUIFactory::createSliderButtonFrame(class CGUIObject *_parent, CGUIBarReadout *br; fr=new ("frame") CGUIGroupFrame(); - fr->init(_parent); + fr->init(_parent,_id); fr->setObjectXYWH(_x,_y,_w,_h); tb=new ("textbox") CGUITextBox(); tb->init(fr); diff --git a/source/gui/gfactory.h b/source/gui/gfactory.h index 4a31276e1..d42a750fa 100644 --- a/source/gui/gfactory.h +++ b/source/gui/gfactory.h @@ -20,6 +20,10 @@ Includes -------- */ +#ifndef __GUI_GUI_H__ +#include "gui\gui.h" +#endif + #ifndef __GUI_GREADOUT_H__ #include "gui\greadout.h" #endif @@ -40,22 +44,25 @@ class CGUIFactory { public: // Creates a frame containing a value button with text label - static CGUIObject *createValueButtonFrame(class CGUIObject *_parent, + static CGUIObject *createValueButtonFrame(CGUIObject *_parent, int _x,int _y,int _w,int _h, int _textId, - int *_target,int _value); + int *_target,int _value, + CGUIObject::GUIId _id=CGUIObject::noId); // Creates a frame containing a cycle button, text readout and text label - static CGUIObject *createCycleButtonFrame(class CGUIObject *_parent, + static CGUIObject *createCycleButtonFrame(CGUIObject *_parent, int _x,int _y,int _w,int _h, int _textId, - int *_target,int *_data,CGUITextReadout::TextReadoutData *_readoutData); + int *_target,int *_data,CGUITextReadout::TextReadoutData *_readoutData, + CGUIObject::GUIId _id=CGUIObject::noId); // Creates a frame containing a slider button, readout and text label - static CGUIObject *createSliderButtonFrame(class CGUIObject *_parent, + static CGUIObject *createSliderButtonFrame(CGUIObject *_parent, int _x,int _y,int _w,int _h, int _textId, - int *_target,int _min,int _max); + int *_target,int _min,int _max, + CGUIObject::GUIId _id=CGUIObject::noId); }; diff --git a/source/gui/gframe.cpp b/source/gui/gframe.cpp index b84acd8ad..2c56d1637 100644 --- a/source/gui/gframe.cpp +++ b/source/gui/gframe.cpp @@ -282,6 +282,31 @@ void CGUIControlFrame::selectNextItem() } +/*---------------------------------------------------------------------- + Function: + Purpose: + Params: + Returns: + ---------------------------------------------------------------------- */ +CGUIObject::GUIId CGUIControlFrame::getIdOfSelectedItem() +{ + CGUIObject *pGUI; + + pGUI=getChild(); + if(pGUI) + { + while(!pGUI->isSelected()) + { + ASSERT(pGUI); + pGUI=pGUI->getNext(); + } + return pGUI->getId(); + } + + return CGUIObject::noId; +} + + /*---------------------------------------------------------------------- Function: Purpose: diff --git a/source/gui/gframe.h b/source/gui/gframe.h index 1c713b0f0..753f60551 100644 --- a/source/gui/gframe.h +++ b/source/gui/gframe.h @@ -61,6 +61,7 @@ public: void selectPreviousItem(); void selectNextItem(); + GUIId getIdOfSelectedItem(); protected: GUI_FLAGS getInitialFlags() {return FLAG_DRAWBORDER;} diff --git a/source/gui/gui.h b/source/gui/gui.h index 4698ecdd2..42413fd3b 100644 --- a/source/gui/gui.h +++ b/source/gui/gui.h @@ -95,8 +95,9 @@ public: int getOt() {return 0;} -// PKG - Do we really need ids!? -int getId() {return m_id;} + // PKG - Do we really need ids!? + // Yes! =) + int getId() {return m_id;} protected: