This commit is contained in:
Paul 2000-11-23 19:55:33 +00:00
parent 8a43e1a060
commit c88ba38b4d
5 changed files with 277 additions and 98 deletions

View File

@ -72,6 +72,18 @@ eng=B
eng=C eng=C
[STR__FRONTEND__D] [STR__FRONTEND__D]
eng=D eng=D
[STR__FRONTEND__UP]
eng=UP
[STR__FRONTEND__DOWN]
eng=DOWN
[STR__FRONTEND__LEFT]
eng=LEFT
[STR__FRONTEND__RIGHT]
eng=RIGHT
[STR__FRONTEND__JUMP]
eng=JUMP
[STR__FRONTEND__ACTION]
eng=ACTION
; Screen menu ; Screen menu

View File

@ -42,8 +42,8 @@
#include "gui\gframe.h" #include "gui\gframe.h"
#endif #endif
#ifndef __GUI_GREADOUT_H__ #ifndef __GUI_GTEXTBOX_H__
#include "gui\greadout.h" #include "gui\gtextbox.h"
#endif #endif
#ifndef __LOCALE_TEXTDBASE_H__ #ifndef __LOCALE_TEXTDBASE_H__
@ -54,6 +54,10 @@
#include "sound\sound.h" #include "sound\sound.h"
#endif #endif
#ifndef __PAD_PADS_H__
#include "pad\pads.h"
#endif
/* Std Lib /* Std Lib
------- */ ------- */
@ -65,6 +69,10 @@
#include <frontend.h> #include <frontend.h>
#endif #endif
#ifndef __SPR_UIGFX_H__
#include <uigfx.h>
#endif
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
Tyepdefs && Defines Tyepdefs && Defines
@ -82,12 +90,12 @@
Vars Vars
---- */ ---- */
int s_controlButtonData[]= int CFrontEndOptions::s_controlStyleValues[CPadConfig::NUM_PAD_CONFIGS+1]=
{ {
0,1,2,3, 0,1,2,3,
-1 -1
}; };
CGUITextReadout::TextReadoutData s_controlReadoutText[]= CGUITextReadout::TextReadoutData CFrontEndOptions::s_controlStyleReadoutText[CPadConfig::NUM_PAD_CONFIGS]=
{ {
{ 0,STR__FRONTEND__A }, { 0,STR__FRONTEND__A },
{ 1,STR__FRONTEND__B }, { 1,STR__FRONTEND__B },
@ -95,6 +103,41 @@ CGUITextReadout::TextReadoutData s_controlReadoutText[]=
{ 3,STR__FRONTEND__D }, { 3,STR__FRONTEND__D },
}; };
int CFrontEndOptions::s_buttonOrder[]=
{
CPadConfig::PAD_CFG_UP,
CPadConfig::PAD_CFG_DOWN,
CPadConfig::PAD_CFG_LEFT,
CPadConfig::PAD_CFG_RIGHT,
CPadConfig::PAD_CFG_JUMP,
CPadConfig::PAD_CFG_ACTION,
};
CGUISpriteReadout::SpriteReadoutData CFrontEndOptions::s_controlReadoutSprites[]=
{
{ ICON_UP,FRM__BUTU },
{ ICON_DOWN,FRM__BUTD },
{ ICON_LEFT,FRM__BUTL },
{ ICON_RIGHT,FRM__BUTR },
{ ICON_CROSS,FRM__BUTX },
{ ICON_CIRCLE,FRM__BUTC },
{ ICON_SQUARE,FRM__BUTS },
{ ICON_TRIANGLE,FRM__BUTT },
};
CFrontEndOptions::ButtonToIconMap CFrontEndOptions::s_controlMap[]=
{
{ PAD_UP, ICON_UP },
{ PAD_DOWN, ICON_DOWN },
{ PAD_LEFT, ICON_LEFT },
{ PAD_RIGHT, ICON_RIGHT },
{ PAD_CROSS, ICON_CROSS },
{ PAD_SQUARE, ICON_SQUARE },
{ PAD_CIRCLE, ICON_CIRCLE },
{ PAD_TRIANGLE, ICON_TRIANGLE },
};
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
Function: Function:
Purpose: Purpose:
@ -104,6 +147,10 @@ CGUITextReadout::TextReadoutData s_controlReadoutText[]=
void CFrontEndOptions::init() void CFrontEndOptions::init()
{ {
int i; int i;
CGUIGroupFrame *fr;
CGUITextBox *tb;
CGUISpriteReadout *sr;
m_background=new ("Options Background") CScrollyBackground(); m_background=new ("Options Background") CScrollyBackground();
m_background->init(); m_background->init();
@ -141,7 +188,64 @@ void CFrontEndOptions::init()
CGUIFactory::createCycleButtonFrame(m_modeMenus[MODE__CONTROL], CGUIFactory::createCycleButtonFrame(m_modeMenus[MODE__CONTROL],
X_BORDER,Y_BORDER,412-(X_BORDER*2),40, X_BORDER,Y_BORDER,412-(X_BORDER*2),40,
STR__FRONTEND__CONTROL_STYLE, STR__FRONTEND__CONTROL_STYLE,
&m_controlStyle,s_controlButtonData,s_controlReadoutText); &m_controlStyle,s_controlStyleValues,s_controlStyleReadoutText);
fr=new ("frame") CGUIGroupFrame();
fr->init(m_modeMenus[MODE__CONTROL]);
fr->setObjectXYWH(X_BORDER*2,65,412-(X_BORDER*4),60); //292
sr=new ("spritereadout") CGUISpriteReadout();
sr->init(fr);
sr->setObjectXYWH(0,0,26,15); //146
sr->setReadoutTarget(&m_controlIcons[CONTROL_UP]);
sr->setReadoutData(s_controlReadoutSprites);
tb=new ("textbox") CGUITextBox();
tb->init(fr);
tb->setObjectXYWH(26,0,120,15);
tb->setText(STR__FRONTEND__UP);
sr=new ("spritereadout") CGUISpriteReadout();
sr->init(fr);
sr->setObjectXYWH(0,15,26,15);
sr->setReadoutTarget(&m_controlIcons[CONTROL_DOWN]);
sr->setReadoutData(s_controlReadoutSprites);
tb=new ("textbox") CGUITextBox();
tb->init(fr);
tb->setObjectXYWH(26,15,120,15);
tb->setText(STR__FRONTEND__DOWN);
sr=new ("spritereadout") CGUISpriteReadout();
sr->init(fr);
sr->setObjectXYWH(0,30,26,15);
sr->setReadoutTarget(&m_controlIcons[CONTROL_LEFT]);
sr->setReadoutData(s_controlReadoutSprites);
tb=new ("textbox") CGUITextBox();
tb->init(fr);
tb->setObjectXYWH(26,30,120,15);
tb->setText(STR__FRONTEND__LEFT);
sr=new ("spritereadout") CGUISpriteReadout();
sr->init(fr);
sr->setObjectXYWH(0,45,26,15);
sr->setReadoutTarget(&m_controlIcons[CONTROL_RIGHT]);
sr->setReadoutData(s_controlReadoutSprites);
tb=new ("textbox") CGUITextBox();
tb->init(fr);
tb->setObjectXYWH(26,45,120,15);
tb->setText(STR__FRONTEND__RIGHT);
sr=new ("spritereadout") CGUISpriteReadout();
sr->init(fr);
sr->setObjectXYWH(146,0,26,15);
sr->setReadoutTarget(&m_controlIcons[CONTROL_JUMP]);
sr->setReadoutData(s_controlReadoutSprites);
tb=new ("textbox") CGUITextBox();
tb->init(fr);
tb->setObjectXYWH(146+26,0,120,15);
tb->setText(STR__FRONTEND__JUMP);
sr=new ("spritereadout") CGUISpriteReadout();
sr->init(fr);
sr->setObjectXYWH(146,15,26,15);
sr->setReadoutTarget(&m_controlIcons[CONTROL_ACTION]);
sr->setReadoutData(s_controlReadoutSprites);
tb=new ("textbox") CGUITextBox();
tb->init(fr);
tb->setObjectXYWH(146+26,15,120,15);
tb->setText(STR__FRONTEND__ACTION);
// Populate SCREEN menu // Populate SCREEN menu
@ -173,7 +277,7 @@ void CFrontEndOptions::init()
m_bgmVolume=CSoundMediator::getVolume(CSoundMediator::SONG); m_bgmVolume=CSoundMediator::getVolume(CSoundMediator::SONG);
m_sfxVolume=CSoundMediator::getVolume(CSoundMediator::SFX); m_sfxVolume=CSoundMediator::getVolume(CSoundMediator::SFX);
m_speechVolume=CSoundMediator::getVolume(CSoundMediator::SPEECH); m_speechVolume=CSoundMediator::getVolume(CSoundMediator::SPEECH);
m_controlStyle=0; m_controlStyle=CPadConfig::getConfig();
} }
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
@ -256,6 +360,9 @@ int oy=-1;
int os=0; int os=0;
void CFrontEndOptions::think(int _frames) void CFrontEndOptions::think(int _frames)
{ {
int i,j,button;
m_background->setSpeed(ox,oy); m_background->setSpeed(ox,oy);
m_background->setSpeedScale(os); m_background->setSpeedScale(os);
m_background->think(_frames); m_background->think(_frames);
@ -296,6 +403,20 @@ void CFrontEndOptions::think(int _frames)
m_closingDown=true; m_closingDown=true;
} }
// Change the icons on the control display
CPadConfig::setConfig(m_controlStyle);
for(i=0;i<CONTROL_COUNT;i++)
{
button=CPadConfig::getButton((CPadConfig::PAD_CFG)s_buttonOrder[i]);
for(j=0;j<ICON_COUNT;j++)
{
if(s_controlMap[j].m_padButton==button)
{
m_controlIcons[i]=s_controlMap[j].m_icon;
break;
}
}
}
} }
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------

