From 4263957f6c719c1f27ebd3d7e7e877cca50eaddb Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Sun, 31 Aug 2003 22:45:07 +0000 Subject: [PATCH] add character icons to SelectCharacter screen --- .../ScreenSelectCharacter card arrows.png | Bin 0 -> 718 bytes stepmania/Themes/default/metrics.ini | 22 +++---- stepmania/src/ScreenSelectCharacter.cpp | 54 +++++++++++++----- stepmania/src/ScreenSelectCharacter.h | 9 ++- 4 files changed, 58 insertions(+), 27 deletions(-) create mode 100644 stepmania/Themes/default/Graphics/ScreenSelectCharacter card arrows.png diff --git a/stepmania/Themes/default/Graphics/ScreenSelectCharacter card arrows.png b/stepmania/Themes/default/Graphics/ScreenSelectCharacter card arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..81226671d52b8d460094b28d522851308e32fb42 GIT binary patch literal 718 zcmV;<0x|uGP)004R=004l4008;_004mL004C`008P>0026e000+nl3&F}00009 za7bBm000XU000XU0RWnu7ytkQL`g(JRCwC$+_6hrQ5c5t$0$NUa1sOuK@187DOeB( zp;#Q;3ku>OIEmok)TND`Iu*geNe~BV>C{aGhpwWFE*YEz!ATH=Kp>=pZ$LCgy*W2I zvG4B>h?nm?$-VdF#TK>t%sVsi`$J7De!tgZct=dW|fwPPG-}!?d2@@1AxBy)Krr!4Q|r zNrPWb^TxughRTM>awCF&2OI$#+-@D2HAA-=JW`XvgYN>?^#?{hZ;QmJnp{_-L4yCJ zQ^*R??ipKT+SO)WttJk>a+B~I=<{4Ha(!yG<|azD;Dc@hnKf9=ZSwoUPZD^e->eDl zei1rZE%+W_2RI<`SGi_QG^D0?)Hoe_H~ay{Js*3e=5<~FF#{BU31AVp@NDdrxlr2^ zK%sI;Qv$YtEbtjW$8N3fS}kYQcB$G;YXSHU3;;iXqUUBUrl@uY)N-NPP3wJEz^dLI z+n%Adh;22ys)iqU>YLVcU;!8b_B>CE)Sen$P_vJE?z1$fz%=jyIP`oi5{GJXT8%#G zrB6%#1;&6`;LP*3COK1sV`}o*l0Far3m68LfJ@Kc8st*V4XeQytLGO_C16uG315L5 zuZN}NMvZ0FTq)@bWda?{H=th!E0@b2ul+av0WKhHc^+0ykN^Mx07*qoM6N<$f?$O) Ang9R* literal 0 HcmV?d00001 diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index e3da4637b6..8b8ccd5f82 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -503,8 +503,8 @@ CropWidth=146 InitCommand=horizalign,left;vertalign,top;shadowlength,2;zoom,0.5; [ScreenInstructions] -#NextScreenArcade=ScreenSelectMusic -NextScreenArcade=ScreenSelectCharacter +NextScreenArcade=ScreenSelectMusic +#NextScreenArcade=ScreenSelectCharacter NextScreenNonstop=ScreenSelectCourse NextScreenOni=ScreenSelectCourse NextScreenEndless=ScreenSelectCourse @@ -2385,20 +2385,22 @@ TitleP1OnCommand=x,140;y,80;addx,-400;bounceend,0.5;addx,400 TitleP1OffCommand=sleep,0.2;bouncebegin,0.5;addx,-400 TitleP2OnCommand=x,500;y,80;addx,400;bounceend,0.5;addx,-400 TitleP2OffCommand=sleep,0.2;bouncebegin,0.5;addx,400 -CharacterP1OnCommand=x,140;y,180;addx,-400;bounceend,0.5;addx,400 -CharacterP1OffCommand=sleep,0.2;bouncebegin,0.5;addx,-400 -CharacterP2OnCommand=x,500;y,180;addx,400;bounceend,0.5;addx,-400 -CharacterP2OffCommand=sleep,0.2;bouncebegin,0.5;addx,400 -CharacterArrowsP1OnCommand=x,140;y,180;diffusealpha,0;linear,0.3;diffusealpha,1 -CharacterArrowsP1OffCommand=linear,0.3;diffusealpha,0 -CharacterArrowsP2OnCommand=x,500;y,180;diffusealpha,0;linear,0.3;diffusealpha,1 -CharacterArrowsP2OffCommand=linear,0.3;diffusealpha,0 +CardP1OnCommand=x,140;y,180;addx,-400;bounceend,0.5;addx,400 +CardP1OffCommand=sleep,0.2;bouncebegin,0.5;addx,-400 +CardP2OnCommand=x,500;y,180;addx,400;bounceend,0.5;addx,-400 +CardP2OffCommand=sleep,0.2;bouncebegin,0.5;addx,400 +CardArrowsP1OnCommand=x,140;y,180;diffusealpha,0;linear,0.3;diffusealpha,1 +CardArrowsP1OffCommand=linear,0.3;diffusealpha,0 +CardArrowsP2OnCommand=x,500;y,180;diffusealpha,0;linear,0.3;diffusealpha,1 +CardArrowsP2OffCommand=linear,0.3;diffusealpha,0 ExplanationOnCommand=x,320;y,140;diffusealpha,0;linear,0.3;diffusealpha,1 ExplanationOffCommand=linear,0.3;diffusealpha,0 AttackFrameP1OnCommand=x,140;y,380;addx,-400;bounceend,0.5;addx,400 AttackFrameP1OffCommand=sleep,0.2;bouncebegin,0.5;addx,-400 AttackFrameP2OnCommand=x,500;y,380;addx,400;bounceend,0.5;addx,-400 AttackFrameP2OffCommand=sleep,0.2;bouncebegin,0.5;addx,400 +IconWidth=40 +IconHeight=40 IconsP1StartX=128 IconsP1StartY=356 IconsP2StartX=488 diff --git a/stepmania/src/ScreenSelectCharacter.cpp b/stepmania/src/ScreenSelectCharacter.cpp index bda377c6e2..0f7b4b1ff5 100644 --- a/stepmania/src/ScreenSelectCharacter.cpp +++ b/stepmania/src/ScreenSelectCharacter.cpp @@ -21,18 +21,21 @@ #include "GameState.h" #include "Character.h" #include "PrefsManager.h" +#include "RageTextureManager.h" #define TITLE_ON_COMMAND( p ) THEME->GetMetric ("ScreenSelectCharacter",ssprintf("TitleP%dOnCommand",p+1)) #define TITLE_OFF_COMMAND( p ) THEME->GetMetric ("ScreenSelectCharacter",ssprintf("TitleP%dOffCommand",p+1)) -#define CHARACTER_ON_COMMAND( p ) THEME->GetMetric ("ScreenSelectCharacter",ssprintf("CharacterP%dOnCommand",p+1)) -#define CHARACTER_OFF_COMMAND( p ) THEME->GetMetric ("ScreenSelectCharacter",ssprintf("CharacterP%dOffCommand",p+1)) -#define CHARACTER_ARROWS_ON_COMMAND( p ) THEME->GetMetric ("ScreenSelectCharacter",ssprintf("CharacterArrowsP%dOnCommand",p+1)) -#define CHARACTER_ARROWS_OFF_COMMAND( p ) THEME->GetMetric ("ScreenSelectCharacter",ssprintf("CharacterArrowsP%dOffCommand",p+1)) +#define CARD_ON_COMMAND( p ) THEME->GetMetric ("ScreenSelectCharacter",ssprintf("CardP%dOnCommand",p+1)) +#define CARD_OFF_COMMAND( p ) THEME->GetMetric ("ScreenSelectCharacter",ssprintf("CardP%dOffCommand",p+1)) +#define CARD_ARROWS_ON_COMMAND( p ) THEME->GetMetric ("ScreenSelectCharacter",ssprintf("CardArrowsP%dOnCommand",p+1)) +#define CARD_ARROWS_OFF_COMMAND( p ) THEME->GetMetric ("ScreenSelectCharacter",ssprintf("CardArrowsP%dOffCommand",p+1)) #define EXPLANATION_ON_COMMAND THEME->GetMetric ("ScreenSelectCharacter","ExplanationOnCommand") #define EXPLANATION_OFF_COMMAND THEME->GetMetric ("ScreenSelectCharacter","ExplanationOffCommand") #define ATTACK_FRAME_ON_COMMAND( p ) THEME->GetMetric ("ScreenSelectCharacter",ssprintf("AttackFrameP%dOnCommand",p+1)) #define ATTACK_FRAME_OFF_COMMAND( p ) THEME->GetMetric ("ScreenSelectCharacter",ssprintf("AttackFrameP%dOffCommand",p+1)) +#define ICON_WIDTH THEME->GetMetricF("ScreenSelectCharacter","IconWidth") +#define ICON_HEIGHT THEME->GetMetricF("ScreenSelectCharacter","IconHeight") #define ICONS_START_X( p ) THEME->GetMetricF("ScreenSelectCharacter",ssprintf("IconsP%dStartX",p+1)) #define ICONS_START_Y( p ) THEME->GetMetricF("ScreenSelectCharacter",ssprintf("IconsP%dStartY",p+1)) #define ICONS_SPACING_X THEME->GetMetricF("ScreenSelectCharacter","IconsSpacingX") @@ -89,12 +92,18 @@ ScreenSelectCharacter::ScreenSelectCharacter() : Screen("ScreenSelectCharacter") this->AddChild( &m_sprTitle[p] ); - m_sprCharacter[p].Command( CHARACTER_ON_COMMAND(p) ); - this->AddChild( &m_sprCharacter[p] ); + m_sprCard[p].Command( CARD_ON_COMMAND(p) ); + this->AddChild( &m_sprCard[p] ); - m_sprCharacterArrows[p].Load( THEME->GetPathToG("ScreenSelectCharacter character arrows") ); - m_sprCharacterArrows[p].Command( CHARACTER_ARROWS_ON_COMMAND(p) ); - this->AddChild( &m_sprCharacterArrows[p] ); + m_sprCardArrows[p].Load( THEME->GetPathToG("ScreenSelectCharacter card arrows") ); + m_sprCardArrows[p].Command( CARD_ARROWS_ON_COMMAND(p) ); + this->AddChild( &m_sprCardArrows[p] ); + + for( unsigned i=0; iAddChild( &m_sprIcons[p][i] ); + } if(GAMESTATE->m_PlayMode == PLAY_MODE_BATTLE || GAMESTATE->m_PlayMode == PLAY_MODE_RAVE) { @@ -207,7 +216,7 @@ void ScreenSelectCharacter::BeforeRowChange( PlayerNumber pn ) { case CHOOSING_CPU_CHARACTER: case CHOOSING_HUMAN_CHARACTER: - m_sprCharacterArrows[pnAffected].SetEffectNone(); + m_sprCardArrows[pnAffected].SetEffectNone(); break; } } @@ -219,7 +228,7 @@ void ScreenSelectCharacter::AfterRowChange( PlayerNumber pn ) { case CHOOSING_CPU_CHARACTER: case CHOOSING_HUMAN_CHARACTER: - m_sprCharacterArrows[pnAffected].SetEffectGlowShift(); + m_sprCardArrows[pnAffected].SetEffectGlowShift(); break; } } @@ -233,13 +242,28 @@ void ScreenSelectCharacter::AfterValueChange( PlayerNumber pn ) case CHOOSING_HUMAN_CHARACTER: { Character* pChar = GAMESTATE->m_pCharacters[ m_iSelectedCharacter[pnAffected] ]; - m_sprCharacter[pnAffected].UnloadTexture(); - m_sprCharacter[pnAffected].Load( pChar->GetCardPath() ); + m_sprCard[pnAffected].UnloadTexture(); + m_sprCard[pnAffected].Load( pChar->GetCardPath() ); if(GAMESTATE->m_PlayMode == PLAY_MODE_BATTLE || GAMESTATE->m_PlayMode == PLAY_MODE_RAVE) for( int i=0; im_sAttacks[i][j] ); + + unsigned c = m_iSelectedCharacter[pnAffected] - MAX_CHAR_ICONS_TO_SHOW/2; + WRAP( c, GAMESTATE->m_pCharacters.size() ); + + for( unsigned i=0; im_pCharacters.size() ); + Character* pCharacter = GAMESTATE->m_pCharacters[c]; + Banner &banner = m_sprIcons[pnAffected][i]; + banner.LoadIconFromCharacter( pCharacter ); + float fX = (pnAffected==PLAYER_1) ? 320-ICON_WIDTH : 320+ICON_WIDTH; + float fY = SCALE( i, 0.f, MAX_CHAR_ICONS_TO_SHOW-1.f, 240-(MAX_CHAR_ICONS_TO_SHOW/2*ICON_HEIGHT), 240+(MAX_CHAR_ICONS_TO_SHOW/2*ICON_HEIGHT)); + banner.SetXY( fX, fY ); + } } break; case FINISHED_CHOOSING: @@ -336,9 +360,9 @@ void ScreenSelectCharacter::TweenOffScreen() { for( int p=0; pm_PlayMode == PLAY_MODE_BATTLE || GAMESTATE->m_PlayMode == PLAY_MODE_RAVE) { m_sprAttackFrame[p].Command( ATTACK_FRAME_OFF_COMMAND(p) ); diff --git a/stepmania/src/ScreenSelectCharacter.h b/stepmania/src/ScreenSelectCharacter.h index bee627c13b..5b9a3b1960 100644 --- a/stepmania/src/ScreenSelectCharacter.h +++ b/stepmania/src/ScreenSelectCharacter.h @@ -14,8 +14,11 @@ #include "RandomSample.h" #include "MenuElements.h" #include "OptionIcon.h" +#include "Banner.h" +#define MAX_CHAR_ICONS_TO_SHOW 11 + class ScreenSelectCharacter : public Screen { public: @@ -58,8 +61,10 @@ private: Sprite m_sprTitle[NUM_PLAYERS]; - Sprite m_sprCharacter[NUM_PLAYERS]; - Sprite m_sprCharacterArrows[NUM_PLAYERS]; + Banner m_sprIcons[NUM_PLAYERS][MAX_CHAR_ICONS_TO_SHOW]; + + Sprite m_sprCard[NUM_PLAYERS]; + Sprite m_sprCardArrows[NUM_PLAYERS]; Sprite m_sprAttackFrame[NUM_PLAYERS]; OptionIcon m_AttackIcons[NUM_PLAYERS][NUM_ATTACK_LEVELS][NUM_ATTACKS_PER_LEVEL];