finalize dancing character directory structure

better camera movements
animated face textures
This commit is contained in:
Chris Danford
2003-06-09 19:22:04 +00:00
parent dd8d872d28
commit b2f5393026
14 changed files with 295 additions and 132 deletions
+16 -28
View File
@@ -18,6 +18,7 @@
#include "ThemeManager.h"
#include "AnnouncerManager.h"
#include "GameState.h"
#include "Character.h"
#define TITLE_ON_COMMAND( p ) THEME->GetMetric ("ScreenSelectCharacter",ssprintf("TitleP%dOnCommand",p+1))
@@ -48,6 +49,13 @@ ScreenSelectCharacter::ScreenSelectCharacter() : Screen("ScreenSelectCharacter")
{
LOG->Trace( "ScreenSelectCharacter::ScreenSelectCharacter()" );
if( GAMESTATE->m_pCharacters.empty() )
{
HandleScreenMessage( SM_GoToNextScreen );
return;
}
m_Menu.Load( "ScreenSelectCharacter" );
this->AddChild( &m_Menu );
@@ -63,15 +71,6 @@ ScreenSelectCharacter::ScreenSelectCharacter() : Screen("ScreenSelectCharacter")
}
CStringArray asCharacterPaths;
GetDirListing( "Characters/*.ini", asCharacterPaths, false, true );
for( unsigned i=0; i<asCharacterPaths.size(); i++ )
{
m_vCharacters.resize( m_vCharacters.size()+1 );
m_vCharacters[i].Load( asCharacterPaths[i] );
}
for( p=0; p<NUM_PLAYERS; p++ )
{
m_sprTitle[p].Load( THEME->GetPathToG("ScreenSelectCharacter title 2x2") );
@@ -220,21 +219,13 @@ void ScreenSelectCharacter::AfterValueChange( PlayerNumber pn )
case CHOOSING_CPU_CHARACTER:
case CHOOSING_HUMAN_CHARACTER:
{
Character& character = m_vCharacters[ m_iSelectedCharacter[pnAffected] ];
CStringArray asGraphicPaths;
GetDirListing( "Characters/" + character.m_sFileName + ".png", asGraphicPaths, false, true );
GetDirListing( "Characters/" + character.m_sFileName + ".jpg", asGraphicPaths, false, true );
GetDirListing( "Characters/" + character.m_sFileName + ".gif", asGraphicPaths, false, true );
GetDirListing( "Characters/" + character.m_sFileName + ".bmp", asGraphicPaths, false, true );
if( asGraphicPaths.empty() )
m_sprCharacter[pnAffected].UnloadTexture();
else
m_sprCharacter[pnAffected].Load( asGraphicPaths[0] );
Character* pChar = GAMESTATE->m_pCharacters[ m_iSelectedCharacter[pnAffected] ];
m_sprCharacter[pnAffected].UnloadTexture();
m_sprCharacter[pnAffected].Load( pChar->GetCardPath() );
for( int i=0; i<NUM_ATTACK_LEVELS; i++ )
for( int j=0; j<NUM_ATTACKS_PER_LEVEL; j++ )
m_AttackIcons[pnAffected][i][j].Load( pnAffected, character.m_sAttacks[i][j] );
m_AttackIcons[pnAffected][i][j].Load( pnAffected, pChar->m_sAttacks[i][j] );
}
break;
case FINISHED_CHOOSING:
@@ -274,8 +265,8 @@ void ScreenSelectCharacter::Move( PlayerNumber pn, int deltaValue )
{
case CHOOSING_CPU_CHARACTER:
case CHOOSING_HUMAN_CHARACTER:
m_iSelectedCharacter[pnAffected] = (m_iSelectedCharacter[pnAffected]+deltaValue)+m_vCharacters.size();
m_iSelectedCharacter[pnAffected] %= m_vCharacters.size();
m_iSelectedCharacter[pnAffected] = (m_iSelectedCharacter[pnAffected]+deltaValue)+GAMESTATE->m_pCharacters.size();
m_iSelectedCharacter[pnAffected] %= GAMESTATE->m_pCharacters.size();
AfterValueChange(pn);
m_soundChange.PlayRandom();
break;
@@ -312,11 +303,8 @@ void ScreenSelectCharacter::MenuStart( PlayerNumber pn )
{
for( int p=0; p<NUM_PLAYERS; p++ )
{
Character& character = m_vCharacters[ m_iSelectedCharacter[p] ];
GAMESTATE->m_sCharacterName[p] = character.m_sFileName;
for( int i=0; i<NUM_ATTACK_LEVELS; i++ )
for( int j=0; j<NUM_ATTACKS_PER_LEVEL; j++ )
GAMESTATE->m_sAttacks[p][i][j] = character.m_sAttacks[i][j];
Character* pChar = GAMESTATE->m_pCharacters[ m_iSelectedCharacter[p] ];
GAMESTATE->m_pCurCharacters[p] = pChar;
}
m_Menu.m_MenuTimer.Stop();