This commit is contained in:
Paul 2001-07-31 16:01:36 +00:00
parent 5f78e761a6
commit 9b3fe9535e
6 changed files with 54 additions and 5 deletions

View file

@ -373,10 +373,10 @@ void CFrontEndOptions::init()
tb->init(fr); tb->init(fr);
tb->setObjectXYWH(176+26,45,150,15); tb->setObjectXYWH(176+26,45,150,15);
tb->setText(STR__FRONTEND__WEAPONCHANGE); tb->setText(STR__FRONTEND__WEAPONCHANGE);
CGUIFactory::createCycleButtonFrame(m_modeMenus[MODE__CONTROL], m_vibGUIOption=CGUIFactory::createCycleButtonFrame(m_modeMenus[MODE__CONTROL],
X_BORDER,Y_BORDER+90,OPTIONS_FRAME_W-(X_BORDER*2),25, X_BORDER,Y_BORDER+90,OPTIONS_FRAME_W-(X_BORDER*2),25,
STR__FRONTEND__VIBRATION, STR__FRONTEND__VIBRATION,
&m_vibrationStatus,s_vibrationValues,s_vibrationReadoutText); &m_vibrationStatus,s_vibrationValues,s_vibrationReadoutText);
// Populate SCREEN menu // Populate SCREEN menu
@ -573,6 +573,21 @@ void CFrontEndOptions::think(int _frames)
int i,j,button; int i,j,button;
// Hide the VIBRATION option if vibration not available
if(PadCanVibrate(0))
{
m_vibGUIOption->unhide();
}
else
{
if(m_vibGUIOption->isSelected())
{
m_modeMenus[MODE__CONTROL]->selectPreviousItem();
}
m_vibGUIOption->hide();
}
m_background->think(_frames); m_background->think(_frames);
if(!CFader::isFading()) if(!CFader::isFading())

View file

@ -151,6 +151,7 @@ private:
int m_speechVolume; int m_speechVolume;
int m_controlStyle; int m_controlStyle;
int m_vibrationStatus,m_lastVibrationStatus; int m_vibrationStatus,m_lastVibrationStatus;
class CGUIObject *m_vibGUIOption;
int m_screenXOff; int m_screenXOff;
int m_screenYOff; int m_screenYOff;

View file

@ -149,6 +149,7 @@ void CPauseMenu::init()
CGUITextReadout *tr; CGUITextReadout *tr;
fr=new ("frame") CGUIGroupFrame(); fr=new ("frame") CGUIGroupFrame();
m_vibGUIOption=fr;
fr->init(m_pauseGuiFrame); fr->init(m_pauseGuiFrame);
fr->setObjectXYWH((FRAME_WIDTH-TEXT_BOX_WIDTH)/2,ypos,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT); fr->setObjectXYWH((FRAME_WIDTH-TEXT_BOX_WIDTH)/2,ypos,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT);
tb=new ("textbox") CGUITextBox(); tb=new ("textbox") CGUITextBox();
@ -324,6 +325,24 @@ void CPauseMenu::think(int _frames)
{ {
if(m_active) if(m_active)
{ {
if(m_pauseGuiFrame->isSelected())
{
// Hide the VIBRATION option if vibration not available
if(PadCanVibrate(0))
{
m_vibGUIOption->unhide();
}
else
{
if(m_vibGUIOption->isSelected())
{
m_pauseGuiFrame->selectPreviousItem();
}
m_vibGUIOption->hide();
}
}
if(PadGetDown(0)&PAD_START) if(PadGetDown(0)&PAD_START)
{ {
if(!m_padDebounce) if(!m_padDebounce)

View file

@ -73,6 +73,7 @@ private:
class CGUIControlFrame *m_pauseGuiFrame; class CGUIControlFrame *m_pauseGuiFrame;
class CGUIControlFrame *m_confirmQuitGuiFrame; class CGUIControlFrame *m_confirmQuitGuiFrame;
class CGUIObject *m_vibGUIOption;
class FontBank *m_fontBank; class FontBank *m_fontBank;

View file

@ -208,6 +208,12 @@ int PadIsDualShock(int Port)
return (PadData[Port].IsAnalogue==2); return (PadData[Port].IsAnalogue==2);
} }
/*****************************************************************************/
int PadCanVibrate(int Port)
{
return PadIsConnected(Port)&&PadData[Port].CanVibrate;
}
/*****************************************************************************/ /*****************************************************************************/
void SetPadRescan() void SetPadRescan()
{ {
@ -293,6 +299,7 @@ int intensity;
if (Pad->Status == PadStateFindPad) if (Pad->Status == PadStateFindPad)
{ {
Pad->Send = 0; Pad->Send = 0;
Pad->CanVibrate=false;
} }
if ( Pad->Send==0 || PadRescan) if ( Pad->Send==0 || PadRescan)
{ {
@ -305,7 +312,11 @@ int intensity;
} }
if (Pad->Status == PadStateStable) if (Pad->Status == PadStateStable)
{ {
if (PadSetActAlign(PortShift,PadAlign)) Pad->Send = 1; if (PadSetActAlign(PortShift,PadAlign))
{
Pad->Send = 1;
Pad->CanVibrate=true;
}
} }
} }

View file

@ -64,6 +64,7 @@ typedef struct
u8 Send; u8 Send;
u8 IsAnalogue; u8 IsAnalogue;
bool Active; bool Active;
bool CanVibrate;
} sPadData; } sPadData;
struct VIBE_DATA struct VIBE_DATA
@ -89,6 +90,7 @@ u16 PadGetRepeat(int Port);
int PadIsDualShock(int Port); int PadIsDualShock(int Port);
int PadCanVibrate(int Port);
u16 PadGetPadAngle(u16 Pad, s16 angleAdjust); u16 PadGetPadAngle(u16 Pad, s16 angleAdjust);