option icons are almost working...

This commit is contained in:
Chris Danford
2002-09-03 06:33:08 +00:00
parent a78bcf7c7f
commit 40277568d0
21 changed files with 303 additions and 235 deletions
+1
View File
@@ -500,6 +500,7 @@ void Actor::Fade( float fSleepSeconds, CString sFadeString, float fFadeSeconds,
mod.glow.a *= CONTAINS("glow")?1:0;
StopTweening();
m_current = bOnToScreenOrOffOfScreen ? original : mod;
BeginTweening( fSleepSeconds );
BeginTweening( fFadeSeconds, tt );
+2 -2
View File
@@ -177,8 +177,8 @@ public:
void Fade( float fSleepSeconds, CString sFadeString, float fFadeSeconds, bool bOnToScreenOrOffOfScreen );
void FadeOntoScreen( float fSleepSeconds, CString sFadeString, float fFadeSeconds ) { Fade(fSleepSeconds,sFadeString,fFadeSeconds,false); };
void FadeOffScreen( float fSleepSeconds, CString sFadeString, float fFadeSeconds ) { Fade(fSleepSeconds,sFadeString,fFadeSeconds,true); };
void FadeOn( float fSleepSeconds, CString sFadeString, float fFadeSeconds ) { Fade(fSleepSeconds,sFadeString,fFadeSeconds,false); };
void FadeOff( float fSleepSeconds, CString sFadeString, float fFadeSeconds ) { Fade(fSleepSeconds,sFadeString,fFadeSeconds,true); };
protected:
+6 -4
View File
@@ -80,6 +80,8 @@ bool BitmapText::LoadFromFont( CString sFontFilePath )
// load font
m_pFont = FONT->LoadFont( sFontFilePath, "" );
m_iLineHeight = m_pFont->m_pTexture->GetSourceFrameHeight();
return true;
}
@@ -187,9 +189,9 @@ void BitmapText::DrawPrimitives()
int iY; // the center position of the first row of characters
switch( m_VertAlign )
{
case align_bottom: iY = -(m_iNumLines) * iHeight + iHeight/2; break;
case align_middle: iY = -(m_iNumLines-1) * iHeight/2; break;
case align_top: iY = + iHeight/2; break;
case align_bottom: iY = -(m_iNumLines) * m_iLineHeight + m_iLineHeight/2; break;
case align_middle: iY = -(m_iNumLines-1) * m_iLineHeight/2; break;
case align_top: iY = + m_iLineHeight/2; break;
default: ASSERT( false );
}
@@ -257,7 +259,7 @@ void BitmapText::DrawPrimitives()
v[iNumV++].t = D3DXVECTOR2( frectTexCoords.right + fExtraTexCoords, frectTexCoords.bottom ); // bottom right
}
iY += iHeight;
iY += m_iLineHeight;
}
+2
View File
@@ -33,6 +33,7 @@ public:
int GetWidestLineWidthInSourcePixels() { return m_iWidestLineWidth; };
void CropToWidth( int iWidthInSourcePixels );
void SetLineHeight( int iLineHeight ) { m_iLineHeight = iLineHeight; };
virtual void DrawPrimitives();
@@ -50,6 +51,7 @@ protected:
int m_iNumLines;
int m_iLineWidths[MAX_TEXT_LINES]; // in source pixels
int m_iWidestLineWidth; // in source pixels
int m_iLineHeight;
bool m_bRainbow;
};
+8 -20
View File
@@ -18,6 +18,12 @@
#include "GameConstantsAndTypes.h"
#define LABEL_OFFSET_X( i ) THEME->GetMetricF("GrooveRadar",ssprintf("Label%dOffsetX",i+1))
#define LABEL_OFFSET_Y( i ) THEME->GetMetricF("GrooveRadar",ssprintf("Label%dOffsetY",i+1))
float RADAR_VALUE_ROTATION( int iValueIndex ) { return D3DX_PI/2 + D3DX_PI*2 / 5.0f * iValueIndex; }
const float RADAR_EDGE_WIDTH = 3;
@@ -28,28 +34,10 @@ GrooveRadar::GrooveRadar()
for( int c=0; c<NUM_RADAR_CATEGORIES; c++ )
{
const float fRadius = m_GrooveRadarValueMap.m_sprRadarBase.GetZoomedHeight()/2.0f;
const float fRotation = RADAR_VALUE_ROTATION(c);
float fX = cosf(fRotation) * fRadius;
// push the labels out a little
switch( c )
{
case 0: break;
case 1:
case 4: if( fabsf(fX) > 1 ) fX += fX/fabsf(fX) * 40; break;
case 2:
case 3: if( fabsf(fX) > 1 ) fX += fX/fabsf(fX) * 50; break;
default: ASSERT( false );
}
const float fY = -sinf(fRotation) * fRadius * 1.15f;
m_sprRadarLabels[c].Load( THEME->GetPathTo("Graphics","select music radar words") );
m_sprRadarLabels[c].Load( THEME->GetPathTo("Graphics","select music radar labels 1x5") );
m_sprRadarLabels[c].StopAnimating();
m_sprRadarLabels[c].SetState( c );
m_sprRadarLabels[c].SetXY( fX, fY );
m_sprRadarLabels[c].SetXY( LABEL_OFFSET_X(c), LABEL_OFFSET_Y(c) );
this->AddChild( &m_sprRadarLabels[c] );
}
}
+14 -24
View File
@@ -21,6 +21,7 @@
#include "GameConstantsAndTypes.h"
#include "GameState.h"
// WheelItem stuff
#define ICON_X THEME->GetMetricF("WheelItemDisplay","IconX")
#define SONG_NAME_X THEME->GetMetricF("WheelItemDisplay","SongNameX")
@@ -30,8 +31,7 @@
#define ROULETTE_ZOOM THEME->GetMetricF("WheelItemDisplay","RouletteZoom")
#define COURSE_X THEME->GetMetricF("WheelItemDisplay","CourseX")
#define COURSE_ZOOM THEME->GetMetricF("WheelItemDisplay","CourseZoom")
#define GRADE_P1_X THEME->GetMetricF("WheelItemDisplay","GradeP1X")
#define GRADE_P2_X THEME->GetMetricF("WheelItemDisplay","GradeP2Y")
#define GRADE_X( p ) THEME->GetMetricF("WheelItemDisplay",ssprintf("GradeP%dX",p+1))
// MusicWheel stuff
@@ -43,27 +43,12 @@
#define LOCKED_INITIAL_VELOCITY THEME->GetMetricF("MusicWheel","LockedInitialVelocity")
#define SCROLL_BAR_X THEME->GetMetricF("MusicWheel","ScrollBarX")
#define SCROLL_BAR_HEIGHT THEME->GetMetricI("MusicWheel","ScrollBarHeight")
#define SECTION_COLOR_1 THEME->GetMetricC("MusicWheel","SectionColor1")
#define SECTION_COLOR_2 THEME->GetMetricC("MusicWheel","SectionColor2")
#define SECTION_COLOR_3 THEME->GetMetricC("MusicWheel","SectionColor3")
#define SECTION_COLOR_4 THEME->GetMetricC("MusicWheel","SectionColor4")
#define SECTION_COLOR_5 THEME->GetMetricC("MusicWheel","SectionColor5")
#define SECTION_COLOR_6 THEME->GetMetricC("MusicWheel","SectionColor6")
#define SECTION_COLOR_7 THEME->GetMetricC("MusicWheel","SectionColor7")
const int NUM_SECTION_COLORS = 7;
#define ITEM_SPACING_Y THEME->GetMetricF("MusicWheel","ItemSpacingY")
#define NUM_SECTION_COLORS THEME->GetMetricI("MusicWheel","NumSectionColors")
#define SECTION_COLORS( i ) THEME->GetMetricC("MusicWheel",ssprintf("SectionColor%d",i+1))
float g_fItemSpacingY; // cache
D3DXCOLOR SECTION_COLORS( int i ) {
switch( i ) {
case 0: return SECTION_COLOR_1;
case 1: return SECTION_COLOR_2;
case 2: return SECTION_COLOR_3;
case 3: return SECTION_COLOR_4;
case 4: return SECTION_COLOR_5;
case 5: return SECTION_COLOR_6;
case 6: return SECTION_COLOR_7;
default: ASSERT(0); return D3DXCOLOR(1,1,1,1);
}
}
inline D3DXCOLOR GetNextSectionColor() {
static int i=0;
i = i % NUM_SECTION_COLORS;
@@ -114,7 +99,7 @@ WheelItemDisplay::WheelItemDisplay()
{
m_GradeDisplay[p].Load( THEME->GetPathTo("Graphics","select music small grades 2x8") );
m_GradeDisplay[p].SetZoom( 1.0f );
m_GradeDisplay[p].SetXY( p==PLAYER_1 ? GRADE_P1_X : GRADE_P2_X, 0 );
m_GradeDisplay[p].SetXY( GRADE_X(p), 0 );
}
m_textCourse.LoadFromFont( THEME->GetPathTo("Fonts","text banner") );
@@ -288,6 +273,11 @@ MusicWheel::MusicWheel()
{
LOG->Trace( "MusicWheel::MusicWheel()" );
// update theme metric cache
g_fItemSpacingY = ITEM_SPACING_Y;
// for debugging
if( GAMESTATE->m_CurStyle == STYLE_NONE )
GAMESTATE->m_CurStyle = STYLE_DANCE_SINGLE;
@@ -620,7 +610,7 @@ void MusicWheel::SwitchSortOrder()
float MusicWheel::GetBannerY( float fPosOffsetsFromMiddle )
{
return (float)roundf( fPosOffsetsFromMiddle*44 );
return (float)roundf( fPosOffsetsFromMiddle*g_fItemSpacingY );
}
float MusicWheel::GetBannerBrightness( float fPosOffsetsFromMiddle )
+18 -7
View File
@@ -14,30 +14,41 @@
#include "ThemeManager.h"
#include "PlayerOptions.h"
#define TEXT_X THEME->GetMetricF("OptionIcon","TextX")
#define TEXT_Y THEME->GetMetricF("OptionIcon","TextY")
#define TEXT_OFFSET_X THEME->GetMetricF("OptionIcon","TextOffsetX")
#define TEXT_OFFSET_Y THEME->GetMetricF("OptionIcon","TextOffsetY")
#define TEXT_H_ALIGN THEME->GetMetricI("OptionIcon","TextHAlign")
#define TEXT_V_ALIGN THEME->GetMetricI("OptionIcon","TextVAlign")
#define TEXT_WIDTH THEME->GetMetricI("OptionIcon","TextWidth")
#define TEXT_ZOOM THEME->GetMetricF("OptionIcon","TextZoom")
OptionIcon::OptionIcon()
{
m_spr.Load( THEME->GetPathTo("Graphics","select music option icons 3x2") );
m_spr.StopAnimating();
this->AddChild( &m_spr );
m_text.LoadFromFont( THEME->GetPathTo("Fonts","option icons") );
m_text.TurnShadowOff();
m_text.SetZoom( TEXT_ZOOM );
m_text.SetXY( TEXT_OFFSET_X, TEXT_OFFSET_Y );
m_text.SetHorizAlign( (Actor::HorizAlign)TEXT_H_ALIGN );
m_text.SetVertAlign( (Actor::VertAlign)TEXT_V_ALIGN );
this->AddChild( &m_text );
}
void OptionIcon::Load( PlayerNumber pn, CString sText, bool bHeader )
{
bool bVacant = (sText=="");
m_spr.SetState( pn*3 + bVacant?1:2 );
m_spr.SetState( pn*3 + (bHeader?0:(bVacant?1:2)) );
m_text.SetText( sText );
m_text.SetText( bHeader ? "" : sText );
m_text.SetZoom( TEXT_ZOOM );
m_text.CropToWidth( TEXT_WIDTH );
m_text.SetXY( TEXT_X, TEXT_Y );
m_text.SetHorizAlign( (Actor::HorizAlign)TEXT_H_ALIGN );
m_text.SetVertAlign( (Actor::VertAlign)TEXT_V_ALIGN );
}
void OptionIcon::DrawPrimitives()
{
ActorFrame::DrawPrimitives();
}
+1
View File
@@ -23,6 +23,7 @@ public:
OptionIcon();
void Load( PlayerNumber pn, CString sText, bool bHeader = false );
void DrawPrimitives();
protected:
BitmapText m_text;
+40
View File
@@ -0,0 +1,40 @@
#include "stdafx.h"
/*
-----------------------------------------------------------------------------
Class: OptionIconRow
Desc: A graphic displayed in the OptionIconRow during Dancing.
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
Chris Danford
-----------------------------------------------------------------------------
*/
#include "OptionIconRow.h"
#include "ThemeManager.h"
#include "PlayerOptions.h"
#define SPACING_X THEME->GetMetricF("OptionIconRow","SpacingX")
#define SPACING_Y THEME->GetMetricF("OptionIconRow","SpacingY")
OptionIconRow::OptionIconRow()
{
for( int i=0; i<NUM_OPTION_COLS; i++ )
{
m_OptionIcon[i].SetXY( i*SPACING_X, i*SPACING_Y );
this->AddChild( &m_OptionIcon[i] );
}
}
void OptionIconRow::Refresh( PlayerNumber pn )
{
for( int i=0; i<NUM_OPTION_COLS; i++ )
m_OptionIcon[i].Load( pn, "BLAH", i==0 );
}
void OptionIconRow::DrawPrimitives()
{
ActorFrame::DrawPrimitives();
}
+36
View File
@@ -0,0 +1,36 @@
#ifndef OptionIconRow_H
#define OptionIconRow_H
/*
-----------------------------------------------------------------------------
Class: OptionIconRow
Desc: Shows PlayerOptions and SongOptions in icon form.
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
Chris Danford
-----------------------------------------------------------------------------
*/
#include "ActorFrame.h"
#include "OptionIcon.h"
struct PlayerOptions;
const int NUM_OPTION_COLS = 8;
class OptionIconRow : public ActorFrame
{
public:
OptionIconRow();
void Refresh( PlayerNumber pn );
virtual void DrawPrimitives();
protected:
PlayerNumber m_PlayerNumber;
OptionIcon m_OptionIcon[NUM_OPTION_COLS];
};
#endif
+3 -1
View File
@@ -126,7 +126,9 @@ ScreenMusicScroll::ScreenMusicScroll()
{
LOG->Trace( "ScreenMusicScroll::ScreenMusicScroll()" );
int i;
int i;
GAMESTATE->Reset(); // so that credits message for both players will show
m_sprBackground.Load( THEME->GetPathTo("Graphics","music scroll background") );
m_sprBackground.StretchTo( CRect(SCREEN_LEFT,SCREEN_TOP,SCREEN_RIGHT,SCREEN_BOTTOM) );
+34 -13
View File
@@ -21,18 +21,15 @@
#include "GameState.h"
#define ICONS_X( p ) THEME->GetMetricF("ScreenOptions",ssprintf("IconsP%dX",p+1))
#define LABELS_X THEME->GetMetricF("ScreenOptions","LabelsX")
#define ITEMS_START_X THEME->GetMetricF("ScreenOptions","ItemsStartX")
#define ITEMS_GAP_X THEME->GetMetricF("ScreenOptions","ItemsGapX")
#define ITEMS_START_Y THEME->GetMetricF("ScreenOptions","ItemsStartY")
#define ITEMS_SPACING_Y THEME->GetMetricF("ScreenOptions","ItemsSpacingY")
#define HELP_TEXT THEME->GetMetric("ScreenOptions","HelpText")
#define TIMER_SECONDS THEME->GetMetricI("ScreenOptions","TimerSeconds")
const float HEADER_X = CENTER_X;
const float HEADER_Y = 50;
const float HELP_X = CENTER_X;
const float HELP_Y = SCREEN_HEIGHT-35;
const float ITEM_GAP_X = 14;
const float LABELS_X = 80;
const float LINE_START_Y = 80;
const float LINE_GAP_Y = 34;
const float ITEMS_START_X = 160;
const ScreenMessage SM_PlaySample = ScreenMessage(SM_User-4);
const ScreenMessage SM_GoToPrevScreen = ScreenMessage(SM_User-5);
@@ -107,6 +104,9 @@ void ScreenOptions::Init( InputMode im, OptionLineData optionLineData[], int iNu
{
m_Underline[p][l].Load( (PlayerNumber)p, true );
m_framePage.AddChild( &m_Underline[p][l] );
m_OptionIcons[p][l].Load( (PlayerNumber)p, "BLAH", false );
m_framePage.AddChild( &m_OptionIcons[p][l] );
}
m_Highlight[p].Load( (PlayerNumber)p, false );
@@ -130,6 +130,7 @@ void ScreenOptions::Init( InputMode im, OptionLineData optionLineData[], int iNu
InitOptionsText();
PositionUnderlines();
PositionIcons();
PositionHighlights();
}
@@ -152,19 +153,22 @@ void ScreenOptions::GetWidthXY( PlayerNumber p, int iRow, int &iWidthOut, int &i
void ScreenOptions::InitOptionsText()
{
const float fLineGap = LINE_GAP_Y - max(0, (m_iNumOptionLines-10)*2);
const float fLineGap = ITEMS_SPACING_Y - max(0, (m_iNumOptionLines-10)*2);
// init m_textOptions from optionLines
for( int i=0; i<m_iNumOptionLines; i++ ) // foreach options line
{
OptionLineData &optline = m_OptionLineData[i];
float fY = LINE_START_Y + fLineGap*i;
float fY = ITEMS_START_Y + fLineGap*i;
BitmapText &title = m_textOptionLineTitles[i];
title.LoadFromFont( THEME->GetPathTo("Fonts","Header2") );
title.SetText( optline.szTitle );
title.SetLineHeight( 20 );
CString sText = optline.szTitle;
sText.Replace( " ", "\n" );
title.SetText( sText );
title.SetXY( LABELS_X, fY );
title.SetZoom( 0.7f );
title.SetVertAlign( Actor::align_middle );
@@ -186,7 +190,7 @@ void ScreenOptions::InitOptionsText()
float fItemWidth = option.GetWidestLineWidthInSourcePixels() * option.GetZoomX();
fX += fItemWidth/2;
option.SetXY( fX, fY );
fX += fItemWidth/2 + ITEM_GAP_X;
fX += fItemWidth/2 + ITEMS_GAP_X;
}
}
}
@@ -240,6 +244,23 @@ void ScreenOptions::PositionUnderlines()
}
void ScreenOptions::PositionIcons()
{
// Set the position of the underscores showing the current choice for each option line.
for( int p=0; p<NUM_PLAYERS; p++ ) // foreach player
{
for( int i=0; i<m_iNumOptionLines; i++ ) // foreach options line
{
OptionIcon &icon = m_OptionIcons[p][i];
int iWidth, iX, iY;
GetWidthXY( (PlayerNumber)p, i, iWidth, iX, iY );
icon.SetXY( ICONS_X(p), (float)iY );
}
}
}
void ScreenOptions::PositionHighlights()
{
// Set the position of the highlight showing the current option the user is changing.
+3
View File
@@ -19,6 +19,7 @@
#include "Quad.h"
#include "MenuElements.h"
#include "OptionsCursor.h"
#include "OptionIcon.h"
const int MAX_OPTION_LINES = 20;
@@ -56,6 +57,7 @@ protected:
void InitOptionsText();
void GetWidthXY( PlayerNumber p, int iRow, int &iWidthOut, int &iXOut, int &iYOut );
void PositionUnderlines();
void PositionIcons();
void PositionHighlights();
void TweenHighlight( PlayerNumber player_no );
virtual void OnChange();
@@ -93,6 +95,7 @@ protected:
// Quad m_SelectionHighlight[NUM_PLAYERS];
OptionsCursor m_Underline[NUM_PLAYERS][MAX_OPTION_LINES];
OptionIcon m_OptionIcons[NUM_PLAYERS][MAX_OPTION_LINES];
OptionsCursor m_Highlight[NUM_PLAYERS];
RandomSample m_SoundChangeCol;
+1 -1
View File
@@ -530,7 +530,7 @@ void ScreenSelectDifficulty::TweenOnScreen()
m_sprCursor[p].SetTweenRotationZ( 0 );
m_sprCursor[p].SetTweenZoom( 1 );
*/
m_sprCursor[p].FadeOntoScreen( 0, "SpinZ ZoomX ZoomY Fade", 0.3f );
m_sprCursor[p].FadeOn( 0, "SpinZ ZoomX ZoomY Fade", 0.3f );
m_sprCursorShadow[p].SetXY( CURSOR_X(iSelection,(PlayerNumber)p), CURSOR_Y(iSelection,(PlayerNumber)p) );
D3DXCOLOR colorOriginal = m_sprCursorShadow[p].GetDiffuse();
+111 -136
View File
@@ -28,42 +28,44 @@
#include "CodeDetector.h"
#define BANNER_FRAME_X THEME->GetMetricF("ScreenSelectMusic","BannerFrameX")
#define BANNER_FRAME_Y THEME->GetMetricF("ScreenSelectMusic","BannerFrameY")
#define BANNER_X THEME->GetMetricF("ScreenSelectMusic","BannerX")
#define BANNER_Y THEME->GetMetricF("ScreenSelectMusic","BannerY")
#define BANNER_WIDTH THEME->GetMetricF("ScreenSelectMusic","BannerWidth")
#define BANNER_HEIGHT THEME->GetMetricF("ScreenSelectMusic","BannerHeight")
#define BPM_X THEME->GetMetricF("ScreenSelectMusic","BPMX")
#define BPM_Y THEME->GetMetricF("ScreenSelectMusic","BPMY")
#define STAGE_X THEME->GetMetricF("ScreenSelectMusic","StageX")
#define STAGE_Y THEME->GetMetricF("ScreenSelectMusic","StageY")
#define CD_TITLE_X THEME->GetMetricF("ScreenSelectMusic","CDTitleX")
#define CD_TITLE_Y THEME->GetMetricF("ScreenSelectMusic","CDTitleY")
#define DIFFICULTY_X THEME->GetMetricF("ScreenSelectMusic","DifficultyX")
#define DIFFICULTY_Y THEME->GetMetricF("ScreenSelectMusic","DifficultyY")
#define ICON_X( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("IconP%dX",p+1))
#define ICON_Y( i ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("IconP%dY",i+1))
#define RADAR_X THEME->GetMetricF("ScreenSelectMusic","RadarX")
#define RADAR_Y THEME->GetMetricF("ScreenSelectMusic","RadarY")
#define SORT_ICON_X THEME->GetMetricF("ScreenSelectMusic","SortIconX")
#define SORT_ICON_Y THEME->GetMetricF("ScreenSelectMusic","SortIconY")
#define SCORE_X( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("ScoreP%dX",p+1))
#define SCORE_Y( i ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("ScoreP%dY",i+1))
#define METER_FRAME_X THEME->GetMetricF("ScreenSelectMusic","MeterFrameX")
#define METER_FRAME_Y THEME->GetMetricF("ScreenSelectMusic","MeterFrameY")
#define METER_X( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("MeterP%dX",p+1))
#define METER_Y( i ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("MeterP%dY",i+1))
#define WHEEL_X THEME->GetMetricF("ScreenSelectMusic","WheelX")
#define WHEEL_Y THEME->GetMetricF("ScreenSelectMusic","WheelY")
#define PLAYER_OPTIONS_X( p )THEME->GetMetricF("ScreenSelectMusic",ssprintf("PlayerOptionsP%dX",p+1))
#define PLAYER_OPTIONS_Y( i )THEME->GetMetricF("ScreenSelectMusic",ssprintf("PlayerOptionsP%dY",i+1))
#define SONG_OPTIONS_X THEME->GetMetricF("ScreenSelectMusic","SongOptionsX")
#define SONG_OPTIONS_Y THEME->GetMetricF("ScreenSelectMusic","SongOptionsY")
#define OPTION_ICONS_X THEME->GetMetricF("ScreenSelectMusic","OptionIconsX")
#define OPTION_ICONS_Y THEME->GetMetricF("ScreenSelectMusic","OptionIconsY")
#define HELP_TEXT THEME->GetMetric("ScreenSelectMusic","HelpText")
#define TIMER_SECONDS THEME->GetMetricI("ScreenSelectMusic","TimerSeconds")
#define BANNER_FRAME_X THEME->GetMetricF("ScreenSelectMusic","BannerFrameX")
#define BANNER_FRAME_Y THEME->GetMetricF("ScreenSelectMusic","BannerFrameY")
#define BANNER_X THEME->GetMetricF("ScreenSelectMusic","BannerX")
#define BANNER_Y THEME->GetMetricF("ScreenSelectMusic","BannerY")
#define BANNER_WIDTH THEME->GetMetricF("ScreenSelectMusic","BannerWidth")
#define BANNER_HEIGHT THEME->GetMetricF("ScreenSelectMusic","BannerHeight")
#define BPM_X THEME->GetMetricF("ScreenSelectMusic","BPMX")
#define BPM_Y THEME->GetMetricF("ScreenSelectMusic","BPMY")
#define STAGE_X THEME->GetMetricF("ScreenSelectMusic","StageX")
#define STAGE_Y THEME->GetMetricF("ScreenSelectMusic","StageY")
#define CD_TITLE_X THEME->GetMetricF("ScreenSelectMusic","CDTitleX")
#define CD_TITLE_Y THEME->GetMetricF("ScreenSelectMusic","CDTitleY")
#define DIFFICULTY_FRAME_X( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("DifficultyFrameP%dX",p+1))
#define DIFFICULTY_FRAME_Y( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("DifficultyFrameP%dY",p+1))
#define DIFFICULTY_ICON_X( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("DifficultyIconP%dX",p+1))
#define DIFFICULTY_ICON_Y( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("DifficultyIconP%dY",p+1))
#define RADAR_X THEME->GetMetricF("ScreenSelectMusic","RadarX")
#define RADAR_Y THEME->GetMetricF("ScreenSelectMusic","RadarY")
#define SORT_ICON_X THEME->GetMetricF("ScreenSelectMusic","SortIconX")
#define SORT_ICON_Y THEME->GetMetricF("ScreenSelectMusic","SortIconY")
#define SCORE_FRAME_X( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("ScoreFrameP%dX",p+1))
#define SCORE_FRAME_Y( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("ScoreFrameP%dY",p+1))
#define SCORE_X( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("ScoreP%dX",p+1))
#define SCORE_Y( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("ScoreP%dY",p+1))
#define METER_FRAME_X( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("MeterFrameP%dX",p+1))
#define METER_FRAME_Y( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("MeterFrameP%dY",p+1))
#define METER_X( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("MeterP%dX",p+1))
#define METER_Y( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("MeterP%dY",p+1))
#define WHEEL_X THEME->GetMetricF("ScreenSelectMusic","WheelX")
#define WHEEL_Y THEME->GetMetricF("ScreenSelectMusic","WheelY")
#define PLAYER_OPTIONS_X( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("PlayerOptionsP%dX",p+1))
#define PLAYER_OPTIONS_Y( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("PlayerOptionsP%dY",p+1))
#define SONG_OPTIONS_X THEME->GetMetricF("ScreenSelectMusic","SongOptionsX")
#define SONG_OPTIONS_Y THEME->GetMetricF("ScreenSelectMusic","SongOptionsY")
#define OPTION_ICONS_X( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("OptionIconsP%dX",p+1))
#define OPTION_ICONS_Y( p ) THEME->GetMetricF("ScreenSelectMusic",ssprintf("OptionIconsP%dY",p+1))
#define HELP_TEXT THEME->GetMetric("ScreenSelectMusic","HelpText")
#define TIMER_SECONDS THEME->GetMetricI("ScreenSelectMusic","TimerSeconds")
#define SCORE_CONNECTED_TO_MUSIC_WHEEL THEME->GetMetricB("ScreenSelectMusic","ScoreConnectedToMusicWheel")
const float TWEEN_TIME = 0.5f;
@@ -101,7 +103,6 @@ ScreenSelectMusic::ScreenSelectMusic()
this->AddChild( &m_sprBannerFrame );
m_BPMDisplay.SetXY( BPM_X, BPM_Y );
m_BPMDisplay.SetZoomX( 1.0f );
this->AddChild( &m_BPMDisplay );
m_textStage.LoadFromFont( THEME->GetPathTo("Fonts","Header2") );
@@ -117,13 +118,18 @@ ScreenSelectMusic::ScreenSelectMusic()
m_sprCDTitle.SetXY( CD_TITLE_X, CD_TITLE_Y );
this->AddChild( &m_sprCDTitle );
m_sprDifficultyFrame.Load( THEME->GetPathTo("Graphics","select music difficulty frame") );
m_sprDifficultyFrame.SetXY( DIFFICULTY_X, DIFFICULTY_Y );
this->AddChild( &m_sprDifficultyFrame );
for( p=0; p<NUM_PLAYERS; p++ )
{
m_DifficultyIcon[p].SetXY( ICON_X(p), ICON_Y(p) );
if( !GAMESTATE->IsPlayerEnabled(p) )
continue; // skip
m_sprDifficultyFrame[p].Load( THEME->GetPathTo("Graphics","select music difficulty frame 2x1") );
m_sprDifficultyFrame[p].SetXY( DIFFICULTY_FRAME_X(p), DIFFICULTY_FRAME_Y(p) );
m_sprDifficultyFrame[p].StopAnimating();
m_sprDifficultyFrame[p].SetState( p );
this->AddChild( &m_sprDifficultyFrame[p] );
m_DifficultyIcon[p].SetXY( DIFFICULTY_ICON_X(p), DIFFICULTY_ICON_Y(p) );
this->AddChild( &m_DifficultyIcon[p] );
}
@@ -142,7 +148,7 @@ ScreenSelectMusic::ScreenSelectMusic()
m_textSongOptions.SetDiffuse( D3DXCOLOR(1,1,1,1) ); // white
this->AddChild( &m_textSongOptions );
/*
for( p=0; p<NUM_PLAYERS; p++ )
{
if( !GAMESTATE->IsPlayerEnabled(p) )
@@ -158,14 +164,22 @@ ScreenSelectMusic::ScreenSelectMusic()
m_textPlayerOptions[p].SetDiffuse( D3DXCOLOR(1,1,1,1) ); // white
this->AddChild( &m_textPlayerOptions[p] );
}
m_sprMeterFrame.Load( THEME->GetPathTo("Graphics","select music meter frame") );
m_sprMeterFrame.SetXY( METER_FRAME_X, METER_FRAME_Y );
this->AddChild( &m_sprMeterFrame );
*/
for( p=0; p<NUM_PLAYERS; p++ )
{
if( !GAMESTATE->IsPlayerEnabled(p) )
continue;
m_OptionIconRow[p].SetXY( OPTION_ICONS_X(p), OPTION_ICONS_Y(p) );
m_OptionIconRow[p].Refresh( (PlayerNumber)p );
this->AddChild( &m_OptionIconRow[p] );
m_sprMeterFrame[p].Load( THEME->GetPathTo("Graphics","select music meter frame") );
m_sprMeterFrame[p].SetXY( METER_FRAME_X(p), METER_FRAME_Y(p) );
m_sprMeterFrame[p].StopAnimating();
m_sprMeterFrame[p].SetState( p );
this->AddChild( &m_sprMeterFrame[p] );
m_FootMeter[p].LoadFromFont( THEME->GetPathTo("Fonts","meter") );
m_FootMeter[p].SetXY( METER_X(p), METER_Y(p) );
m_FootMeter[p].SetShadowLength( 2 );
@@ -241,72 +255,42 @@ void ScreenSelectMusic::DrawPrimitives()
void ScreenSelectMusic::TweenOnScreen()
{
float fOriginalZoomY;
int i;
CArray<Actor*,Actor*> apActorsInGroupInfoFrame;
apActorsInGroupInfoFrame.Add( &m_sprBannerFrame );
apActorsInGroupInfoFrame.Add( &m_Banner );
apActorsInGroupInfoFrame.Add( &m_BPMDisplay );
apActorsInGroupInfoFrame.Add( &m_textStage );
apActorsInGroupInfoFrame.Add( &m_sprCDTitle );
for( i=0; i<apActorsInGroupInfoFrame.GetSize(); i++ )
m_sprBannerFrame.FadeOn( 0, "bounce left", TWEEN_TIME );
m_Banner.FadeOn( 0, "bounce left", TWEEN_TIME );
m_BPMDisplay.FadeOn( 0, "bounce left", TWEEN_TIME );
m_textStage.FadeOn( 0, "bounce left", TWEEN_TIME );
m_sprCDTitle.FadeOn( 0, "bounce left", TWEEN_TIME );
for( int p=0; p<NUM_PLAYERS; p++ )
{
float fOriginalX = apActorsInGroupInfoFrame[i]->GetX();
apActorsInGroupInfoFrame[i]->SetX( fOriginalX-400 );
apActorsInGroupInfoFrame[i]->BeginTweening( TWEEN_TIME, TWEEN_BOUNCE_END );
apActorsInGroupInfoFrame[i]->SetTweenX( fOriginalX );
m_sprDifficultyFrame[p].FadeOn( 0, "fade", TWEEN_TIME );
m_sprMeterFrame[p].FadeOn( 0, "fade", TWEEN_TIME );
}
fOriginalZoomY = m_sprDifficultyFrame.GetZoomY();
m_sprDifficultyFrame.BeginTweening( TWEEN_TIME );
m_sprDifficultyFrame.SetTweenZoomY( fOriginalZoomY );
fOriginalZoomY = m_sprMeterFrame.GetZoomY();
m_sprMeterFrame.BeginTweening( TWEEN_TIME );
m_sprMeterFrame.SetTweenZoomY( fOriginalZoomY );
m_GrooveRadar.TweenOnScreen();
// fOriginalZoomY = m_OptionIcons.GetZoomY();
// m_OptionIcons.BeginTweening( TWEEN_TIME );
// m_OptionIcons.SetTweenZoomY( fOriginalZoomY );
fOriginalZoomY = m_textSongOptions.GetZoomY();
m_textSongOptions.BeginTweening( TWEEN_TIME );
m_textSongOptions.SetTweenZoomY( fOriginalZoomY );
m_textSongOptions.FadeOn( 0, "fade", TWEEN_TIME );
for( int p=0; p<NUM_PLAYERS; p++ )
{
fOriginalZoomY = m_textPlayerOptions[p].GetZoomY();
m_textPlayerOptions[p].BeginTweening( TWEEN_TIME );
m_textPlayerOptions[p].SetTweenZoomY( fOriginalZoomY );
m_OptionIconRow[p].FadeOn( 0, "foldy", TWEEN_TIME );
// fOriginalZoomY = m_textPlayerOptions[p].GetZoomY();
// m_textPlayerOptions[p].BeginTweening( TWEEN_TIME );
// m_textPlayerOptions[p].SetTweenZoomY( fOriginalZoomY );
fOriginalZoomY = m_DifficultyIcon[p].GetZoomY();
m_DifficultyIcon[p].BeginTweening( TWEEN_TIME );
m_DifficultyIcon[p].SetTweenZoomY( fOriginalZoomY );
m_DifficultyIcon[p].FadeOn( 0, "foldy", TWEEN_TIME );
fOriginalZoomY = m_FootMeter[p].GetZoomY();
m_FootMeter[p].BeginTweening( TWEEN_TIME );
m_FootMeter[p].SetTweenZoomY( fOriginalZoomY );
m_FootMeter[p].FadeOn( 0, "foldy", TWEEN_TIME );
}
m_MusicSortDisplay.SetDiffuse( D3DXCOLOR(1,1,1,0) );
m_MusicSortDisplay.BeginTweening( TWEEN_TIME );
m_MusicSortDisplay.SetTweenDiffuse( D3DXCOLOR(1,1,1,1) );
m_MusicSortDisplay.FadeOn( 0, "fade", TWEEN_TIME );
CArray<Actor*,Actor*> apActorsInScore;
for( p=0; p<NUM_PLAYERS; p++ )
{
apActorsInScore.Add( &m_sprHighScoreFrame[p] );
apActorsInScore.Add( &m_HighScore[p] );
}
for( i=0; i<apActorsInScore.GetSize(); i++ )
{
float fOriginalX = apActorsInScore[i]->GetX();
apActorsInScore[i]->SetX( SCORE_CONNECTED_TO_MUSIC_WHEEL ? fOriginalX+400 : fOriginalX-400 );
apActorsInScore[i]->BeginTweening( TWEEN_TIME, TWEEN_BIAS_END );
apActorsInScore[i]->SetTweenX( fOriginalX );
m_sprHighScoreFrame[p].FadeOn( 0, SCORE_CONNECTED_TO_MUSIC_WHEEL?"accelerate right":"accelerate left", TWEEN_TIME );
m_HighScore[p].FadeOn( 0, SCORE_CONNECTED_TO_MUSIC_WHEEL?"accelerate right":"accelerate left", TWEEN_TIME );
}
m_MusicWheel.TweenOnScreen();
@@ -316,47 +300,34 @@ void ScreenSelectMusic::TweenOffScreen()
{
int i;
CArray<Actor*,Actor*> apActorsInGroupInfoFrame;
apActorsInGroupInfoFrame.Add( &m_sprBannerFrame );
apActorsInGroupInfoFrame.Add( &m_Banner );
apActorsInGroupInfoFrame.Add( &m_BPMDisplay );
apActorsInGroupInfoFrame.Add( &m_textStage );
apActorsInGroupInfoFrame.Add( &m_sprCDTitle );
for( i=0; i<apActorsInGroupInfoFrame.GetSize(); i++ )
{
apActorsInGroupInfoFrame[i]->BeginTweening( TWEEN_TIME, TWEEN_BOUNCE_BEGIN );
apActorsInGroupInfoFrame[i]->SetTweenX( apActorsInGroupInfoFrame[i]->GetX()-400 );
}
m_sprDifficultyFrame.BeginTweening( TWEEN_TIME );
m_sprDifficultyFrame.SetTweenZoomY( 0 );
m_sprMeterFrame.BeginTweening( TWEEN_TIME );
m_sprMeterFrame.SetTweenZoomY( 0 );
m_GrooveRadar.TweenOffScreen();
// m_OptionIcons.BeginTweening( TWEEN_TIME );
// m_OptionIcons.SetTweenZoomY( 0 );
m_textSongOptions.BeginTweening( TWEEN_TIME );
m_textSongOptions.SetTweenZoomY( 0 );
m_sprBannerFrame.FadeOff( 0, "bounce left", TWEEN_TIME );
m_Banner.FadeOff( 0, "bounce left", TWEEN_TIME );
m_BPMDisplay.FadeOff( 0, "bounce left", TWEEN_TIME );
m_textStage.FadeOff( 0, "bounce left", TWEEN_TIME );
m_sprCDTitle.FadeOff( 0, "bounce left", TWEEN_TIME );
for( int p=0; p<NUM_PLAYERS; p++ )
{
m_textPlayerOptions[p].BeginTweening( TWEEN_TIME );
m_textPlayerOptions[p].SetTweenZoomY( 0 );
m_DifficultyIcon[p].BeginTweening( TWEEN_TIME );
m_DifficultyIcon[p].SetTweenZoomY( 0 );
m_FootMeter[p].BeginTweening( TWEEN_TIME );
m_FootMeter[p].SetTweenZoomY( 0 );
m_sprDifficultyFrame[p].FadeOff( 0, "fade", TWEEN_TIME );
m_sprMeterFrame[p].FadeOff( 0, "fade", TWEEN_TIME );
}
m_MusicSortDisplay.SetEffectNone();
m_MusicSortDisplay.BeginTweening( TWEEN_TIME );
m_MusicSortDisplay.SetTweenDiffuse( D3DXCOLOR(1,1,1,0) );
m_GrooveRadar.TweenOffScreen();
m_textSongOptions.FadeOff( 0, "fade", TWEEN_TIME );
for( int p=0; p<NUM_PLAYERS; p++ )
{
m_OptionIconRow[p].FadeOff( 0, "foldy", TWEEN_TIME );
// m_textPlayerOptions[p].FadeOff( 0, "fade", TWEEN_TIME );
m_DifficultyIcon[p].FadeOff( 0, "foldy", TWEEN_TIME );
m_FootMeter[p].FadeOff( 0, "foldy", TWEEN_TIME );
}
m_MusicSortDisplay.FadeOff( 0, "fade", TWEEN_TIME );
CArray<Actor*,Actor*> apActorsInScore;
for( p=0; p<NUM_PLAYERS; p++ )
@@ -813,13 +784,17 @@ void ScreenSelectMusic::UpdateOptionsDisplays()
{
// m_OptionIcons.Load( GAMESTATE->m_PlayerOptions, &GAMESTATE->m_SongOptions );
// m_PlayerOptionIcons.Refresh();
for( int p=0; p<NUM_PLAYERS; p++ )
{
m_OptionIconRow[p].Refresh( (PlayerNumber)p );
if( GAMESTATE->IsPlayerEnabled(p) )
{
CString s = GAMESTATE->m_PlayerOptions[p].GetString();
s.Replace( ", ", "\n" );
m_textPlayerOptions[p].SetText( s );
// m_textPlayerOptions[p].SetText( s );
}
}
+5 -3
View File
@@ -22,6 +22,7 @@
#include "GrooveRadar.h"
#include "DifficultyIcon.h"
#include "FootMeter.h"
#include "OptionIconRow.h"
class ScreenSelectMusic : public Screen
@@ -66,12 +67,13 @@ protected:
BPMDisplay m_BPMDisplay;
BitmapText m_textStage;
Sprite m_sprCDTitle;
Sprite m_sprDifficultyFrame;
Sprite m_sprDifficultyFrame[NUM_PLAYERS];
DifficultyIcon m_DifficultyIcon[NUM_PLAYERS];
GrooveRadar m_GrooveRadar;
BitmapText m_textPlayerOptions[NUM_PLAYERS];
// BitmapText m_textPlayerOptions[NUM_PLAYERS];
BitmapText m_textSongOptions;
Sprite m_sprMeterFrame;
OptionIconRow m_OptionIconRow[NUM_PLAYERS];
Sprite m_sprMeterFrame[NUM_PLAYERS];
FootMeter m_FootMeter[NUM_PLAYERS];
MusicSortDisplay m_MusicSortDisplay;
Sprite m_sprHighScoreFrame[NUM_PLAYERS];
+6 -6
View File
@@ -275,9 +275,9 @@ void ScreenSelectStyle::MenuBack( PlayerNumber p )
void ScreenSelectStyle::TweenOnScreen()
{
for( int i=0; i<m_aPossibleStyles.GetSize(); i++ )
m_sprIcon[i].FadeOntoScreen( (m_aPossibleStyles.GetSize()-i)*0.1f, "Left Accelerate", MENU_ELEMENTS_TWEEN_TIME );
m_sprIcon[i].FadeOn( (m_aPossibleStyles.GetSize()-i)*0.05f, "Left Accelerate", MENU_ELEMENTS_TWEEN_TIME );
m_sprExplanation.FadeOntoScreen( 0, "Right Accelerate", MENU_ELEMENTS_TWEEN_TIME );
m_sprExplanation.FadeOn( 0, "Right Accelerate", MENU_ELEMENTS_TWEEN_TIME );
// let AfterChange tween Preview and Info
}
@@ -285,13 +285,13 @@ void ScreenSelectStyle::TweenOnScreen()
void ScreenSelectStyle::TweenOffScreen()
{
for( int i=0; i<m_aPossibleStyles.GetSize(); i++ )
m_sprIcon[i].FadeOffScreen( (m_aPossibleStyles.GetSize()-i)*0.1f, "Left Accelerate", MENU_ELEMENTS_TWEEN_TIME );
m_sprIcon[i].FadeOff( 0, "FoldY", MENU_ELEMENTS_TWEEN_TIME );
m_sprExplanation.FadeOffScreen( 0, "Right Accelerate", MENU_ELEMENTS_TWEEN_TIME );
m_sprExplanation.FadeOff( 0, "FoldY", MENU_ELEMENTS_TWEEN_TIME );
m_sprPreview.FadeOffScreen( 0, "Fade", MENU_ELEMENTS_TWEEN_TIME );
m_sprPreview.FadeOff( 0, "FoldY", MENU_ELEMENTS_TWEEN_TIME );
m_sprInfo.FadeOffScreen( 0, "FoldY", MENU_ELEMENTS_TWEEN_TIME );
m_sprInfo.FadeOff( 0, "FoldY", MENU_ELEMENTS_TWEEN_TIME );
}
+2 -7
View File
@@ -25,13 +25,8 @@ SongManager* SONGMAN = NULL; // global and accessable from anywhere in our progr
const CString g_sStatisticsFileName = "statistics.ini";
#define GROUP_COLOR_1 THEME->GetMetricC("SongManager","GroupColor1")
#define GROUP_COLOR_2 THEME->GetMetricC("SongManager","GroupColor2")
#define GROUP_COLOR_3 THEME->GetMetricC("SongManager","GroupColor3")
#define GROUP_COLOR_4 THEME->GetMetricC("SongManager","GroupColor4")
#define GROUP_COLOR_5 THEME->GetMetricC("SongManager","GroupColor5")
#define GROUP_COLOR_6 THEME->GetMetricC("SongManager","GroupColor6")
#define GROUP_COLOR_7 THEME->GetMetricC("SongManager","GroupColor7")
#define NUM_GROUP_COLORS THEME->GetMetricI("SongManager","NumGroupColors")
#define GROUP_COLOR( i ) THEME->GetMetricC("SongManager",ssprintf("GroupColor%d",i+1))
#define EXTRA_COLOR THEME->GetMetricC("SongManager","ExtraColor")
const int NUM_GROUP_COLORS = 7;
+6 -6
View File
@@ -698,18 +698,18 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
<File
RelativePath="OptionIcon.h">
</File>
<File
RelativePath="OptionIconRow.cpp">
</File>
<File
RelativePath="OptionIconRow.h">
</File>
<File
RelativePath="OptionsCursor.cpp">
</File>
<File
RelativePath="OptionsCursor.h">
</File>
<File
RelativePath="PlayerOptionIcons.cpp">
</File>
<File
RelativePath="PlayerOptionIcons.h">
</File>
<File
RelativePath="ScrollBar.cpp">
</File>
+3 -3
View File
@@ -31,7 +31,7 @@ ThemeManager::ThemeManager()
m_pIniMetrics = new IniFile;
/* Update the metric cache on the first call to GetMetric. */
NextReloadCheck = -1;
m_uNextReloadTicks = -1;
m_sCurThemeName = BASE_THEME_NAME; // Use te base theme for now. It's up to PrefsManager to change this.
@@ -219,9 +219,9 @@ try_metric_again:
CString sDefaultMetricPath = GetMetricsPathFromName(BASE_THEME_NAME);
// Is our metric cache out of date?
if (NextReloadCheck == -1 || TIMER->GetTimeSinceStart() > NextReloadCheck)
if (m_uNextReloadTicks == -1 || ::GetTickCount() > m_uNextReloadTicks)
{
NextReloadCheck = TIMER->GetTimeSinceStart()+1.0f;
m_uNextReloadTicks = GetTickCount()+1000;
if( m_iHashForCurThemeMetrics != GetHashForFile(sCurMetricPath) ||
m_iHashForBaseThemeMetrics != GetHashForFile(sDefaultMetricPath) )
{
+1 -2
View File
@@ -18,8 +18,6 @@ class IniFile;
class ThemeManager
{
float NextReloadCheck;
public:
ThemeManager();
~ThemeManager();
@@ -48,6 +46,7 @@ protected:
CString m_sCurThemeName;
IniFile* m_pIniMetrics; // make this a pointer so we don't have to include IniFile in this header!
DWORD m_uNextReloadTicks;
int m_iHashForCurThemeMetrics;
int m_iHashForBaseThemeMetrics;
};