BeginnerHelper fixes:

change IsPlayerEnabled() to IsHumanPlayer()
check to see if we can use the BeginnerHelper before attempting to use it.
Disable BeginnerHelper for non-Dance game types.
This commit is contained in:
Thad Ward
2003-08-31 07:28:19 +00:00
parent 9ead112062
commit 7f58205242
4 changed files with 44 additions and 30 deletions
+3 -7
View File
@@ -26,6 +26,7 @@
#include <math.h> // for fmodf #include <math.h> // for fmodf
#include "DancingCharacters.h" #include "DancingCharacters.h"
#include "arch/arch.h" #include "arch/arch.h"
#include "BeginnerHelper.h"
const float FADE_SECONDS = 1.0f; const float FADE_SECONDS = 1.0f;
@@ -68,16 +69,11 @@ Background::Background()
bool bOneOrMoreChars = false; bool bOneOrMoreChars = false;
bool bShowingBeginnerHelper = false; bool bShowingBeginnerHelper = false;
for( int p=0; p<NUM_PLAYERS; p++ ) for( int p=0; p<NUM_PLAYERS; p++ )
if( GAMESTATE->IsPlayerEnabled(p) ) if( GAMESTATE->IsHumanPlayer(p) )
{ {
bOneOrMoreChars = true; bOneOrMoreChars = true;
// if playing dance magic mode vs. the CPU, skip next condition
if (GAMESTATE->m_PlayMode == PLAY_MODE_RAVE)
continue;
//Disable dancing characters if BH will be showing. //Disable dancing characters if BH will be showing.
if( (PREFSMAN->m_bShowBeginnerHelper) || (GAMESTATE->m_pCurNotes[p]->GetDifficulty() == DIFFICULTY_BEGINNER ) ) if( (PREFSMAN->m_bShowBeginnerHelper) && BeginnerHelper::CanUse() && (GAMESTATE->m_pCurNotes[p]->GetDifficulty() == DIFFICULTY_BEGINNER ) )
bShowingBeginnerHelper = true; bShowingBeginnerHelper = true;
} }
+31 -13
View File
@@ -77,10 +77,20 @@ void BeginnerHelper::AddPlayer( int pn, NoteData *pNotes )
m_NoteData[pn].CopyAll( pNotes ); m_NoteData[pn].CopyAll( pNotes );
} }
void BeginnerHelper::Initialize( int iDancePadType ) bool BeginnerHelper::CanUse()
{
return ((GAMESTATE->m_CurGame == GAME_DANCE) &&
(DoesFileExist("Characters" SLASH "DancePad-DDR.txt")) &&
(DoesFileExist("Characters" SLASH "DancePads-DDR.txt")) );
}
bool BeginnerHelper::Initialize( int iDancePadType )
{ {
ASSERT( !m_bInitialized ); ASSERT( !m_bInitialized );
if (!CanUse()) // if we can't be used, bail now.
return false;
// Load the StepCircle, Background, and flash animation // Load the StepCircle, Background, and flash animation
m_sBackground.Load( THEME->GetPathToG("BeginnerHelper background") ); m_sBackground.Load( THEME->GetPathToG("BeginnerHelper background") );
m_sBackground.SetXY( CENTER_X, CENTER_Y); m_sBackground.SetXY( CENTER_X, CENTER_Y);
@@ -97,21 +107,29 @@ void BeginnerHelper::Initialize( int iDancePadType )
}*/ }*/
// Load the DancePad // Load the DancePad
switch(iDancePadType)
{
case 0: break; // No pad
case 1:
if (!DoesFileExist("Characters" SLASH "DancePad-DDR.txt") )
return false; // can't initialize without the required pad model. bail
m_mDancePad.LoadMilkshapeAscii( "Characters" SLASH "DancePad-DDR.txt" );
break;
case 2:
if (!DoesFileExist("Characters" SLASH "DancePads-DDR.txt") )
return false; // can't initialize without the required pad model. bail
m_mDancePad.LoadMilkshapeAscii( "Characters" SLASH "DancePads-DDR.txt" );
break;
}
m_mDancePad.SetHorizAlign( align_left ); m_mDancePad.SetHorizAlign( align_left );
m_mDancePad.SetRotationX( DANCEPAD_ANGLE ); m_mDancePad.SetRotationX( DANCEPAD_ANGLE );
m_mDancePad.SetX(HELPER_X); m_mDancePad.SetX(HELPER_X);
m_mDancePad.SetY(HELPER_Y); m_mDancePad.SetY(HELPER_Y);
m_mDancePad.SetZoom( 23 ); // Pad should always be 3 units bigger in zoom than the dancer. m_mDancePad.SetZoom( 23 ); // Pad should always be 3 units bigger in zoom than the dancer.
switch(iDancePadType)
{
case 0: break; // No pad
case 1:m_mDancePad.LoadMilkshapeAscii( "Characters" SLASH "DancePad-DDR.txt" ); break;
case 2:m_mDancePad.LoadMilkshapeAscii( "Characters" SLASH "DancePads-DDR.txt" ); break;
}
for( int pl=0; pl<NUM_PLAYERS; pl++ ) // Load players for( int pl=0; pl<NUM_PLAYERS; pl++ ) // Load players
{ {
if( !GAMESTATE->IsPlayerEnabled(pl)) if( !GAMESTATE->IsHumanPlayer(pl))
continue; continue;
// if there is no character set, try loading a random one. // if there is no character set, try loading a random one.
@@ -144,7 +162,7 @@ void BeginnerHelper::Initialize( int iDancePadType )
} }
} }
m_bInitialized = true; return (m_bInitialized = true);
} }
void BeginnerHelper::FlashOnce() void BeginnerHelper::FlashOnce()
@@ -178,7 +196,7 @@ void BeginnerHelper::DrawPrimitives()
m_sStepCircle[scd].Draw(); // Should be drawn before the dancer, but after the pad, so it is drawn over the pad and under the dancer. m_sStepCircle[scd].Draw(); // Should be drawn before the dancer, but after the pad, so it is drawn over the pad and under the dancer.
for( int pn=0; pn<NUM_PLAYERS; pn++ ) // Draw each dancer for( int pn=0; pn<NUM_PLAYERS; pn++ ) // Draw each dancer
if( GAMESTATE->IsPlayerEnabled(pn) ) if( GAMESTATE->IsHumanPlayer(pn) )
m_mDancer[pn].Draw(); m_mDancer[pn].Draw();
DISPLAY->SetLightOff( 0 ); DISPLAY->SetLightOff( 0 );
@@ -189,7 +207,7 @@ void BeginnerHelper::Step( int pn, int CSTEP )
{ {
LOG->Trace( "BeginnerHelper::Step()" ); LOG->Trace( "BeginnerHelper::Step()" );
// First make sure this player is on beginner mode and enabled... The difficulty check may be redundant, tho. // First make sure this player is on beginner mode and enabled... The difficulty check may be redundant, tho.
if( (GAMESTATE->IsPlayerEnabled(pn)) && (GAMESTATE->m_pCurNotes[pn]->GetDifficulty() == DIFFICULTY_BEGINNER) ) if( (GAMESTATE->IsHumanPlayer(pn)) && (GAMESTATE->m_pCurNotes[pn]->GetDifficulty() == DIFFICULTY_BEGINNER) )
{ {
ShowStepCircle( pn, CSTEP); ShowStepCircle( pn, CSTEP);
m_mDancer[pn].StopTweening(); m_mDancer[pn].StopTweening();
@@ -226,7 +244,7 @@ void BeginnerHelper::Update( float fDeltaTime )
for(int pn = 0; pn < NUM_PLAYERS; pn++ ) for(int pn = 0; pn < NUM_PLAYERS; pn++ )
{ {
if( !( GAMESTATE->IsPlayerEnabled(pn) && GAMESTATE->m_pCurNotes[pn]->GetDifficulty() == DIFFICULTY_BEGINNER) ) if( !( GAMESTATE->IsHumanPlayer(pn) && GAMESTATE->m_pCurNotes[pn]->GetDifficulty() == DIFFICULTY_BEGINNER) )
continue; // skip continue; // skip
if( (m_NoteData[pn].IsThereATapAtRow( BeatToNoteRowNotRounded((GAMESTATE->m_fSongBeat+0.01f)) ) ) ) if( (m_NoteData[pn].IsThereATapAtRow( BeatToNoteRowNotRounded((GAMESTATE->m_fSongBeat+0.01f)) ) ) )
@@ -261,7 +279,7 @@ void BeginnerHelper::Update( float fDeltaTime )
for( int pu=0; pu<NUM_PLAYERS; pu++ ) for( int pu=0; pu<NUM_PLAYERS; pu++ )
{ {
if(!GAMESTATE->IsPlayerEnabled(pu)) if(!GAMESTATE->IsHumanPlayer(pu))
continue; continue;
m_mDancer[pu].Update( beat ); //Update dancers m_mDancer[pu].Update( beat ); //Update dancers
+3 -1
View File
@@ -27,7 +27,9 @@ public:
ActorFrame m_afDancerSuite; // So we can easily rotate or whatever without disturbing the Background. ActorFrame m_afDancerSuite; // So we can easily rotate or whatever without disturbing the Background.
void FlashOnce(); void FlashOnce();
void Initialize( int iDancePadType ); bool Initialize( int iDancePadType );
bool IsInitialized() { return m_bInitialized; }
static bool CanUse();
void AddPlayer( int pn, NoteData *pNotes ); void AddPlayer( int pn, NoteData *pNotes );
void SetFlash(CString sFilename, float fX, float fY); void SetFlash(CString sFilename, float fX, float fY);
void ShowStepCircle( int pn, int CSTEP ); void ShowStepCircle( int pn, int CSTEP );
+7 -9
View File
@@ -779,25 +779,23 @@ void ScreenGameplay::LoadNextSong()
// Check to see if any players are in beginner mode. // Check to see if any players are in beginner mode.
// Note: steps can be different if turn modifiers are used. // Note: steps can be different if turn modifiers are used.
if( PREFSMAN->m_bShowBeginnerHelper ) if( PREFSMAN->m_bShowBeginnerHelper && BeginnerHelper::CanUse())
{ {
bool anybeginners = false; bool anybeginners = false;
for( int pb=0; pb<NUM_PLAYERS; pb++ ) for( int pb=0; pb<NUM_PLAYERS; pb++ )
if( GAMESTATE->IsPlayerEnabled(pb) && GAMESTATE->m_pCurNotes[pb]->GetDifficulty() == DIFFICULTY_BEGINNER ) if( GAMESTATE->IsHumanPlayer(pb) && GAMESTATE->m_pCurNotes[pb]->GetDifficulty() == DIFFICULTY_BEGINNER )
{ {
anybeginners = true; anybeginners = true;
m_BeginnerHelper.AddPlayer( pb, &m_Player[pb] ); m_BeginnerHelper.AddPlayer( pb, &m_Player[pb] );
} }
if(anybeginners) if(anybeginners && m_BeginnerHelper.Initialize( 2 )) // Init for doubles
{ {
m_Background.Unload(); // BeginnerHelper has it's own BG control. m_Background.Unload(); // BeginnerHelper has it's own BG control.
m_Background.StopAnimating(); m_Background.StopAnimating();
m_BeginnerHelper.SetX( CENTER_X );
m_BeginnerHelper.Initialize( 2 ); // Init for doubles m_BeginnerHelper.SetY( CENTER_Y );
m_BeginnerHelper.SetX( CENTER_X );
m_BeginnerHelper.SetY( CENTER_Y );
} }
else else
{ {