View File

@ -22,6 +22,9 @@
#include "frontend\frontend.h" #include "frontend\frontend.h"
#endif #endif
#ifndef __GUI_GREADOUT_H__
#include "gui\greadout.h"
#endif
/* Std Lib /* Std Lib
------- */ ------- */
@ -56,7 +59,33 @@ private:
MODE__SCREEN, MODE__SCREEN,
MODE__SOUND, MODE__SOUND,
MODE__COUNT, MODE__COUNT
};
enum
{
CONTROL_UP,
CONTROL_DOWN,
CONTROL_LEFT,
CONTROL_RIGHT,
CONTROL_JUMP,
CONTROL_ACTION,
CONTROL_COUNT
};
enum
{
ICON_UP,
ICON_DOWN,
ICON_LEFT,
ICON_RIGHT,
ICON_CROSS,
ICON_CIRCLE,
ICON_SQUARE,
ICON_TRIANGLE,
ICON_COUNT
}; };
enum enum
@ -65,6 +94,12 @@ private:
Y_BORDER=20, Y_BORDER=20,
}; };
typedef struct
{
int m_padButton;
int m_icon;
} ButtonToIconMap;
class CScrollyBackground *m_background; class CScrollyBackground *m_background;
class CGUIControlFrame *m_modeMenus[MODE__COUNT]; class CGUIControlFrame *m_modeMenus[MODE__COUNT];
int m_mode,m_nextMode; int m_mode,m_nextMode;
@ -77,6 +112,14 @@ private:
int m_speechVolume; int m_speechVolume;
int m_controlStyle; int m_controlStyle;
static int s_controlStyleValues[];
static CGUITextReadout::TextReadoutData s_controlStyleReadoutText[];
static int s_buttonOrder[];
int m_controlIcons[CONTROL_COUNT];
static CGUISpriteReadout::SpriteReadoutData s_controlReadoutSprites[ICON_COUNT];
static ButtonToIconMap s_controlMap[ICON_COUNT];
}; };

