Pop'n Music Theme Changes
Themers can optionally enable an All Character / 2D only Character select on the mode select screen (pop'n support)
This commit is contained in:
@@ -238,6 +238,14 @@ GuideOffCommand=bouncebegin,0.5;addy,400
|
||||
ChoiceListHighlightOffCommand=linear,0.5;diffusealpha,0;glow,1,1,1,0
|
||||
ChoiceListFrameOffCommand=linear,0.5;diffusealpha,0;glow,1,1,1,0
|
||||
UseModeSpecificBGAnims=0
|
||||
EnableCharSelect=0
|
||||
Only2DChars=0
|
||||
CharacterIconP1Y=240
|
||||
CharacterIconP1X=320
|
||||
CharacterIconP2Y=240
|
||||
CharacterIconP2X=320
|
||||
CharacterIconP1OffCommand=linear,0.3;diffusealpha,0;sleep,10
|
||||
CharacterIconP2OffCommand=linear,0.3;diffusealpha,0;sleep,10
|
||||
|
||||
[ScreenStyleSplash]
|
||||
NextScreen=ScreenSelectGroup
|
||||
|
||||
@@ -142,3 +142,23 @@ CString Character::GetHeadPath() const
|
||||
return as[0];
|
||||
}
|
||||
|
||||
bool Character::Has2DElems()
|
||||
{
|
||||
if( DoesFileExist(m_sCharDir + SLASH + "2DFail" + SLASH + "BGAnimation.ini") ) // check 2D Idle BGAnim exists
|
||||
return true;
|
||||
if( DoesFileExist(m_sCharDir + SLASH + "2DFever" + SLASH + "BGAnimation.ini") ) // check 2D Idle BGAnim exists
|
||||
return true;
|
||||
if( DoesFileExist(m_sCharDir + SLASH + "2DGood" + SLASH + "BGAnimation.ini") ) // check 2D Idle BGAnim exists
|
||||
return true;
|
||||
if( DoesFileExist(m_sCharDir + SLASH + "2DMiss" + SLASH + "BGAnimation.ini") ) // check 2D Idle BGAnim exists
|
||||
return true;
|
||||
if( DoesFileExist(m_sCharDir + SLASH + "2DWin" + SLASH + "BGAnimation.ini") ) // check 2D Idle BGAnim exists
|
||||
return true;
|
||||
if( DoesFileExist(m_sCharDir + SLASH + "2DWinFever" + SLASH + "BGAnimation.ini") ) // check 2D Idle BGAnim exists
|
||||
return true;
|
||||
if( DoesFileExist(m_sCharDir + SLASH + "2DGreat" + SLASH + "BGAnimation.ini") ) // check 2D Idle BGAnim exists
|
||||
return true;
|
||||
if( DoesFileExist(m_sCharDir + SLASH + "2DIdle" + SLASH + "BGAnimation.ini") ) // check 2D Idle BGAnim exists
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
@@ -30,10 +30,14 @@ public:
|
||||
CString GetWarmUpAnimationPath() const;
|
||||
CString GetDanceAnimationPath() const;
|
||||
CString GetSongSelectIconPath() const;
|
||||
bool Has2DElems();
|
||||
|
||||
|
||||
CString m_sCharDir;
|
||||
CString m_sName;
|
||||
|
||||
|
||||
|
||||
// All the stuff below will be filled in if this character is playable in Rave mode
|
||||
bool m_bUsableInRave;
|
||||
|
||||
|
||||
@@ -140,6 +140,7 @@ static const CreditLine CREDIT_LINES[] =
|
||||
{0,"Random Hajile"}, // sent me 3DDX stuff - friez
|
||||
{0,"Chocobo Ghost"}, // sent me ez2 stuff - friez
|
||||
{0,"Tyma"}, // sent me popnmusic stuff - friez
|
||||
{0,"Deluxe"}, // para para noteskins - friez
|
||||
{0,"Lagged"},
|
||||
{0,"The Melting Pot"},
|
||||
{0,"DDRJamz Global BBS"},
|
||||
|
||||
@@ -33,7 +33,7 @@ public:
|
||||
virtual void HandleScreenMessage( const ScreenMessage SM );
|
||||
|
||||
virtual void MenuBack( PlayerNumber pn );
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
virtual int GetSelectionIndex( PlayerNumber pn ) = 0;
|
||||
|
||||
@@ -33,6 +33,8 @@ Chris Danford
|
||||
#define GUIDE_Y THEME->GetMetricF("ScreenSelectMode", "GuideY")
|
||||
#define USECONFIRM THEME->GetMetricI("ScreenSelectMode","UseConfirm")
|
||||
#define USE_MODE_SPECIFIC_BGS THEME->GetMetricI("ScreenSelectMode", "UseModeSpecificBGAnims")
|
||||
#define ENABLE_CHAR_SELECT THEME->GetMetricB("ScreenSelectMode","EnableCharSelect")
|
||||
#define ONLY_2D_CHARS THEME->GetMetricB("ScreenSelectMode","Only2DChars")
|
||||
|
||||
/************************************
|
||||
ScreenSelectMode (Constructor)
|
||||
@@ -41,6 +43,14 @@ Desc: Sets up the screen display
|
||||
|
||||
ScreenSelectMode::ScreenSelectMode( CString sClassName ) : ScreenSelect( sClassName )
|
||||
{
|
||||
m_b2DAvailable = m_bCharsAvailable = false;
|
||||
|
||||
for(int pn=0;pn<NUM_PLAYERS;pn++)
|
||||
{
|
||||
m_iCurrentChar[pn]= -1; // minus 1 indicates no character.
|
||||
m_CurChar[pn].SetName(ssprintf("CharacterIconP%d",pn+1));
|
||||
SET_XY( m_CurChar[pn] );
|
||||
}
|
||||
m_bSelected = false;
|
||||
m_ChoiceListFrame.Load( THEME->GetPathToG("ScreenSelectMode list frame"));
|
||||
m_ChoiceListFrame.SetXY( SCROLLING_LIST_X, SCROLLING_LIST_Y);
|
||||
@@ -72,7 +82,35 @@ ScreenSelectMode::ScreenSelectMode( CString sClassName ) : ScreenSelect( sClassN
|
||||
this->AddChild( &m_Backgrounds[i] );
|
||||
}*/
|
||||
}
|
||||
|
||||
|
||||
// check for character availability
|
||||
vector<Character*> apCharacters;
|
||||
if(ENABLE_CHAR_SELECT)
|
||||
{
|
||||
GAMESTATE->GetCharacters( apCharacters );
|
||||
|
||||
for(int i=0; i<apCharacters.size(); i++)
|
||||
{
|
||||
if(apCharacters[i] != NULL) // check its not null
|
||||
{
|
||||
m_bCharsAvailable = true;
|
||||
if(apCharacters[i]->Has2DElems())
|
||||
{
|
||||
CString mpath = apCharacters[i]->GetSongSelectIconPath();
|
||||
LOG->Trace("Char: %d, %s, 2D: true",i,mpath.c_str());
|
||||
m_b2DAvailable = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
CString mpath = apCharacters[i]->GetSongSelectIconPath();
|
||||
LOG->Trace("Char: %d, %s, 2D: false",i,mpath.c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
for(pn=0;pn<NUM_PLAYERS;pn++)
|
||||
m_CurChar[pn].Load( THEME->GetPathToG("ScreenSelectMode nochar") );
|
||||
}
|
||||
|
||||
// m_ScrollingList.UseSpriteType(BANNERTYPE);
|
||||
m_ScrollingList.SetXY( SCROLLING_LIST_X, SCROLLING_LIST_Y );
|
||||
m_ScrollingList.SetSpacing( ELEM_SPACING );
|
||||
@@ -216,12 +254,52 @@ void ScreenSelectMode::HandleScreenMessage( const ScreenMessage SM )
|
||||
case SM_MenuTimer:
|
||||
{
|
||||
m_bSelected = true;
|
||||
SetCharacters();
|
||||
}
|
||||
break;
|
||||
}
|
||||
ScreenSelect::HandleScreenMessage(SM);
|
||||
}
|
||||
|
||||
void ScreenSelectMode::SetCharacters()
|
||||
{
|
||||
vector<Character*> apCharactersToUse;
|
||||
if(ENABLE_CHAR_SELECT && m_bCharsAvailable)
|
||||
{
|
||||
if(ONLY_2D_CHARS && m_b2DAvailable)
|
||||
{
|
||||
vector<Character*> apCharacters;
|
||||
GAMESTATE->GetCharacters( apCharacters );
|
||||
for(int i=0; i<apCharacters.size(); i++)
|
||||
{
|
||||
if(apCharacters[i] != NULL) // check its not null
|
||||
{
|
||||
if(apCharacters[i]->Has2DElems())
|
||||
{
|
||||
apCharactersToUse.push_back(apCharacters[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(m_bCharsAvailable)
|
||||
{
|
||||
GAMESTATE->GetCharacters( apCharactersToUse );
|
||||
}
|
||||
}
|
||||
for(int pn=0; pn<NUM_PLAYERS; pn++)
|
||||
{
|
||||
if(GAMESTATE->IsPlayerEnabled(pn))
|
||||
{
|
||||
if(ENABLE_CHAR_SELECT && m_iCurrentChar[pn] != -1)
|
||||
{
|
||||
Character* pChar = apCharactersToUse[m_iCurrentChar[pn]];
|
||||
GAMESTATE->m_pCurCharacters[pn] = pChar;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void ScreenSelectMode::MenuStart( PlayerNumber pn )
|
||||
{
|
||||
if(!m_bSelected && USECONFIRM == 1)
|
||||
@@ -232,10 +310,13 @@ void ScreenSelectMode::MenuStart( PlayerNumber pn )
|
||||
return;
|
||||
}
|
||||
m_soundStart.Play();
|
||||
SetCharacters();
|
||||
OFF_COMMAND( m_ScrollingList );
|
||||
OFF_COMMAND( m_Guide );
|
||||
OFF_COMMAND( m_ChoiceListHighlight );
|
||||
OFF_COMMAND( m_ChoiceListFrame );
|
||||
for(int i=0; i<NUM_PLAYERS; i++)
|
||||
OFF_COMMAND( m_CurChar[i] );
|
||||
|
||||
SCREENMAN->PostMessageToTopScreen( SM_AllDoneChoosing, 0.5f );
|
||||
}
|
||||
@@ -259,5 +340,121 @@ void ScreenSelectMode::Update( float fDelta )
|
||||
// }
|
||||
}*/
|
||||
|
||||
for(int pn=0; pn<NUM_PLAYERS; pn++)
|
||||
{
|
||||
if(ENABLE_CHAR_SELECT && m_iCurrentChar[pn] != -1)
|
||||
{
|
||||
m_CurChar[pn].Update( fDelta );
|
||||
}
|
||||
}
|
||||
|
||||
ScreenSelect::Update( fDelta );
|
||||
}
|
||||
|
||||
void ScreenSelectMode::DrawPrimitives()
|
||||
{
|
||||
ScreenSelect::DrawPrimitives();
|
||||
for(int pn=0; pn<NUM_PLAYERS; pn++)
|
||||
{
|
||||
if(GAMESTATE->IsPlayerEnabled(pn))
|
||||
{
|
||||
if(ENABLE_CHAR_SELECT)
|
||||
{
|
||||
m_CurChar[pn].Draw();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// todo: optimize the following - Frieza
|
||||
|
||||
void ScreenSelectMode::MenuUp(PlayerNumber pn)
|
||||
{
|
||||
vector<Character*> apCharactersToUse;
|
||||
if(ENABLE_CHAR_SELECT && m_bCharsAvailable)
|
||||
{
|
||||
if(ONLY_2D_CHARS && m_b2DAvailable)
|
||||
{
|
||||
vector<Character*> apCharacters;
|
||||
GAMESTATE->GetCharacters( apCharacters );
|
||||
for(int i=0; i<apCharacters.size(); i++)
|
||||
{
|
||||
if(apCharacters[i] != NULL) // check its not null
|
||||
{
|
||||
if(apCharacters[i]->Has2DElems())
|
||||
{
|
||||
apCharactersToUse.push_back(apCharacters[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(m_bCharsAvailable)
|
||||
{
|
||||
GAMESTATE->GetCharacters( apCharactersToUse );
|
||||
}
|
||||
}
|
||||
|
||||
m_CurChar[pn].UnloadTexture();
|
||||
if(ENABLE_CHAR_SELECT && m_bCharsAvailable)
|
||||
{
|
||||
if(m_iCurrentChar[pn] <= -1)
|
||||
m_iCurrentChar[pn] = apCharactersToUse.size() -1;
|
||||
else
|
||||
m_iCurrentChar[pn]--; // set to no character
|
||||
|
||||
if(m_iCurrentChar[pn] != -1)
|
||||
{
|
||||
if(apCharactersToUse[m_iCurrentChar[pn]]->GetSongSelectIconPath() != "")
|
||||
m_CurChar[pn].Load( apCharactersToUse[m_iCurrentChar[pn]]->GetSongSelectIconPath() );
|
||||
else
|
||||
m_CurChar[pn].Load( THEME->GetPathToG("ScreenSelectMode chariconmissing") );
|
||||
}
|
||||
else
|
||||
m_CurChar[pn].Load( THEME->GetPathToG("ScreenSelectMode nochar") );
|
||||
}
|
||||
}
|
||||
|
||||
void ScreenSelectMode::MenuDown(PlayerNumber pn)
|
||||
{
|
||||
vector<Character*> apCharactersToUse;
|
||||
if(ENABLE_CHAR_SELECT && m_bCharsAvailable)
|
||||
{
|
||||
if(ONLY_2D_CHARS && m_b2DAvailable)
|
||||
{
|
||||
vector<Character*> apCharacters;
|
||||
GAMESTATE->GetCharacters( apCharacters );
|
||||
for(int i=0; i<apCharacters.size(); i++)
|
||||
{
|
||||
if(apCharacters[i] != NULL) // check its not null
|
||||
{
|
||||
if(apCharacters[i]->Has2DElems())
|
||||
{
|
||||
apCharactersToUse.push_back(apCharacters[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(m_bCharsAvailable)
|
||||
{
|
||||
GAMESTATE->GetCharacters( apCharactersToUse );
|
||||
}
|
||||
}
|
||||
|
||||
m_CurChar[pn].UnloadTexture();
|
||||
if(ENABLE_CHAR_SELECT && m_bCharsAvailable)
|
||||
{
|
||||
if(m_iCurrentChar[pn] < apCharactersToUse.size() - 1 || m_iCurrentChar[pn] == -1)
|
||||
m_iCurrentChar[pn]++;
|
||||
else
|
||||
m_iCurrentChar[pn] = -1; // set to no character
|
||||
if(m_iCurrentChar[pn] != -1)
|
||||
{
|
||||
if(apCharactersToUse[m_iCurrentChar[pn]]->GetSongSelectIconPath() != "")
|
||||
m_CurChar[pn].Load( apCharactersToUse[m_iCurrentChar[pn]]->GetSongSelectIconPath() );
|
||||
else
|
||||
m_CurChar[pn].Load( THEME->GetPathToG("ScreenSelectMode chariconmissing") );
|
||||
}
|
||||
else
|
||||
m_CurChar[pn].Load( THEME->GetPathToG("ScreenSelectMode nochar") );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,8 +4,10 @@ Desc: The "Style Select Screen" for Ez2dancer
|
||||
Copyright (c):
|
||||
Andrew Livy
|
||||
*********************************/
|
||||
|
||||
#ifndef __SCREEN_SELECT_MODE_H
|
||||
#define __SCREEN_SELECT_MODE_H
|
||||
/* Includes */
|
||||
|
||||
#include "ScreenSelect.h"
|
||||
#include "Background.h"
|
||||
#include "Screen.h"
|
||||
@@ -18,6 +20,7 @@ Andrew Livy
|
||||
#include "BitmapText.h"
|
||||
#include "RandomSample.h"
|
||||
#include "BGAnimationLayer.h"
|
||||
#include "Character.h"
|
||||
|
||||
/* Class Definition */
|
||||
|
||||
@@ -30,12 +33,16 @@ public:
|
||||
virtual ~ScreenSelectMode(); // Destructor
|
||||
virtual void MenuLeft( PlayerNumber pn );
|
||||
virtual void MenuRight( PlayerNumber pn );
|
||||
virtual void MenuUp(PlayerNumber pn );
|
||||
virtual void MenuDown(PlayerNumber pn);
|
||||
virtual void MenuStart( PlayerNumber pn );
|
||||
virtual void Update( float fDelta );
|
||||
virtual void DrawPrimitives();
|
||||
virtual void HandleScreenMessage( const ScreenMessage SM );
|
||||
protected:
|
||||
virtual int GetSelectionIndex( PlayerNumber pn );
|
||||
virtual void UpdateSelectableChoices();
|
||||
void SetCharacters();
|
||||
void ChangeBGA();
|
||||
int m_iNumChoices;
|
||||
int m_iSelectableChoices[MAX_ELEMS];
|
||||
@@ -49,7 +56,16 @@ protected:
|
||||
Sprite m_ChoiceListHighlight;
|
||||
Sprite m_sprJoinMessage[NUM_PLAYERS];
|
||||
Sprite m_sprJoinFrame[NUM_PLAYERS];
|
||||
Sprite m_CurChar[NUM_PLAYERS];
|
||||
int m_iCurrentChar[NUM_PLAYERS];
|
||||
Sprite m_Guide;
|
||||
vector<BGAnimation*> m_Backgrounds;
|
||||
bool m_bSelected;
|
||||
bool m_b2DAvailable;
|
||||
bool m_bCharsAvailable;
|
||||
|
||||
// private:
|
||||
// vector<Character*> m_Characters;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -101,6 +101,7 @@ ScreenSelectMusic::ScreenSelectMusic( CString sClassName ) : Screen( sClassName
|
||||
m_Menu.Load( "ScreenSelectMusic" );
|
||||
this->AddChild( &m_Menu );
|
||||
|
||||
// pop'n music has this under the songwheel...
|
||||
for( p=0; p<NUM_PLAYERS; p++ )
|
||||
{
|
||||
Character* pChar = GAMESTATE->m_pCurCharacters[p];
|
||||
@@ -110,6 +111,8 @@ ScreenSelectMusic::ScreenSelectMusic( CString sClassName ) : Screen( sClassName
|
||||
this->AddChild( &m_sprCharacterIcon[p] );
|
||||
}
|
||||
|
||||
|
||||
|
||||
m_MusicWheelUnder.Load( THEME->GetPathToG("ScreenSelectMusic wheel under") );
|
||||
m_MusicWheelUnder->SetName( "WheelUnder" );
|
||||
SET_XY( m_MusicWheelUnder );
|
||||
|
||||
Reference in New Issue
Block a user