move Character stuff out of messy GAMESTATE and into CHARMAN
This commit is contained in:
@@ -7,7 +7,7 @@
|
|||||||
#include "Course.h"
|
#include "Course.h"
|
||||||
#include "Character.h"
|
#include "Character.h"
|
||||||
#include "ThemeMetric.h"
|
#include "ThemeMetric.h"
|
||||||
#include "GameState.h"
|
#include "CharacterManager.h"
|
||||||
|
|
||||||
ThemeMetric<bool> SCROLL_RANDOM ("Banner","ScrollRandom");
|
ThemeMetric<bool> SCROLL_RANDOM ("Banner","ScrollRandom");
|
||||||
ThemeMetric<bool> SCROLL_ROULETTE ("Banner","ScrollRoulette");
|
ThemeMetric<bool> SCROLL_ROULETTE ("Banner","ScrollRoulette");
|
||||||
@@ -145,7 +145,7 @@ void Banner::LoadCourseFallback()
|
|||||||
|
|
||||||
void Banner::LoadCourseFallbackCharacterIcon()
|
void Banner::LoadCourseFallbackCharacterIcon()
|
||||||
{
|
{
|
||||||
Character *pCharacter = GAMESTATE->GetDefaultCharacter();
|
Character *pCharacter = CHARMAN->GetDefaultCharacter();
|
||||||
if( pCharacter && !pCharacter->GetIconPath().empty() )
|
if( pCharacter && !pCharacter->GetIconPath().empty() )
|
||||||
Load( pCharacter->GetIconPath() );
|
Load( pCharacter->GetIconPath() );
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -0,0 +1,156 @@
|
|||||||
|
#include "global.h"
|
||||||
|
#include "CharacterManager.h"
|
||||||
|
#include "Character.h"
|
||||||
|
#include "GameState.h"
|
||||||
|
|
||||||
|
#define CHARACTERS_DIR "/Characters/"
|
||||||
|
|
||||||
|
CharacterManager* CHARMAN = NULL; // global object accessable from anywhere in the program
|
||||||
|
|
||||||
|
CharacterManager::CharacterManager()
|
||||||
|
{
|
||||||
|
for( unsigned i=0; i<m_pCharacters.size(); i++ )
|
||||||
|
SAFE_DELETE( m_pCharacters[i] );
|
||||||
|
m_pCharacters.clear();
|
||||||
|
|
||||||
|
CStringArray as;
|
||||||
|
GetDirListing( CHARACTERS_DIR "*", as, true, true );
|
||||||
|
StripCvs( as );
|
||||||
|
|
||||||
|
bool FoundDefault = false;
|
||||||
|
for( unsigned i=0; i<as.size(); i++ )
|
||||||
|
{
|
||||||
|
CString sCharName, sDummy;
|
||||||
|
splitpath(as[i], sDummy, sCharName, sDummy);
|
||||||
|
sCharName.MakeLower();
|
||||||
|
|
||||||
|
if( sCharName.CompareNoCase("default")==0 )
|
||||||
|
FoundDefault = true;
|
||||||
|
|
||||||
|
Character* pChar = new Character;
|
||||||
|
if( pChar->Load( as[i] ) )
|
||||||
|
m_pCharacters.push_back( pChar );
|
||||||
|
else
|
||||||
|
delete pChar;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( !FoundDefault )
|
||||||
|
RageException::Throw( "'Characters/default' is missing." );
|
||||||
|
|
||||||
|
// If FoundDefault, then we're not empty. -Chris
|
||||||
|
// if( m_pCharacters.empty() )
|
||||||
|
// RageException::Throw( "Couldn't find any character definitions" );
|
||||||
|
}
|
||||||
|
|
||||||
|
CharacterManager::~CharacterManager()
|
||||||
|
{
|
||||||
|
for( unsigned i=0; i<m_pCharacters.size(); i++ )
|
||||||
|
SAFE_DELETE( m_pCharacters[i] );
|
||||||
|
}
|
||||||
|
|
||||||
|
void CharacterManager::GetCharacters( vector<Character*> &apCharactersOut )
|
||||||
|
{
|
||||||
|
for( unsigned i=0; i<m_pCharacters.size(); i++ )
|
||||||
|
if( !m_pCharacters[i]->IsDefaultCharacter() )
|
||||||
|
apCharactersOut.push_back( m_pCharacters[i] );
|
||||||
|
}
|
||||||
|
|
||||||
|
Character* CharacterManager::GetRandomCharacter()
|
||||||
|
{
|
||||||
|
vector<Character*> apCharacters;
|
||||||
|
GetCharacters( apCharacters );
|
||||||
|
if( apCharacters.size() )
|
||||||
|
return apCharacters[rand()%apCharacters.size()];
|
||||||
|
else
|
||||||
|
return GetDefaultCharacter();
|
||||||
|
}
|
||||||
|
|
||||||
|
Character* CharacterManager::GetDefaultCharacter()
|
||||||
|
{
|
||||||
|
for( unsigned i=0; i<m_pCharacters.size(); i++ )
|
||||||
|
{
|
||||||
|
if( m_pCharacters[i]->IsDefaultCharacter() )
|
||||||
|
return m_pCharacters[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
/* We always have the default character. */
|
||||||
|
ASSERT(0);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
Character* CharacterManager::GetCharacterFromID( CString sCharacterID )
|
||||||
|
{
|
||||||
|
for( unsigned i=0; i<m_pCharacters.size(); i++ )
|
||||||
|
{
|
||||||
|
if( m_pCharacters[i]->m_sCharacterID == sCharacterID )
|
||||||
|
return m_pCharacters[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// lua start
|
||||||
|
#include "LuaBinding.h"
|
||||||
|
|
||||||
|
class LunaCharacterManager: public Luna<CharacterManager>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
LunaCharacterManager() { LUA->Register( Register ); }
|
||||||
|
|
||||||
|
static int GetCharacter( T* p, lua_State *L )
|
||||||
|
{
|
||||||
|
Character *pCharacter = p->GetCharacterFromID(SArg(1));
|
||||||
|
if( pCharacter != NULL )
|
||||||
|
pCharacter->PushSelf( L );
|
||||||
|
else
|
||||||
|
lua_pushnil( L );
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void Register(lua_State *L)
|
||||||
|
{
|
||||||
|
ADD_METHOD( GetCharacter )
|
||||||
|
Luna<T>::Register( L );
|
||||||
|
|
||||||
|
// Add global singleton if constructed already. If it's not constructed yet,
|
||||||
|
// then we'll register it later when we reinit Lua just before
|
||||||
|
// initializing the display.
|
||||||
|
if( CHARMAN )
|
||||||
|
{
|
||||||
|
lua_pushstring(L, "CHARMAN");
|
||||||
|
CHARMAN->PushSelf( L );
|
||||||
|
lua_settable(L, LUA_GLOBALSINDEX);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
LUA_REGISTER_CLASS( CharacterManager )
|
||||||
|
// lua end
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* (c) 2001-2004 Chris Danford
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the
|
||||||
|
* "Software"), to deal in the Software without restriction, including
|
||||||
|
* without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
* distribute, and/or sell copies of the Software, and to permit persons to
|
||||||
|
* whom the Software is furnished to do so, provided that the above
|
||||||
|
* copyright notice(s) and this permission notice appear in all copies of
|
||||||
|
* the Software and that both the above copyright notice(s) and this
|
||||||
|
* permission notice appear in supporting documentation.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
|
||||||
|
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
|
||||||
|
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
|
||||||
|
* OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
||||||
|
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||||
|
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
|
* PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
/* ThemeManager - Managed non-persisted statistics. */
|
||||||
|
|
||||||
|
#ifndef CharacterManager_H
|
||||||
|
#define CharacterManager_H
|
||||||
|
|
||||||
|
#include "StageStats.h"
|
||||||
|
|
||||||
|
class Character;
|
||||||
|
|
||||||
|
class CharacterManager
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CharacterManager();
|
||||||
|
~CharacterManager();
|
||||||
|
|
||||||
|
void GetCharacters( vector<Character*> &vpCharactersOut );
|
||||||
|
Character* GetRandomCharacter();
|
||||||
|
Character* GetDefaultCharacter();
|
||||||
|
Character* GetCharacterFromID( CString sCharacterID );
|
||||||
|
|
||||||
|
// Lua
|
||||||
|
void PushSelf( lua_State *L );
|
||||||
|
|
||||||
|
private:
|
||||||
|
vector<Character*> m_pCharacters;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
extern CharacterManager* CHARMAN; // global and accessable from anywhere in our program
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* (c) 2001-2004 Chris Danford
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the
|
||||||
|
* "Software"), to deal in the Software without restriction, including
|
||||||
|
* without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
* distribute, and/or sell copies of the Software, and to permit persons to
|
||||||
|
* whom the Software is furnished to do so, provided that the above
|
||||||
|
* copyright notice(s) and this permission notice appear in all copies of
|
||||||
|
* the Software and that both the above copyright notice(s) and this
|
||||||
|
* permission notice appear in supporting documentation.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
|
||||||
|
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
|
||||||
|
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
|
||||||
|
* OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
||||||
|
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||||
|
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
|
* PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
+5
-100
@@ -39,6 +39,7 @@
|
|||||||
#include "CommonMetrics.h"
|
#include "CommonMetrics.h"
|
||||||
#include "ScreenManager.h"
|
#include "ScreenManager.h"
|
||||||
#include "Screen.h"
|
#include "Screen.h"
|
||||||
|
#include "CharacterManager.h"
|
||||||
|
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
#include <set>
|
#include <set>
|
||||||
@@ -46,8 +47,7 @@
|
|||||||
|
|
||||||
GameState* GAMESTATE = NULL; // global and accessable from anywhere in our program
|
GameState* GAMESTATE = NULL; // global and accessable from anywhere in our program
|
||||||
|
|
||||||
#define CHARACTERS_DIR "Characters/"
|
#define NAME_BLACKLIST_FILE "/Data/NamesBlacklist.dat"
|
||||||
#define NAME_BLACKLIST_FILE "Data/NamesBlacklist.dat"
|
|
||||||
|
|
||||||
ThemeMetric<bool> USE_NAME_BLACKLIST("GameState","UseNameBlacklist");
|
ThemeMetric<bool> USE_NAME_BLACKLIST("GameState","UseNameBlacklist");
|
||||||
|
|
||||||
@@ -89,8 +89,6 @@ GameState::GameState() :
|
|||||||
m_timeGameStarted.SetZero();
|
m_timeGameStarted.SetZero();
|
||||||
m_bDemonstrationOrJukebox = false;
|
m_bDemonstrationOrJukebox = false;
|
||||||
|
|
||||||
ReloadCharacters();
|
|
||||||
|
|
||||||
m_iNumTimesThroughAttract = -1; // initial screen will bump this up to 0
|
m_iNumTimesThroughAttract = -1; // initial screen will bump this up to 0
|
||||||
m_iStageSeed = m_iGameSeed = 0;
|
m_iStageSeed = m_iGameSeed = 0;
|
||||||
|
|
||||||
@@ -115,9 +113,6 @@ GameState::GameState() :
|
|||||||
|
|
||||||
GameState::~GameState()
|
GameState::~GameState()
|
||||||
{
|
{
|
||||||
for( unsigned i=0; i<m_pCharacters.size(); i++ )
|
|
||||||
SAFE_DELETE( m_pCharacters[i] );
|
|
||||||
|
|
||||||
FOREACH_PlayerNumber( p )
|
FOREACH_PlayerNumber( p )
|
||||||
SAFE_DELETE( m_pPlayerState[p] );
|
SAFE_DELETE( m_pPlayerState[p] );
|
||||||
|
|
||||||
@@ -243,10 +238,10 @@ void GameState::Reset()
|
|||||||
|
|
||||||
FOREACH_PlayerNumber(p)
|
FOREACH_PlayerNumber(p)
|
||||||
{
|
{
|
||||||
if( PREFSMAN->m_ShowDancingCharacters == PrefsManager::CO_RANDOM)
|
if( PREFSMAN->m_ShowDancingCharacters == PrefsManager::CO_RANDOM )
|
||||||
m_pCurCharacters[p] = GetRandomCharacter();
|
m_pCurCharacters[p] = CHARMAN->GetRandomCharacter();
|
||||||
else
|
else
|
||||||
m_pCurCharacters[p] = GetDefaultCharacter();
|
m_pCurCharacters[p] = CHARMAN->GetDefaultCharacter();
|
||||||
ASSERT( m_pCurCharacters[p] );
|
ASSERT( m_pCurCharacters[p] );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -569,44 +564,6 @@ void GameState::Update( float fDelta )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GameState::ReloadCharacters()
|
|
||||||
{
|
|
||||||
for( unsigned i=0; i<m_pCharacters.size(); i++ )
|
|
||||||
SAFE_DELETE( m_pCharacters[i] );
|
|
||||||
m_pCharacters.clear();
|
|
||||||
|
|
||||||
FOREACH_PlayerNumber( p )
|
|
||||||
m_pCurCharacters[p] = NULL;
|
|
||||||
|
|
||||||
CStringArray as;
|
|
||||||
GetDirListing( CHARACTERS_DIR "*", as, true, true );
|
|
||||||
StripCvs( as );
|
|
||||||
|
|
||||||
bool FoundDefault = false;
|
|
||||||
for( unsigned i=0; i<as.size(); i++ )
|
|
||||||
{
|
|
||||||
CString sCharName, sDummy;
|
|
||||||
splitpath(as[i], sDummy, sCharName, sDummy);
|
|
||||||
sCharName.MakeLower();
|
|
||||||
|
|
||||||
if( sCharName.CompareNoCase("default")==0 )
|
|
||||||
FoundDefault = true;
|
|
||||||
|
|
||||||
Character* pChar = new Character;
|
|
||||||
if( pChar->Load( as[i] ) )
|
|
||||||
m_pCharacters.push_back( pChar );
|
|
||||||
else
|
|
||||||
delete pChar;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( !FoundDefault )
|
|
||||||
RageException::Throw( "'Characters/default' is missing." );
|
|
||||||
|
|
||||||
// If FoundDefault, then we're not empty. -Chris
|
|
||||||
// if( m_pCharacters.empty() )
|
|
||||||
// RageException::Throw( "Couldn't find any character definitions" );
|
|
||||||
}
|
|
||||||
|
|
||||||
const float GameState::MUSIC_SECONDS_INVALID = -5000.0f;
|
const float GameState::MUSIC_SECONDS_INVALID = -5000.0f;
|
||||||
|
|
||||||
void GameState::ResetMusicStatistics()
|
void GameState::ResetMusicStatistics()
|
||||||
@@ -1287,47 +1244,6 @@ bool GameState::ShowMarvelous() const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GameState::GetCharacters( vector<Character*> &apCharactersOut )
|
|
||||||
{
|
|
||||||
for( unsigned i=0; i<m_pCharacters.size(); i++ )
|
|
||||||
if( !m_pCharacters[i]->IsDefaultCharacter() )
|
|
||||||
apCharactersOut.push_back( m_pCharacters[i] );
|
|
||||||
}
|
|
||||||
|
|
||||||
Character* GameState::GetRandomCharacter()
|
|
||||||
{
|
|
||||||
vector<Character*> apCharacters;
|
|
||||||
GetCharacters( apCharacters );
|
|
||||||
if( apCharacters.size() )
|
|
||||||
return apCharacters[rand()%apCharacters.size()];
|
|
||||||
else
|
|
||||||
return GetDefaultCharacter();
|
|
||||||
}
|
|
||||||
|
|
||||||
Character* GameState::GetDefaultCharacter()
|
|
||||||
{
|
|
||||||
for( unsigned i=0; i<m_pCharacters.size(); i++ )
|
|
||||||
{
|
|
||||||
if( m_pCharacters[i]->IsDefaultCharacter() )
|
|
||||||
return m_pCharacters[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
/* We always have the default character. */
|
|
||||||
ASSERT(0);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
Character* GameState::GetCharacterFromID( CString sCharacterID )
|
|
||||||
{
|
|
||||||
for( unsigned i=0; i<m_pCharacters.size(); i++ )
|
|
||||||
{
|
|
||||||
if( m_pCharacters[i]->m_sCharacterID == sCharacterID )
|
|
||||||
return m_pCharacters[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct SongAndSteps
|
struct SongAndSteps
|
||||||
{
|
{
|
||||||
Song* pSong;
|
Song* pSong;
|
||||||
@@ -2014,16 +1930,6 @@ public:
|
|||||||
}
|
}
|
||||||
static int GetPreferredDifficulty( T* p, lua_State *L ) { lua_pushnumber(L, p->m_PreferredDifficulty[IArg(1)] ); return 1; }
|
static int GetPreferredDifficulty( T* p, lua_State *L ) { lua_pushnumber(L, p->m_PreferredDifficulty[IArg(1)] ); return 1; }
|
||||||
static int AnyPlayerHasRankingFeats( T* p, lua_State *L ) { lua_pushboolean(L, p->AnyPlayerHasRankingFeats() ); return 1; }
|
static int AnyPlayerHasRankingFeats( T* p, lua_State *L ) { lua_pushboolean(L, p->AnyPlayerHasRankingFeats() ); return 1; }
|
||||||
static int GetCharacter( T* p, lua_State *L )
|
|
||||||
{
|
|
||||||
Character *pCharacter = p->m_pCurCharacters[IArg(1)];
|
|
||||||
if( pCharacter != NULL )
|
|
||||||
pCharacter->PushSelf( L );
|
|
||||||
else
|
|
||||||
lua_pushnil( L );
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
static int IsCourseMode( T* p, lua_State *L ) { lua_pushboolean(L, p->IsCourseMode() ); return 1; }
|
static int IsCourseMode( T* p, lua_State *L ) { lua_pushboolean(L, p->IsCourseMode() ); return 1; }
|
||||||
static int IsDemonstration( T* p, lua_State *L ) { lua_pushboolean(L, p->m_bDemonstrationOrJukebox ); return 1; }
|
static int IsDemonstration( T* p, lua_State *L ) { lua_pushboolean(L, p->m_bDemonstrationOrJukebox ); return 1; }
|
||||||
static int GetPlayMode( T* p, lua_State *L ) { lua_pushnumber(L, p->m_PlayMode ); return 1; }
|
static int GetPlayMode( T* p, lua_State *L ) { lua_pushnumber(L, p->m_PlayMode ); return 1; }
|
||||||
@@ -2091,7 +1997,6 @@ public:
|
|||||||
ADD_METHOD( GetEditSourceSteps )
|
ADD_METHOD( GetEditSourceSteps )
|
||||||
ADD_METHOD( GetPreferredDifficulty )
|
ADD_METHOD( GetPreferredDifficulty )
|
||||||
ADD_METHOD( AnyPlayerHasRankingFeats )
|
ADD_METHOD( AnyPlayerHasRankingFeats )
|
||||||
ADD_METHOD( GetCharacter )
|
|
||||||
ADD_METHOD( IsCourseMode )
|
ADD_METHOD( IsCourseMode )
|
||||||
ADD_METHOD( IsDemonstration )
|
ADD_METHOD( IsDemonstration )
|
||||||
ADD_METHOD( GetPlayMode )
|
ADD_METHOD( GetPlayMode )
|
||||||
|
|||||||
@@ -92,11 +92,6 @@ public:
|
|||||||
bool IsCpuPlayer( PlayerNumber pn ) const;
|
bool IsCpuPlayer( PlayerNumber pn ) const;
|
||||||
bool AnyPlayersAreCpu() const;
|
bool AnyPlayersAreCpu() const;
|
||||||
|
|
||||||
void GetCharacters( vector<Character*> &vpCharactersOut );
|
|
||||||
Character* GetRandomCharacter();
|
|
||||||
Character* GetDefaultCharacter();
|
|
||||||
Character* GetCharacterFromID( CString sCharacterID );
|
|
||||||
|
|
||||||
|
|
||||||
bool IsCourseMode() const;
|
bool IsCourseMode() const;
|
||||||
bool IsBattleMode() const; /* not Rave */
|
bool IsBattleMode() const; /* not Rave */
|
||||||
@@ -227,16 +222,8 @@ public:
|
|||||||
SongOptions::FailType GetPlayerFailType( PlayerNumber pn ) const;
|
SongOptions::FailType GetPlayerFailType( PlayerNumber pn ) const;
|
||||||
|
|
||||||
// character stuff
|
// character stuff
|
||||||
private:
|
|
||||||
vector<Character*> m_pCharacters;
|
|
||||||
|
|
||||||
public:
|
|
||||||
Character* m_pCurCharacters[NUM_PLAYERS];
|
Character* m_pCurCharacters[NUM_PLAYERS];
|
||||||
|
|
||||||
void ReloadCharacters();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool HasEarnedExtraStage() const;
|
bool HasEarnedExtraStage() const;
|
||||||
bool m_bAllow2ndExtraStage; //only used when "Allow Selection of Extra Stage is on"
|
bool m_bAllow2ndExtraStage; //only used when "Allow Selection of Extra Stage is on"
|
||||||
|
|||||||
@@ -325,9 +325,14 @@ Quad.cpp Quad.h \
|
|||||||
RollingNumbers.cpp RollingNumbers.h Sprite.cpp Sprite.h
|
RollingNumbers.cpp RollingNumbers.h Sprite.cpp Sprite.h
|
||||||
|
|
||||||
GlobalSingletons = \
|
GlobalSingletons = \
|
||||||
AnnouncerManager.cpp AnnouncerManager.h Bookkeeper.cpp Bookkeeper.h CryptManager.cpp CryptManager.h \
|
AnnouncerManager.cpp AnnouncerManager.h \
|
||||||
FontManager.cpp FontManager.h GameSoundManager.cpp GameSoundManager.h GameManager.cpp GameManager.h \
|
Bookkeeper.cpp Bookkeeper.h \
|
||||||
GameState.cpp GameState.h InputFilter.cpp InputFilter.h \
|
CharacterManager.cpp CharacterManager.h \
|
||||||
|
CryptManager.cpp CryptManager.h \
|
||||||
|
FontManager.cpp FontManager.h GameSoundManager.cpp GameSoundManager.h \
|
||||||
|
GameManager.cpp GameManager.h \
|
||||||
|
GameState.cpp GameState.h \
|
||||||
|
InputFilter.cpp InputFilter.h \
|
||||||
InputMapper.cpp InputMapper.h InputQueue.cpp InputQueue.h \
|
InputMapper.cpp InputMapper.h InputQueue.cpp InputQueue.h \
|
||||||
LuaBinding.cpp LuaBinding.h \
|
LuaBinding.cpp LuaBinding.h \
|
||||||
LuaManager.cpp LuaManager.h LightsManager.cpp LightsManager.h \
|
LuaManager.cpp LuaManager.h LightsManager.cpp LightsManager.h \
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
#include "Foreach.h"
|
#include "Foreach.h"
|
||||||
#include "GameSoundManager.h"
|
#include "GameSoundManager.h"
|
||||||
#include "CommonMetrics.h"
|
#include "CommonMetrics.h"
|
||||||
|
#include "CharacterManager.h"
|
||||||
|
|
||||||
#define ENTRY(s) THEME->GetMetric ("ScreenOptionsMaster",s)
|
#define ENTRY(s) THEME->GetMetric ("ScreenOptionsMaster",s)
|
||||||
#define ENTRY_MODE(s,i) THEME->GetMetric ("ScreenOptionsMaster",ssprintf("%s,%i",(s).c_str(),(i+1)))
|
#define ENTRY_MODE(s,i) THEME->GetMetric ("ScreenOptionsMaster",ssprintf("%s,%i",(s).c_str(),(i+1)))
|
||||||
@@ -356,7 +357,7 @@ public:
|
|||||||
defOut.m_bOneChoiceForAllPlayers = false;
|
defOut.m_bOneChoiceForAllPlayers = false;
|
||||||
defOut.m_bAllowThemeItems = false;
|
defOut.m_bAllowThemeItems = false;
|
||||||
defOut.m_sName = "Characters";
|
defOut.m_sName = "Characters";
|
||||||
Default.m_pCharacter = GAMESTATE->GetDefaultCharacter();
|
Default.m_pCharacter = CHARMAN->GetDefaultCharacter();
|
||||||
|
|
||||||
{
|
{
|
||||||
defOut.m_vsChoices.push_back( "Off" );
|
defOut.m_vsChoices.push_back( "Off" );
|
||||||
@@ -365,11 +366,11 @@ public:
|
|||||||
ListEntries.push_back( mc );
|
ListEntries.push_back( mc );
|
||||||
}
|
}
|
||||||
|
|
||||||
vector<Character*> apCharacters;
|
vector<Character*> vpCharacters;
|
||||||
GAMESTATE->GetCharacters( apCharacters );
|
CHARMAN->GetCharacters( vpCharacters );
|
||||||
for( unsigned i=0; i<apCharacters.size(); i++ )
|
for( unsigned i=0; i<vpCharacters.size(); i++ )
|
||||||
{
|
{
|
||||||
Character* pCharacter = apCharacters[i];
|
Character* pCharacter = vpCharacters[i];
|
||||||
CString s = pCharacter->GetDisplayName();
|
CString s = pCharacter->GetDisplayName();
|
||||||
s.MakeUpper();
|
s.MakeUpper();
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
#include "CatalogXml.h"
|
#include "CatalogXml.h"
|
||||||
#include "Bookkeeper.h"
|
#include "Bookkeeper.h"
|
||||||
#include "Game.h"
|
#include "Game.h"
|
||||||
#include "GameState.h"
|
#include "CharacterManager.h"
|
||||||
#include "Character.h"
|
#include "Character.h"
|
||||||
|
|
||||||
const CString STATS_XSL = "Stats.xsl";
|
const CString STATS_XSL = "Stats.xsl";
|
||||||
@@ -192,13 +192,13 @@ CString Profile::GetDisplayNameOrHighScoreName() const
|
|||||||
Character *Profile::GetCharacter() const
|
Character *Profile::GetCharacter() const
|
||||||
{
|
{
|
||||||
vector<Character*> vpCharacters;
|
vector<Character*> vpCharacters;
|
||||||
GAMESTATE->GetCharacters( vpCharacters );
|
CHARMAN->GetCharacters( vpCharacters );
|
||||||
FOREACH_CONST( Character*, vpCharacters, c )
|
FOREACH_CONST( Character*, vpCharacters, c )
|
||||||
{
|
{
|
||||||
if( (*c)->m_sCharacterID.CompareNoCase(m_sCharacterID)==0 )
|
if( (*c)->m_sCharacterID.CompareNoCase(m_sCharacterID)==0 )
|
||||||
return *c;
|
return *c;
|
||||||
}
|
}
|
||||||
return GAMESTATE->GetDefaultCharacter();
|
return CHARMAN->GetDefaultCharacter();
|
||||||
}
|
}
|
||||||
|
|
||||||
static CString FormatCalories( float fCals )
|
static CString FormatCalories( float fCals )
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
#include "Style.h"
|
#include "Style.h"
|
||||||
#include "HighScore.h"
|
#include "HighScore.h"
|
||||||
#include "Character.h"
|
#include "Character.h"
|
||||||
|
#include "CharacterManager.h"
|
||||||
|
|
||||||
|
|
||||||
ProfileManager* PROFILEMAN = NULL; // global and accessable from anywhere in our program
|
ProfileManager* PROFILEMAN = NULL; // global and accessable from anywhere in our program
|
||||||
@@ -89,7 +90,7 @@ void ProfileManager::Init()
|
|||||||
for( int i=g_vLocalProfile.size(); i<NUM_FIXED_PROFILES; i++ )
|
for( int i=g_vLocalProfile.size(); i<NUM_FIXED_PROFILES; i++ )
|
||||||
{
|
{
|
||||||
CString sCharacterID = FIXED_PROFILE_CHARACTER_ID( i );
|
CString sCharacterID = FIXED_PROFILE_CHARACTER_ID( i );
|
||||||
Character *pCharacter = GAMESTATE->GetCharacterFromID( sCharacterID );
|
Character *pCharacter = CHARMAN->GetCharacterFromID( sCharacterID );
|
||||||
CString sThrowAway;
|
CString sThrowAway;
|
||||||
CreateLocalProfile( pCharacter->GetDisplayName(), sThrowAway );
|
CreateLocalProfile( pCharacter->GetDisplayName(), sThrowAway );
|
||||||
}
|
}
|
||||||
@@ -406,7 +407,7 @@ bool ProfileManager::CreateLocalProfile( CString sName, CString &sProfileIDOut )
|
|||||||
//
|
//
|
||||||
Profile *pProfile = new Profile;
|
Profile *pProfile = new Profile;
|
||||||
pProfile->m_sDisplayName = sName;
|
pProfile->m_sDisplayName = sName;
|
||||||
pProfile->m_sCharacterID = GAMESTATE->GetRandomCharacter()->m_sCharacterID;
|
pProfile->m_sCharacterID = CHARMAN->GetRandomCharacter()->m_sCharacterID;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Save it to disk.
|
// Save it to disk.
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
#include "Style.h"
|
#include "Style.h"
|
||||||
#include "ActorUtil.h"
|
#include "ActorUtil.h"
|
||||||
#include "PrefsManager.h"
|
#include "PrefsManager.h"
|
||||||
|
#include "CharacterManager.h"
|
||||||
|
|
||||||
static const ThemeMetric<CString> STEPFILE ("ScreenHowToPlay","Stepfile");
|
static const ThemeMetric<CString> STEPFILE ("ScreenHowToPlay","Stepfile");
|
||||||
static const ThemeMetric<int> NUM_PERFECTS ("ScreenHowToPlay","NumPerfects");
|
static const ThemeMetric<int> NUM_PERFECTS ("ScreenHowToPlay","NumPerfects");
|
||||||
@@ -91,11 +92,11 @@ void ScreenHowToPlay::Init()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Display random character
|
// Display random character
|
||||||
vector<Character*> apCharacters;
|
vector<Character*> vpCharacters;
|
||||||
GAMESTATE->GetCharacters( apCharacters );
|
CHARMAN->GetCharacters( vpCharacters );
|
||||||
if( (bool)USECHARACTER && apCharacters.size() && HaveAllCharAnimations() )
|
if( (bool)USECHARACTER && vpCharacters.size() && HaveAllCharAnimations() )
|
||||||
{
|
{
|
||||||
Character* rndchar = GAMESTATE->GetRandomCharacter();
|
Character* rndchar = CHARMAN->GetRandomCharacter();
|
||||||
|
|
||||||
CString sModelPath = rndchar->GetModelPath();
|
CString sModelPath = rndchar->GetModelPath();
|
||||||
if( sModelPath != "" )
|
if( sModelPath != "" )
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
#include "PrefsManager.h"
|
#include "PrefsManager.h"
|
||||||
#include "RageTextureManager.h"
|
#include "RageTextureManager.h"
|
||||||
#include "Command.h"
|
#include "Command.h"
|
||||||
|
#include "CharacterManager.h"
|
||||||
|
|
||||||
|
|
||||||
#define TITLE_ON_COMMAND( p ) THEME->GetMetricA("ScreenSelectCharacter",ssprintf("TitleP%dOnCommand",p+1))
|
#define TITLE_ON_COMMAND( p ) THEME->GetMetricA("ScreenSelectCharacter",ssprintf("TitleP%dOnCommand",p+1))
|
||||||
@@ -58,7 +59,7 @@ void ScreenSelectCharacter::Init()
|
|||||||
ScreenWithMenuElements::Init();
|
ScreenWithMenuElements::Init();
|
||||||
|
|
||||||
vector<Character*> apCharacters;
|
vector<Character*> apCharacters;
|
||||||
GAMESTATE->GetCharacters( apCharacters );
|
CHARMAN->GetCharacters( apCharacters );
|
||||||
if( apCharacters.empty() )
|
if( apCharacters.empty() )
|
||||||
{
|
{
|
||||||
this->PostScreenMessage( SM_GoToNextScreen, 0 );
|
this->PostScreenMessage( SM_GoToNextScreen, 0 );
|
||||||
@@ -240,7 +241,7 @@ void ScreenSelectCharacter::AfterValueChange( PlayerNumber pn )
|
|||||||
case CHOOSING_HUMAN_CHARACTER:
|
case CHOOSING_HUMAN_CHARACTER:
|
||||||
{
|
{
|
||||||
vector<Character*> apCharacters;
|
vector<Character*> apCharacters;
|
||||||
GAMESTATE->GetCharacters( apCharacters );
|
CHARMAN->GetCharacters( apCharacters );
|
||||||
Character* pChar = apCharacters[ m_iSelectedCharacter[pnAffected] ];
|
Character* pChar = apCharacters[ m_iSelectedCharacter[pnAffected] ];
|
||||||
m_sprCard[pnAffected].UnloadTexture();
|
m_sprCard[pnAffected].UnloadTexture();
|
||||||
m_sprCard[pnAffected].Load( pChar->GetCardPath() );
|
m_sprCard[pnAffected].Load( pChar->GetCardPath() );
|
||||||
@@ -307,7 +308,7 @@ void ScreenSelectCharacter::Move( PlayerNumber pn, int deltaValue )
|
|||||||
case CHOOSING_CPU_CHARACTER:
|
case CHOOSING_CPU_CHARACTER:
|
||||||
case CHOOSING_HUMAN_CHARACTER:
|
case CHOOSING_HUMAN_CHARACTER:
|
||||||
vector<Character*> apCharacters;
|
vector<Character*> apCharacters;
|
||||||
GAMESTATE->GetCharacters( apCharacters );
|
CHARMAN->GetCharacters( apCharacters );
|
||||||
m_iSelectedCharacter[pnAffected] += deltaValue;
|
m_iSelectedCharacter[pnAffected] += deltaValue;
|
||||||
wrap( m_iSelectedCharacter[pnAffected], apCharacters.size() );
|
wrap( m_iSelectedCharacter[pnAffected], apCharacters.size() );
|
||||||
AfterValueChange(pn);
|
AfterValueChange(pn);
|
||||||
@@ -350,7 +351,7 @@ void ScreenSelectCharacter::MenuStart( PlayerNumber pn )
|
|||||||
FOREACH_PlayerNumber( p )
|
FOREACH_PlayerNumber( p )
|
||||||
{
|
{
|
||||||
vector<Character*> apCharacters;
|
vector<Character*> apCharacters;
|
||||||
GAMESTATE->GetCharacters( apCharacters );
|
CHARMAN->GetCharacters( apCharacters );
|
||||||
Character* pChar = apCharacters[ m_iSelectedCharacter[p] ];
|
Character* pChar = apCharacters[ m_iSelectedCharacter[p] ];
|
||||||
GAMESTATE->m_pCurCharacters[p] = pChar;
|
GAMESTATE->m_pCurCharacters[p] = pChar;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
#include "GameState.h"
|
#include "GameState.h"
|
||||||
#include "ThemeManager.h"
|
#include "ThemeManager.h"
|
||||||
#include "ActorUtil.h"
|
#include "ActorUtil.h"
|
||||||
|
#include "CharacterManager.h"
|
||||||
|
|
||||||
/* Constants */
|
/* Constants */
|
||||||
|
|
||||||
@@ -81,25 +82,25 @@ void ScreenSelectMode::Init()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// check for character availability
|
// check for character availability
|
||||||
vector<Character*> apCharacters;
|
vector<Character*> vpCharacters;
|
||||||
if(ENABLE_CHAR_SELECT)
|
if( ENABLE_CHAR_SELECT )
|
||||||
{
|
{
|
||||||
GAMESTATE->GetCharacters( apCharacters );
|
CHARMAN->GetCharacters( vpCharacters );
|
||||||
|
|
||||||
for(unsigned i=0; i<apCharacters.size(); i++)
|
for(unsigned i=0; i<vpCharacters.size(); i++)
|
||||||
{
|
{
|
||||||
if(apCharacters[i] != NULL) // check its not null
|
if(vpCharacters[i] != NULL) // check its not null
|
||||||
{
|
{
|
||||||
m_bCharsAvailable = true;
|
m_bCharsAvailable = true;
|
||||||
if(apCharacters[i]->Has2DElems())
|
if(vpCharacters[i]->Has2DElems())
|
||||||
{
|
{
|
||||||
CString mpath = apCharacters[i]->GetSongSelectIconPath();
|
CString mpath = vpCharacters[i]->GetSongSelectIconPath();
|
||||||
LOG->Trace("Char: %d, %s, 2D: true",i,mpath.c_str());
|
LOG->Trace("Char: %d, %s, 2D: true",i,mpath.c_str());
|
||||||
m_b2DAvailable = true;
|
m_b2DAvailable = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CString mpath = apCharacters[i]->GetSongSelectIconPath();
|
CString mpath = vpCharacters[i]->GetSongSelectIconPath();
|
||||||
LOG->Trace("Char: %d, %s, 2D: false",i,mpath.c_str());
|
LOG->Trace("Char: %d, %s, 2D: false",i,mpath.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -260,34 +261,34 @@ void ScreenSelectMode::HandleScreenMessage( const ScreenMessage SM )
|
|||||||
|
|
||||||
void ScreenSelectMode::SetCharacters()
|
void ScreenSelectMode::SetCharacters()
|
||||||
{
|
{
|
||||||
vector<Character*> apCharactersToUse;
|
vector<Character*> vpCharactersToUse;
|
||||||
if(ENABLE_CHAR_SELECT && m_bCharsAvailable)
|
if(ENABLE_CHAR_SELECT && m_bCharsAvailable)
|
||||||
{
|
{
|
||||||
if(ONLY_2D_CHARS && m_b2DAvailable)
|
if(ONLY_2D_CHARS && m_b2DAvailable)
|
||||||
{
|
{
|
||||||
vector<Character*> apCharacters;
|
vector<Character*> vpCharacters;
|
||||||
GAMESTATE->GetCharacters( apCharacters );
|
CHARMAN->GetCharacters( vpCharacters );
|
||||||
for(unsigned i=0; i<apCharacters.size(); i++)
|
for(unsigned i=0; i<vpCharacters.size(); i++)
|
||||||
{
|
{
|
||||||
if(apCharacters[i] != NULL) // check its not null
|
if(vpCharacters[i] != NULL) // check its not null
|
||||||
{
|
{
|
||||||
if(apCharacters[i]->Has2DElems())
|
if(vpCharacters[i]->Has2DElems())
|
||||||
{
|
{
|
||||||
apCharactersToUse.push_back(apCharacters[i]);
|
vpCharactersToUse.push_back(vpCharacters[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(m_bCharsAvailable)
|
else if(m_bCharsAvailable)
|
||||||
{
|
{
|
||||||
GAMESTATE->GetCharacters( apCharactersToUse );
|
CHARMAN->GetCharacters( vpCharactersToUse );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
FOREACH_EnabledPlayer( pn )
|
FOREACH_EnabledPlayer( pn )
|
||||||
{
|
{
|
||||||
if(ENABLE_CHAR_SELECT && m_iCurrentChar[pn] != -1)
|
if(ENABLE_CHAR_SELECT && m_iCurrentChar[pn] != -1)
|
||||||
{
|
{
|
||||||
Character* pChar = apCharactersToUse[m_iCurrentChar[pn]];
|
Character* pChar = vpCharactersToUse[m_iCurrentChar[pn]];
|
||||||
GAMESTATE->m_pCurCharacters[pn] = pChar;
|
GAMESTATE->m_pCurCharacters[pn] = pChar;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -360,27 +361,27 @@ void ScreenSelectMode::DrawPrimitives()
|
|||||||
|
|
||||||
void ScreenSelectMode::MenuUp(PlayerNumber pn)
|
void ScreenSelectMode::MenuUp(PlayerNumber pn)
|
||||||
{
|
{
|
||||||
vector<Character*> apCharactersToUse;
|
vector<Character*> vpCharactersToUse;
|
||||||
if(ENABLE_CHAR_SELECT && m_bCharsAvailable)
|
if(ENABLE_CHAR_SELECT && m_bCharsAvailable)
|
||||||
{
|
{
|
||||||
if(ONLY_2D_CHARS && m_b2DAvailable)
|
if(ONLY_2D_CHARS && m_b2DAvailable)
|
||||||
{
|
{
|
||||||
vector<Character*> apCharacters;
|
vector<Character*> vpCharacters;
|
||||||
GAMESTATE->GetCharacters( apCharacters );
|
CHARMAN->GetCharacters( vpCharacters );
|
||||||
for(unsigned i=0; i<apCharacters.size(); i++)
|
for(unsigned i=0; i<vpCharacters.size(); i++)
|
||||||
{
|
{
|
||||||
if(apCharacters[i] != NULL) // check its not null
|
if(vpCharacters[i] != NULL) // check its not null
|
||||||
{
|
{
|
||||||
if(apCharacters[i]->Has2DElems())
|
if(vpCharacters[i]->Has2DElems())
|
||||||
{
|
{
|
||||||
apCharactersToUse.push_back(apCharacters[i]);
|
vpCharactersToUse.push_back(vpCharacters[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(m_bCharsAvailable)
|
else if(m_bCharsAvailable)
|
||||||
{
|
{
|
||||||
GAMESTATE->GetCharacters( apCharactersToUse );
|
CHARMAN->GetCharacters( vpCharactersToUse );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -388,14 +389,14 @@ void ScreenSelectMode::MenuUp(PlayerNumber pn)
|
|||||||
if(ENABLE_CHAR_SELECT && m_bCharsAvailable)
|
if(ENABLE_CHAR_SELECT && m_bCharsAvailable)
|
||||||
{
|
{
|
||||||
if(m_iCurrentChar[pn] <= -1)
|
if(m_iCurrentChar[pn] <= -1)
|
||||||
m_iCurrentChar[pn] = apCharactersToUse.size() -1;
|
m_iCurrentChar[pn] = vpCharactersToUse.size() -1;
|
||||||
else
|
else
|
||||||
m_iCurrentChar[pn]--; // set to no character
|
m_iCurrentChar[pn]--; // set to no character
|
||||||
|
|
||||||
if(m_iCurrentChar[pn] != -1)
|
if(m_iCurrentChar[pn] != -1)
|
||||||
{
|
{
|
||||||
if(apCharactersToUse[m_iCurrentChar[pn]]->GetSongSelectIconPath() != "")
|
if(vpCharactersToUse[m_iCurrentChar[pn]]->GetSongSelectIconPath() != "")
|
||||||
m_CurChar[pn].Load( apCharactersToUse[m_iCurrentChar[pn]]->GetSongSelectIconPath() );
|
m_CurChar[pn].Load( vpCharactersToUse[m_iCurrentChar[pn]]->GetSongSelectIconPath() );
|
||||||
else
|
else
|
||||||
m_CurChar[pn].Load( THEME->GetPathG("ScreenSelectMode","chariconmissing") );
|
m_CurChar[pn].Load( THEME->GetPathG("ScreenSelectMode","chariconmissing") );
|
||||||
}
|
}
|
||||||
@@ -406,41 +407,41 @@ void ScreenSelectMode::MenuUp(PlayerNumber pn)
|
|||||||
|
|
||||||
void ScreenSelectMode::MenuDown(PlayerNumber pn)
|
void ScreenSelectMode::MenuDown(PlayerNumber pn)
|
||||||
{
|
{
|
||||||
vector<Character*> apCharactersToUse;
|
vector<Character*> vpCharactersToUse;
|
||||||
if(ENABLE_CHAR_SELECT && m_bCharsAvailable)
|
if(ENABLE_CHAR_SELECT && m_bCharsAvailable)
|
||||||
{
|
{
|
||||||
if(ONLY_2D_CHARS && m_b2DAvailable)
|
if(ONLY_2D_CHARS && m_b2DAvailable)
|
||||||
{
|
{
|
||||||
vector<Character*> apCharacters;
|
vector<Character*> vpCharacters;
|
||||||
GAMESTATE->GetCharacters( apCharacters );
|
CHARMAN->GetCharacters( vpCharacters );
|
||||||
for(unsigned i=0; i<apCharacters.size(); i++)
|
for(unsigned i=0; i<vpCharacters.size(); i++)
|
||||||
{
|
{
|
||||||
if(apCharacters[i] != NULL) // check its not null
|
if(vpCharacters[i] != NULL) // check its not null
|
||||||
{
|
{
|
||||||
if(apCharacters[i]->Has2DElems())
|
if(vpCharacters[i]->Has2DElems())
|
||||||
{
|
{
|
||||||
apCharactersToUse.push_back(apCharacters[i]);
|
vpCharactersToUse.push_back(vpCharacters[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(m_bCharsAvailable)
|
else if(m_bCharsAvailable)
|
||||||
{
|
{
|
||||||
GAMESTATE->GetCharacters( apCharactersToUse );
|
CHARMAN->GetCharacters( vpCharactersToUse );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_CurChar[pn].UnloadTexture();
|
m_CurChar[pn].UnloadTexture();
|
||||||
if(ENABLE_CHAR_SELECT && m_bCharsAvailable)
|
if(ENABLE_CHAR_SELECT && m_bCharsAvailable)
|
||||||
{
|
{
|
||||||
if(m_iCurrentChar[pn] < (int)apCharactersToUse.size() - 1 || m_iCurrentChar[pn] == -1)
|
if(m_iCurrentChar[pn] < (int)vpCharactersToUse.size() - 1 || m_iCurrentChar[pn] == -1)
|
||||||
m_iCurrentChar[pn]++;
|
m_iCurrentChar[pn]++;
|
||||||
else
|
else
|
||||||
m_iCurrentChar[pn] = -1; // set to no character
|
m_iCurrentChar[pn] = -1; // set to no character
|
||||||
if(m_iCurrentChar[pn] != -1)
|
if(m_iCurrentChar[pn] != -1)
|
||||||
{
|
{
|
||||||
if(apCharactersToUse[m_iCurrentChar[pn]]->GetSongSelectIconPath() != "")
|
if(vpCharactersToUse[m_iCurrentChar[pn]]->GetSongSelectIconPath() != "")
|
||||||
m_CurChar[pn].Load( apCharactersToUse[m_iCurrentChar[pn]]->GetSongSelectIconPath() );
|
m_CurChar[pn].Load( vpCharactersToUse[m_iCurrentChar[pn]]->GetSongSelectIconPath() );
|
||||||
else
|
else
|
||||||
m_CurChar[pn].Load( THEME->GetPathG("ScreenSelectMode","chariconmissing") );
|
m_CurChar[pn].Load( THEME->GetPathG("ScreenSelectMode","chariconmissing") );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2495,6 +2495,12 @@ cl /Zl /nologo /c verstub.cpp /Fo"$(IntDir)"\
|
|||||||
<File
|
<File
|
||||||
RelativePath="Bookkeeper.h">
|
RelativePath="Bookkeeper.h">
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\CharacterManager.cpp">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\CharacterManager.h">
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="CryptManager.cpp">
|
RelativePath="CryptManager.cpp">
|
||||||
</File>
|
</File>
|
||||||
|
|||||||
@@ -44,6 +44,7 @@
|
|||||||
#include "NoteSkinManager.h"
|
#include "NoteSkinManager.h"
|
||||||
#include "PrefsManager.h"
|
#include "PrefsManager.h"
|
||||||
#include "SongManager.h"
|
#include "SongManager.h"
|
||||||
|
#include "CharacterManager.h"
|
||||||
#include "GameState.h"
|
#include "GameState.h"
|
||||||
#include "AnnouncerManager.h"
|
#include "AnnouncerManager.h"
|
||||||
#include "ProfileManager.h"
|
#include "ProfileManager.h"
|
||||||
@@ -228,6 +229,7 @@ void ShutdownGame()
|
|||||||
SAFE_DELETE( INPUTFILTER );
|
SAFE_DELETE( INPUTFILTER );
|
||||||
SAFE_DELETE( MODELMAN );
|
SAFE_DELETE( MODELMAN );
|
||||||
SAFE_DELETE( PROFILEMAN ); // PROFILEMAN needs the songs still loaded
|
SAFE_DELETE( PROFILEMAN ); // PROFILEMAN needs the songs still loaded
|
||||||
|
SAFE_DELETE( CHARMAN );
|
||||||
SAFE_DELETE( UNLOCKMAN );
|
SAFE_DELETE( UNLOCKMAN );
|
||||||
SAFE_DELETE( CRYPTMAN );
|
SAFE_DELETE( CRYPTMAN );
|
||||||
SAFE_DELETE( MEMCARDMAN );
|
SAFE_DELETE( MEMCARDMAN );
|
||||||
@@ -1102,6 +1104,7 @@ int main(int argc, char* argv[])
|
|||||||
SONGMAN->InitAll( loading_window ); // this takes a long time
|
SONGMAN->InitAll( loading_window ); // this takes a long time
|
||||||
CRYPTMAN = new CryptManager; // need to do this before ProfileMan
|
CRYPTMAN = new CryptManager; // need to do this before ProfileMan
|
||||||
MEMCARDMAN = new MemoryCardManager;
|
MEMCARDMAN = new MemoryCardManager;
|
||||||
|
CHARMAN = new CharacterManager;
|
||||||
PROFILEMAN = new ProfileManager;
|
PROFILEMAN = new ProfileManager;
|
||||||
PROFILEMAN->Init(); // must load after SONGMAN
|
PROFILEMAN->Init(); // must load after SONGMAN
|
||||||
UNLOCKMAN = new UnlockManager;
|
UNLOCKMAN = new UnlockManager;
|
||||||
|
|||||||
@@ -3084,6 +3084,14 @@ SOURCE=.\Bookkeeper.h
|
|||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\CharacterManager.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\CharacterManager.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\CryptManager.cpp
|
SOURCE=.\CryptManager.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|||||||
@@ -2481,6 +2481,12 @@ cl /Zl /nologo /c verstub.cpp /Fo"$(IntDir)"\
|
|||||||
<File
|
<File
|
||||||
RelativePath="Bookkeeper.h">
|
RelativePath="Bookkeeper.h">
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="CharacterManager.cpp">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="CharacterManager.h">
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="CryptManager.cpp">
|
RelativePath="CryptManager.cpp">
|
||||||
</File>
|
</File>
|
||||||
|
|||||||
Reference in New Issue
Block a user