View File

@ -18,39 +18,6 @@
/*****************************************************************************/ /*****************************************************************************/
static sPadConfigTable PadConfigDefault=
{
{
0, // PAD_CFG_NONE
PAD_LEFT, // PAD_CFG_LEFT
PAD_RIGHT, // PAD_CFG_RIGHT
PAD_UP, // PAD_CFG_UP
PAD_DOWN, // PAD_CFG_DOWN
PAD_START, // PAD_CFG_PAUSE,
PAD_CIRCLE, // PAD_CFG_ACTION,
PAD_CROSS, // PAD_CFG_JUMP,
}
};
static sPadConfigTable PadConfigAlternative=
{
{
0, // PAD_CFG_NONE
PAD_LEFT, // PAD_CFG_LEFT
PAD_RIGHT, // PAD_CFG_RIGHT
PAD_UP, // PAD_CFG_UP
PAD_DOWN, // PAD_CFG_DOWN
PAD_START, // PAD_CFG_PAUSE,
PAD_CROSS, // PAD_CFG_ACTION,
PAD_SQUARE, // PAD_CFG_JUMP,
}
};
/*****************************************************************************/ /*****************************************************************************/
sPadData PadData[2]; sPadData PadData[2];
u8 PadBuffer[2][34]; u8 PadBuffer[2][34];
@ -150,6 +117,8 @@ void PadsInit()
for(int i=0;i<2;i++) for(int i=0;i<2;i++)
for(int j=0;j<16;j++) for(int j=0;j<16;j++)
PadRepeatTimers[i][j]=0; PadRepeatTimers[i][j]=0;
CPadConfig::setConfig(0);
} }
/*****************************************************************************/ /*****************************************************************************/
@ -416,36 +385,73 @@ bool PadIsConnected(int port)
} }
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
sPadConfigTable *getPadConfigTable(int _padConfig)
{
if(_padConfig==0)return &PadConfigDefault;
if(_padConfig==1)return &PadConfigAlternative;
ASSERT(0);
return &PadConfigDefault;
}
/*****************************************************************************/ /*****************************************************************************/
int CPadConfig::s_configNumber=-1;
CPadConfig::sPadConfigTable *CPadConfig::s_cfg=NULL;
CPadConfig::CPadConfig() CPadConfig::sPadConfigTable CPadConfig::s_padConfigs[NUM_PAD_CONFIGS]=
{ {
Cfg=&PadConfigDefault; // Config A
{{
0, // PAD_CFG_NONE
PAD_LEFT, // PAD_CFG_LEFT
PAD_RIGHT, // PAD_CFG_RIGHT
PAD_UP, // PAD_CFG_UP
PAD_DOWN, // PAD_CFG_DOWN
PAD_CROSS, // PAD_CFG_ACTION
PAD_SQUARE, // PAD_CFG_JUMP
}},
// Config B
{{
0, // PAD_CFG_NONE
PAD_LEFT, // PAD_CFG_LEFT
PAD_RIGHT, // PAD_CFG_RIGHT
PAD_UP, // PAD_CFG_UP
PAD_DOWN, // PAD_CFG_DOWN
PAD_SQUARE, // PAD_CFG_ACTION
PAD_CROSS, // PAD_CFG_JUMP
}},
// Config C
{{
0, // PAD_CFG_NONE
PAD_LEFT, // PAD_CFG_LEFT
PAD_RIGHT, // PAD_CFG_RIGHT
PAD_UP, // PAD_CFG_UP
PAD_DOWN, // PAD_CFG_DOWN
PAD_CIRCLE, // PAD_CFG_ACTION
PAD_TRIANGLE, // PAD_CFG_JUMP
}},
// Config D
{{
0, // PAD_CFG_NONE
PAD_SQUARE, // PAD_CFG_LEFT
PAD_CIRCLE, // PAD_CFG_RIGHT
PAD_TRIANGLE, // PAD_CFG_UP
PAD_CROSS, // PAD_CFG_DOWN
PAD_LEFT, // PAD_CFG_ACTION
PAD_DOWN, // PAD_CFG_JUMP
}},
};
void CPadConfig::setConfig(int _config)
{
ASSERT(_config<NUM_PAD_CONFIGS);
s_configNumber=_config;
s_cfg=&s_padConfigs[_config];
} }
void CPadConfig::SetConfig(sPadConfigTable *NewCfg) int CPadConfig::getConfig()
{ {
Cfg=NewCfg; return s_configNumber;
} }
int CPadConfig::GetButton(PAD_CFG But) int CPadConfig::getButton(PAD_CFG _but)
{ {
return(Cfg->Buttons[But]); return(s_cfg->m_buttons[_but]);
} }

View File

@ -98,49 +98,46 @@ void PAD_SetVibrationEnvelope( int Port, int count, const VIBE_DATA * data, int
/*****************************************************************************/ /*****************************************************************************/
#define PAD_ACCEPT PAD_CROSS
#define PAD_CANCEL PAD_TRIANGLE
#define PAD_UI_LEFT PAD_LEFT
#define PAD_UI_RIGHT PAD_RIGHT
#define PAD_UI_UP PAD_UP
#define PAD_UI_DOWN PAD_DOWN
enum PAD_CFG
{
PAD_CFG_NONE=0,
PAD_CFG_LEFT,
PAD_CFG_RIGHT,
PAD_CFG_UP,
PAD_CFG_DOWN,
PAD_CFG_PAUSE,
PAD_CFG_ACTION,
PAD_CFG_JUMP,
PAD_CFG_MAX
};
struct sPadConfigTable
{
u16 Buttons[PAD_CFG_MAX];
};
class CPadConfig class CPadConfig
{ {
public: public:
CPadConfig(); enum
void SetConfig(sPadConfigTable *NewCfg); {
int GetButton(PAD_CFG But); NUM_PAD_CONFIGS=4,
};
enum PAD_CFG
{
PAD_CFG_NONE=0,
PAD_CFG_LEFT,
PAD_CFG_RIGHT,
PAD_CFG_UP,
PAD_CFG_DOWN,
PAD_CFG_ACTION,
PAD_CFG_JUMP,
PAD_CFG_MAX
};
static void setConfig(int _config);
static int getConfig();
static int getButton(PAD_CFG _but);
private: private:
sPadConfigTable *Cfg; struct sPadConfigTable
{
u16 m_buttons[PAD_CFG_MAX];
};
static int s_configNumber;
static sPadConfigTable *s_cfg;
static sPadConfigTable s_padConfigs[NUM_PAD_CONFIGS];
}; };
extern sPadConfigTable *getPadConfigTable(int _padConfig);
/*****************************************************************************/ /*****************************************************************************/