added ScreenEnding
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 27 KiB |
@@ -0,0 +1 @@
|
||||
MusicList titles
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 7.3 KiB |
@@ -1252,3 +1252,23 @@ HelpText=&UP; &DOWN; to change line &LEFT; &RIGHT; to select between options
|
||||
Game=Change the current game type with this option.
|
||||
TimerSeconds=30
|
||||
|
||||
[ScreenCredits]
|
||||
BackgroundsBaseX=160
|
||||
BackgroundsBaseY=0
|
||||
BackgroundsVelocityX=0
|
||||
BackgroundsVelocityY=30
|
||||
BackgroundsSpacingX=0
|
||||
BackgroundsSpacingY=-240
|
||||
BackgroundsWidth=312
|
||||
BackgroundsHeight=232
|
||||
TextsColorIntro=0.5,0.5,1,1
|
||||
TextsColorHeader=1,0.5,0.5,1
|
||||
TextsColorNormal=1,1,1,1
|
||||
TextsBaseX=480
|
||||
TextsBaseY=0
|
||||
TextsVelocityX=0
|
||||
TextsVelocityY=-50
|
||||
TextsSpacingX=0
|
||||
TextsSpacingY=30
|
||||
TextsZoom=0.5
|
||||
NextScreen=ScreenRanking
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
#ifndef ActorCollision_H
|
||||
#define ActorCollision_H
|
||||
/*
|
||||
-----------------------------------------------------------------------------
|
||||
Class: ActorCollision
|
||||
|
||||
Desc:
|
||||
|
||||
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||
Chris Danford
|
||||
-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#include "Actor.h"
|
||||
#include "GameConstantsAndTypes.h"
|
||||
|
||||
|
||||
inline float GetOffScreenLeft( Actor* pActor ) { return SCREEN_LEFT - pActor->GetZoomedWidth()/2; }
|
||||
inline float GetOffScreenRight( Actor* pActor ) { return SCREEN_RIGHT + pActor->GetZoomedWidth()/2; }
|
||||
inline float GetOffScreenTop( Actor* pActor ) { return SCREEN_TOP - pActor->GetZoomedHeight()/2; }
|
||||
inline float GetOffScreenBottom(Actor* pActor ) { return SCREEN_BOTTOM+ pActor->GetZoomedHeight()/2; }
|
||||
|
||||
inline bool IsOffScreenLeft( Actor* pActor ) { return pActor->GetX() < GetOffScreenLeft(pActor); }
|
||||
inline bool IsOffScreenRight( Actor* pActor ) { return pActor->GetX() > GetOffScreenRight(pActor); }
|
||||
inline bool IsOffScreenTop( Actor* pActor ) { return pActor->GetY() < GetOffScreenTop(pActor); }
|
||||
inline bool IsOffScreenBottom(Actor* pActor ) { return pActor->GetY() > GetOffScreenBottom(pActor); }
|
||||
inline bool IsOffScreen( Actor* pActor ) { return IsOffScreenLeft(pActor) || IsOffScreenRight(pActor) || IsOffScreenTop(pActor) || IsOffScreenBottom(pActor); }
|
||||
|
||||
// guard rail is the area that keeps particles from going off screen
|
||||
inline float GetGuardRailLeft( Actor* pActor ) { return SCREEN_LEFT + pActor->GetZoomedWidth()/2; }
|
||||
inline float GetGuardRailRight( Actor* pActor ) { return SCREEN_RIGHT - pActor->GetZoomedWidth()/2; }
|
||||
inline float GetGuardRailTop( Actor* pActor ) { return SCREEN_TOP + pActor->GetZoomedHeight()/2; }
|
||||
inline float GetGuardRailBottom(Actor* pActor ) { return SCREEN_BOTTOM- pActor->GetZoomedHeight()/2; }
|
||||
|
||||
inline bool HitGuardRailLeft( Actor* pActor ) { return pActor->GetX() < GetGuardRailLeft(pActor); }
|
||||
inline bool HitGuardRailRight( Actor* pActor ) { return pActor->GetX() > GetGuardRailRight(pActor); }
|
||||
inline bool HitGuardRailTop( Actor* pActor ) { return pActor->GetY() < GetGuardRailTop(pActor); }
|
||||
inline bool HitGuardRailBottom(Actor* pActor ) { return pActor->GetY() > GetGuardRailBottom(pActor); }
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,87 @@
|
||||
#include "global.h" // testing updates
|
||||
/*
|
||||
-----------------------------------------------------------------------------
|
||||
Class: ActorScroller
|
||||
|
||||
Desc: See header.
|
||||
|
||||
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||
Chris Danford
|
||||
-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#include "ActorScroller.h"
|
||||
#include "ActorCollision.h"
|
||||
#include <math.h>
|
||||
#include "RageUtil.h"
|
||||
|
||||
|
||||
ActorScroller::ActorScroller()
|
||||
{
|
||||
m_fSecsIntoScroll = 0;
|
||||
}
|
||||
|
||||
void ActorScroller::Load( vector<Actor*> vActors, float fBaseX, float fBaseY, float fVelX, float fVelY, float fSpacingX, float fSpacingY )
|
||||
{
|
||||
m_vActors = vActors;
|
||||
m_vBase.x = fBaseX;
|
||||
m_vBase.y = fBaseY;
|
||||
m_vVelocity.x = fVelX;
|
||||
m_vVelocity.y = fVelY;
|
||||
m_vSpacing.x = fSpacingX;
|
||||
m_vSpacing.y = fSpacingY;
|
||||
|
||||
// adjust base
|
||||
float t = 10000; // inf
|
||||
if( m_vSpacing.x != 0 )
|
||||
t = min( t, m_vBase.x / fabsf(m_vSpacing.x) );
|
||||
if( m_vSpacing.y != 0 )
|
||||
t = min( t, m_vBase.y / fabsf(m_vSpacing.y) );
|
||||
m_vBase.x -= t * fabsf(m_vSpacing.x);
|
||||
m_vBase.y -= t * fabsf(m_vSpacing.y);
|
||||
if( m_vVelocity.x < 0 )
|
||||
m_vBase.x += SCREEN_WIDTH;
|
||||
if( m_vVelocity.y < 0 )
|
||||
m_vBase.y += SCREEN_HEIGHT;
|
||||
|
||||
// push off screen
|
||||
if( m_vVelocity.x!=0 ) m_vBase.x += m_vSpacing.x/2;
|
||||
if( m_vVelocity.y!=0 ) m_vBase.y += m_vSpacing.y/2;
|
||||
}
|
||||
|
||||
float ActorScroller::GetTotalSecsToScroll()
|
||||
{
|
||||
float fMaxSecToScroll = 0;
|
||||
if( m_vVelocity.x != 0 )
|
||||
{
|
||||
float fSecToScroll = fabsf(m_vSpacing.x*(m_vActors.size()+1) + SCREEN_WIDTH) / fabsf(m_vVelocity.x);
|
||||
fMaxSecToScroll = max( fMaxSecToScroll, fSecToScroll );
|
||||
}
|
||||
if( m_vVelocity.y != 0 )
|
||||
{
|
||||
float fSecToScroll = fabsf(m_vSpacing.y*(m_vActors.size()+1) + SCREEN_HEIGHT) / fabsf(m_vVelocity.y);
|
||||
fMaxSecToScroll = max( fMaxSecToScroll, fSecToScroll );
|
||||
}
|
||||
return fMaxSecToScroll;
|
||||
}
|
||||
|
||||
void ActorScroller::Update( float fDeltaTime )
|
||||
{
|
||||
m_fSecsIntoScroll += fDeltaTime;
|
||||
|
||||
for( unsigned i=0; i<m_vActors.size(); i++ )
|
||||
{
|
||||
float fX = m_vBase.x + m_vSpacing.x * i + m_vVelocity.x * m_fSecsIntoScroll;
|
||||
float fY = m_vBase.y + m_vSpacing.y * i + m_vVelocity.y * m_fSecsIntoScroll;
|
||||
fX = roundf( fX );
|
||||
fY = roundf( fY );
|
||||
m_vActors[i]->SetXY( fX, fY );
|
||||
}
|
||||
}
|
||||
|
||||
void ActorScroller::DrawPrimitives()
|
||||
{
|
||||
for( unsigned i=0; i<m_vActors.size(); i++ )
|
||||
if( !IsOffScreen(m_vActors[i]) )
|
||||
m_vActors[i]->Draw();
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
#ifndef ActorScroller_H
|
||||
#define ActorScroller_H
|
||||
/*
|
||||
-----------------------------------------------------------------------------
|
||||
Class: ActorScroller
|
||||
|
||||
Desc: A container for other actors.
|
||||
|
||||
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||
Chris Danford
|
||||
-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#include "Actor.h"
|
||||
|
||||
|
||||
class ActorScroller : public Actor
|
||||
{
|
||||
public:
|
||||
ActorScroller();
|
||||
|
||||
// owner's responsibility to delete vActors!
|
||||
void Load( vector<Actor*> vActors, float fBaseX, float fBaseY, float fVelX, float fVelY, float fSpacingX, float fSpacingY );
|
||||
|
||||
void Update( float fDelta );
|
||||
void DrawPrimitives();
|
||||
|
||||
float GetTotalSecsToScroll();
|
||||
|
||||
protected:
|
||||
float m_fSecsIntoScroll;
|
||||
RageVector2 m_vBase;
|
||||
RageVector2 m_vVelocity;
|
||||
RageVector2 m_vSpacing;
|
||||
vector<Actor*> m_vActors;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
@@ -22,28 +22,9 @@
|
||||
#include "RageLog.h"
|
||||
#include "song.h"
|
||||
#include "ThemeManager.h"
|
||||
#include "ActorCollision.h"
|
||||
|
||||
|
||||
inline float GetOffScreenLeft( Actor* pActor ) { return SCREEN_LEFT - pActor->GetZoomedWidth()/2; }
|
||||
inline float GetOffScreenRight( Actor* pActor ) { return SCREEN_RIGHT + pActor->GetZoomedWidth()/2; }
|
||||
inline float GetOffScreenTop( Actor* pActor ) { return SCREEN_TOP - pActor->GetZoomedHeight()/2; }
|
||||
inline float GetOffScreenBottom(Actor* pActor ) { return SCREEN_BOTTOM+ pActor->GetZoomedHeight()/2; }
|
||||
|
||||
inline bool IsOffScreenLeft( Actor* pActor ) { return pActor->GetX() < GetOffScreenLeft(pActor); }
|
||||
inline bool IsOffScreenRight( Actor* pActor ) { return pActor->GetX() > GetOffScreenRight(pActor); }
|
||||
inline bool IsOffScreenTop( Actor* pActor ) { return pActor->GetY() < GetOffScreenTop(pActor); }
|
||||
inline bool IsOffScreenBottom(Actor* pActor ) { return pActor->GetY() > GetOffScreenBottom(pActor); }
|
||||
|
||||
// guard rail is the area that keeps particles from going off screen
|
||||
inline float GetGuardRailLeft( Actor* pActor ) { return SCREEN_LEFT + pActor->GetZoomedWidth()/2; }
|
||||
inline float GetGuardRailRight( Actor* pActor ) { return SCREEN_RIGHT - pActor->GetZoomedWidth()/2; }
|
||||
inline float GetGuardRailTop( Actor* pActor ) { return SCREEN_TOP + pActor->GetZoomedHeight()/2; }
|
||||
inline float GetGuardRailBottom(Actor* pActor ) { return SCREEN_BOTTOM- pActor->GetZoomedHeight()/2; }
|
||||
|
||||
inline bool HitGuardRailLeft( Actor* pActor ) { return pActor->GetX() < GetGuardRailLeft(pActor); }
|
||||
inline bool HitGuardRailRight( Actor* pActor ) { return pActor->GetX() > GetGuardRailRight(pActor); }
|
||||
inline bool HitGuardRailTop( Actor* pActor ) { return pActor->GetY() < GetGuardRailTop(pActor); }
|
||||
inline bool HitGuardRailBottom(Actor* pActor ) { return pActor->GetY() > GetGuardRailBottom(pActor); }
|
||||
|
||||
|
||||
const float PARTICLE_SPEED = 300;
|
||||
|
||||
@@ -225,8 +225,8 @@ void NoteField::DrawPrimitives()
|
||||
fDrawScale *= 1 + 0.5f * fabsf( GAMESTATE->m_PlayerOptions[m_PlayerNumber].m_fPerspectiveTilt );
|
||||
fDrawScale *= 1 + fabsf( GAMESTATE->m_PlayerOptions[m_PlayerNumber].m_fEffects[PlayerOptions::EFFECT_MINI] );
|
||||
|
||||
iFirstPixelToDraw *= fDrawScale;
|
||||
iLastPixelToDraw *= fDrawScale;
|
||||
iFirstPixelToDraw = (int)(iFirstPixelToDraw * fDrawScale);
|
||||
iLastPixelToDraw = (int)(iLastPixelToDraw * fDrawScale);
|
||||
|
||||
|
||||
// CPU OPTIMIZATION OPPORTUNITY:
|
||||
|
||||
@@ -143,7 +143,8 @@ void NoteFieldPositioning::LoadFromStyleDef(const StyleDef *s, PlayerNumber pn)
|
||||
if(!fgets(buf, 1000, f)) break;
|
||||
sscanf(buf, "%f", &m_fFov[t]);
|
||||
}
|
||||
fclose(f);
|
||||
if( f )
|
||||
fclose(f);
|
||||
// XXX
|
||||
|
||||
}
|
||||
|
||||
@@ -272,6 +272,7 @@ void Screen::ClearMessageQueue( const ScreenMessage SM )
|
||||
#include "ScreenGameplayOptions.h"
|
||||
#include "ScreenStyleSplash.h"
|
||||
#include "ScreenAutogenOptions.h"
|
||||
#include "ScreenCredits.h"
|
||||
|
||||
Screen* Screen::Create( CString sClassName )
|
||||
{
|
||||
@@ -332,6 +333,7 @@ Screen* Screen::Create( CString sClassName )
|
||||
else if( 0==stricmp(sClassName, "ScreenGameplayOptions") ) ret = new ScreenGameplayOptions;
|
||||
else if( 0==stricmp(sClassName, "ScreenStyleSplash") ) ret = new ScreenStyleSplash;
|
||||
else if( 0==stricmp(sClassName, "ScreenAutogenOptions") ) ret = new ScreenAutogenOptions;
|
||||
else if( 0==stricmp(sClassName, "ScreenCredits") ) ret = new ScreenCredits;
|
||||
else
|
||||
RageException::Throw( "Invalid Screen class name '%s'", sClassName.GetString() );
|
||||
return ret;
|
||||
|
||||
@@ -0,0 +1,301 @@
|
||||
#include "global.h"
|
||||
/*
|
||||
-----------------------------------------------------------------------------
|
||||
Class: ScreenCredits
|
||||
|
||||
Desc: See header.
|
||||
|
||||
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||
Chris Danford
|
||||
-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
|
||||
#include "ScreenCredits.h"
|
||||
#include "ScreenManager.h"
|
||||
#include "RageLog.h"
|
||||
#include "GameConstantsAndTypes.h"
|
||||
#include "SongManager.h"
|
||||
#include "GameState.h"
|
||||
#include "ThemeManager.h"
|
||||
#include "AnnouncerManager.h"
|
||||
#include <math.h>
|
||||
#include "CroppedSprite.h"
|
||||
#include "Song.h"
|
||||
#include "BitmapText.h"
|
||||
|
||||
|
||||
#define BACKGROUNDS_BASE_X THEME->GetMetricF("ScreenCredits","BackgroundsBaseX")
|
||||
#define BACKGROUNDS_BASE_Y THEME->GetMetricF("ScreenCredits","BackgroundsBaseY")
|
||||
#define BACKGROUNDS_VELOCITY_X THEME->GetMetricF("ScreenCredits","BackgroundsVelocityX")
|
||||
#define BACKGROUNDS_VELOCITY_Y THEME->GetMetricF("ScreenCredits","BackgroundsVelocityY")
|
||||
#define BACKGROUNDS_SPACING_X THEME->GetMetricF("ScreenCredits","BackgroundsSpacingX")
|
||||
#define BACKGROUNDS_SPACING_Y THEME->GetMetricF("ScreenCredits","BackgroundsSpacingY")
|
||||
#define BACKGROUNDS_WIDTH THEME->GetMetricF("ScreenCredits","BackgroundsWidth")
|
||||
#define BACKGROUNDS_HEIGHT THEME->GetMetricF("ScreenCredits","BackgroundsHeight")
|
||||
#define TEXTS_COLOR_INTRO THEME->GetMetricC("ScreenCredits","TextsColorIntro")
|
||||
#define TEXTS_COLOR_HEADER THEME->GetMetricC("ScreenCredits","TextsColorHeader")
|
||||
#define TEXTS_COLOR_NORMAL THEME->GetMetricC("ScreenCredits","TextsColorNormal")
|
||||
#define TEXTS_ZOOM THEME->GetMetricF("ScreenCredits","TextsZoom")
|
||||
#define TEXTS_BASE_X THEME->GetMetricF("ScreenCredits","TextsBaseX")
|
||||
#define TEXTS_BASE_Y THEME->GetMetricF("ScreenCredits","TextsBaseY")
|
||||
#define TEXTS_VELOCITY_X THEME->GetMetricF("ScreenCredits","TextsVelocityX")
|
||||
#define TEXTS_VELOCITY_Y THEME->GetMetricF("ScreenCredits","TextsVelocityY")
|
||||
#define TEXTS_SPACING_X THEME->GetMetricF("ScreenCredits","TextsSpacingX")
|
||||
#define TEXTS_SPACING_Y THEME->GetMetricF("ScreenCredits","TextsSpacingY")
|
||||
#define NEXT_SCREEN THEME->GetMetric ("ScreenCredits","NextScreen")
|
||||
|
||||
const int NUM_BACKGROUNDS = 20;
|
||||
|
||||
struct CreditLine
|
||||
{
|
||||
int colorIndex;
|
||||
const char* text;
|
||||
};
|
||||
|
||||
const CreditLine CREDIT_LINES[] =
|
||||
{
|
||||
{1,"STEPMANIA TEAM"},
|
||||
{0,""},
|
||||
{0,""},
|
||||
{0,""},
|
||||
{2,"☆☆GRAPHICS☆☆"},
|
||||
{0,"v1ral (Lucas Tang)"},
|
||||
{0,"SPiGuMuS"},
|
||||
{0,"Visage"},
|
||||
{0,"DJ McFox (Ryan McKanna)"},
|
||||
{0,"Cloud34 (Lamden Travis)"},
|
||||
{0,"Redcrusher (Michael Curry)"},
|
||||
{0,"Steve 'healing_vision' Klise"},
|
||||
{0,"Mauro Panichella"},
|
||||
{0,""},
|
||||
{0,""},
|
||||
{0,""},
|
||||
{2,"☆☆WEB DESIGN☆☆"},
|
||||
{0,"Brian 'Bork' Bugh"},
|
||||
{0,""},
|
||||
{0,""},
|
||||
{0,""},
|
||||
{2,"☆☆SOUND☆☆"},
|
||||
{0,"Kyle 'KeeL' Ward"},
|
||||
{0,"Jim 'Izlude' Cabeen"},
|
||||
{0,""},
|
||||
{0,""},
|
||||
{0,""},
|
||||
{2,"☆☆TESTING☆☆"},
|
||||
{0,"Gotetsu"},
|
||||
{0,"spds (James Sanders)"},
|
||||
{0,""},
|
||||
{0,""},
|
||||
{0,""},
|
||||
{2,"☆☆PROGRAMMING☆☆"},
|
||||
{0,"Chris Danford"},
|
||||
{0,"Andrew 'Frieza' Livy"},
|
||||
{0,"Glenn Maynard"},
|
||||
{0,"Bruno Figueiredo"},
|
||||
{0,"Dro Kulix (Peter S. May)"},
|
||||
{0,"nmspaz (Jared Roberts)"},
|
||||
{0,"binarys (Brendan Walker)"},
|
||||
{0,"Lance Gilbert (Neovanglist)"},
|
||||
{0,"Michel Donais"},
|
||||
{0,"Mantis (Ben Nordstrom)"},
|
||||
{0,"Parasyte (Chris Gomez)"},
|
||||
{0,"dirkthedaring (Michael Patterson)"},
|
||||
{0,"angedelamort (Sauleil Lamarre)"},
|
||||
{0,"Edwin Evans"},
|
||||
{0,"Brian 'Bork' Bugh"},
|
||||
{0,"Elvis314 (Joel Maher)"},
|
||||
{0,"Kefabi (Garth Smith)"},
|
||||
{0,"Pkillah (Playah Killah)"},
|
||||
{0,"DJ McFox (Ryan McKanna)"},
|
||||
{0,"Robert Kemmetmueller"},
|
||||
{0,"Shabach (Ben Andersen)"},
|
||||
{0,"SlinkyWizard (Will Valladao)"},
|
||||
{0,"TheChip"},
|
||||
{0,"WarriorBob (David H)"},
|
||||
{0,"Mike Waltson"},
|
||||
{0,""},
|
||||
{0,""},
|
||||
{0,""},
|
||||
{2,"☆☆SPECIAL THANKS TO☆☆"},
|
||||
{0,"SimWolf"},
|
||||
{0,"DJ DraftHorse"},
|
||||
{0,"Dance With Intensity"},
|
||||
{0,"BeMaNiRuler"},
|
||||
{0,"DDRLlama"},
|
||||
{0,"DDRManiaX"},
|
||||
{0,"NMR"},
|
||||
{0,"Random Hajile"},
|
||||
{0,"Lagged"},
|
||||
{0,"The Melting Pot"},
|
||||
{0,"DDRJamz Global BBS"},
|
||||
{0,"Eric 'WaffleKing' Webster"},
|
||||
{0,"Mark 'Foobly' Verrey"},
|
||||
{0,"Mandarin Blue"},
|
||||
{0,"Anne Kiel"},
|
||||
{0,"BeMaNiFiNiNaTiC (Jeremy Hine)"},
|
||||
{0,"Garett Sakamoto"},
|
||||
{0,"SailorBob"},
|
||||
{0,"AngelTK (Kenny Lai)"},
|
||||
{0,"Illusionz - Issaquah, WA"},
|
||||
{0,"Quarters - Kirkland, WA"},
|
||||
{0,"Segapark - Bournemouth, UK"},
|
||||
{0,"Pier Amusements - Bournemouth, UK"},
|
||||
{0,"Westcliff Amusements - Bournemouth, UK"},
|
||||
{0,"Naoki"},
|
||||
{0,"Konami Computer Entertainment Japan"},
|
||||
{0,""},
|
||||
{0,""},
|
||||
{0,""},
|
||||
{0,""},
|
||||
{0,""},
|
||||
{0,""},
|
||||
{0,""},
|
||||
{0,""},
|
||||
{1,"Join the StepMania team"},
|
||||
{1,"and help us out!"},
|
||||
};
|
||||
const unsigned NUM_CREDIT_LINES = sizeof(CREDIT_LINES) / sizeof(CreditLine);
|
||||
|
||||
|
||||
ScreenCredits::ScreenCredits()
|
||||
{
|
||||
LOG->Trace( "ScreenCredits::ScreenCredits()" );
|
||||
|
||||
unsigned i;
|
||||
|
||||
GAMESTATE->Reset(); // so that credits message for both players will show
|
||||
|
||||
|
||||
m_Background.LoadFromAniDir( THEME->GetPathTo("BGAnimations","ScreenCredits background") );
|
||||
this->AddChild( &m_Background );
|
||||
|
||||
vector<Song*> arraySongs;
|
||||
SONGMAN->GetSongs( arraySongs );
|
||||
SortSongPointerArrayByTitle( arraySongs );
|
||||
|
||||
for( i=0; i<NUM_BACKGROUNDS; i++ )
|
||||
{
|
||||
Song* pSong = NULL;
|
||||
for( int j=0; j<50; j++ )
|
||||
{
|
||||
pSong = arraySongs[ rand()%arraySongs.size() ];
|
||||
if( pSong->HasBackground() )
|
||||
break;
|
||||
}
|
||||
|
||||
CroppedSprite* pBackground = new CroppedSprite;
|
||||
pBackground->SetCroppedSize( BACKGROUNDS_WIDTH, BACKGROUNDS_HEIGHT );
|
||||
pBackground->LoadBG( pSong->HasBackground() ? pSong->GetBackgroundPath() : THEME->GetPathTo("Graphics","Common fallback background") );
|
||||
m_vBackgrounds.push_back( pBackground );
|
||||
|
||||
Sprite* pFrame = new Sprite;
|
||||
pFrame->Load( THEME->GetPathTo("Graphics","ScreenCredits background frame") );
|
||||
m_vFrames.push_back( pFrame );
|
||||
}
|
||||
m_ScrollerBackgrounds.Load( m_vBackgrounds, BACKGROUNDS_BASE_X, BACKGROUNDS_BASE_Y, BACKGROUNDS_VELOCITY_X, BACKGROUNDS_VELOCITY_Y, BACKGROUNDS_SPACING_X, BACKGROUNDS_SPACING_Y );
|
||||
this->AddChild( &m_ScrollerBackgrounds );
|
||||
m_ScrollerFrames.Load( m_vFrames, BACKGROUNDS_BASE_X, BACKGROUNDS_BASE_Y, BACKGROUNDS_VELOCITY_X, BACKGROUNDS_VELOCITY_Y, BACKGROUNDS_SPACING_X, BACKGROUNDS_SPACING_Y );
|
||||
this->AddChild( &m_ScrollerFrames );
|
||||
|
||||
|
||||
for( i=0; i<NUM_CREDIT_LINES; i++ )
|
||||
{
|
||||
BitmapText* pText = new BitmapText;
|
||||
pText->LoadFromFont( THEME->GetPathTo("Fonts","ScreenCredits titles") );
|
||||
pText->SetText( CREDIT_LINES[i].text );
|
||||
switch( CREDIT_LINES[i].colorIndex )
|
||||
{
|
||||
case 1: pText->SetDiffuse( TEXTS_COLOR_INTRO ); break;
|
||||
case 2: pText->SetDiffuse( TEXTS_COLOR_HEADER ); break;
|
||||
case 0: pText->SetDiffuse( TEXTS_COLOR_NORMAL ); break;
|
||||
default: ASSERT(0);
|
||||
}
|
||||
pText->SetZoom( TEXTS_ZOOM );
|
||||
m_vTexts.push_back( pText );
|
||||
}
|
||||
m_ScrollerTexts.Load( m_vTexts, TEXTS_BASE_X, TEXTS_BASE_Y, TEXTS_VELOCITY_X, TEXTS_VELOCITY_Y, TEXTS_SPACING_X, TEXTS_SPACING_Y );
|
||||
this->AddChild( &m_ScrollerTexts );
|
||||
|
||||
|
||||
m_Overlay.LoadFromAniDir( THEME->GetPathTo("BGAnimations","ScreenCredits overlay") );
|
||||
this->AddChild( &m_Overlay );
|
||||
|
||||
m_In.Load( THEME->GetPathTo("BGAnimations","ScreenCredits in") );
|
||||
this->AddChild( &m_In ); // draw and update manually
|
||||
m_In.StartTransitioning();
|
||||
|
||||
m_Out.Load( THEME->GetPathTo("BGAnimations","ScreenCredits out") );
|
||||
this->AddChild( &m_Out ); // draw and update manually
|
||||
|
||||
this->PostScreenMessage( SM_BeginFadingOut, m_ScrollerTexts.GetTotalSecsToScroll() );
|
||||
|
||||
SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("credits") );
|
||||
|
||||
SOUNDMAN->PlayMusic( THEME->GetPathTo("Sounds","ScreenCredits music") );
|
||||
}
|
||||
|
||||
ScreenCredits::~ScreenCredits()
|
||||
{
|
||||
unsigned i;
|
||||
|
||||
for( i=0; i<m_vBackgrounds.size(); i++ )
|
||||
delete m_vBackgrounds[i];
|
||||
m_vBackgrounds.clear();
|
||||
|
||||
for( i=0; i<m_vFrames.size(); i++ )
|
||||
delete m_vFrames[i];
|
||||
m_vFrames.clear();
|
||||
|
||||
for( i=0; i<m_vTexts.size(); i++ )
|
||||
delete m_vTexts[i];
|
||||
m_vTexts.clear();
|
||||
}
|
||||
|
||||
void ScreenCredits::Update( float fDeltaTime )
|
||||
{
|
||||
Screen::Update( fDeltaTime );
|
||||
}
|
||||
|
||||
|
||||
void ScreenCredits::DrawPrimitives()
|
||||
{
|
||||
Screen::DrawPrimitives();
|
||||
}
|
||||
|
||||
|
||||
void ScreenCredits::Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI )
|
||||
{
|
||||
// LOG->Trace( "ScreenCredits::Input()" );
|
||||
|
||||
if( m_In.IsTransitioning() || m_Out.IsTransitioning() )
|
||||
return;
|
||||
|
||||
Screen::Input( DeviceI, type, GameI, MenuI, StyleI ); // default input handler
|
||||
}
|
||||
|
||||
void ScreenCredits::HandleScreenMessage( const ScreenMessage SM )
|
||||
{
|
||||
switch( SM )
|
||||
{
|
||||
case SM_BeginFadingOut:
|
||||
if( !m_Out.IsTransitioning() )
|
||||
m_Out.StartTransitioning( SM_GoToNextScreen );
|
||||
break;
|
||||
case SM_GoToNextScreen:
|
||||
SONGMAN->SaveMachineScoresToDisk();
|
||||
SCREENMAN->SetNewScreen( NEXT_SCREEN );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void ScreenCredits::MenuStart( PlayerNumber pn )
|
||||
{
|
||||
this->PostScreenMessage( SM_BeginFadingOut, 0 );
|
||||
}
|
||||
|
||||
void ScreenCredits::MenuBack( PlayerNumber pn )
|
||||
{
|
||||
this->PostScreenMessage( SM_BeginFadingOut, 0 );
|
||||
}
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
-----------------------------------------------------------------------------
|
||||
File: ScreenCredits.h
|
||||
|
||||
Desc: Music plays and song names scroll across the screen.
|
||||
|
||||
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||
Chris Danford
|
||||
-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#include "Screen.h"
|
||||
#include "TransitionBGAnimation.h"
|
||||
#include "ActorScroller.h"
|
||||
|
||||
|
||||
class ScreenCredits : public Screen
|
||||
{
|
||||
public:
|
||||
ScreenCredits();
|
||||
~ScreenCredits();
|
||||
|
||||
virtual void Update( float fDeltaTime );
|
||||
virtual void DrawPrimitives();
|
||||
|
||||
virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI );
|
||||
virtual void HandleScreenMessage( const ScreenMessage SM );
|
||||
|
||||
void MenuStart( PlayerNumber pn );
|
||||
void MenuBack( PlayerNumber pn );
|
||||
|
||||
private:
|
||||
|
||||
BGAnimation m_Background;
|
||||
|
||||
ActorScroller m_ScrollerBackgrounds;
|
||||
vector<Actor*> m_vBackgrounds;
|
||||
|
||||
ActorScroller m_ScrollerFrames;
|
||||
vector<Actor*> m_vFrames;
|
||||
|
||||
ActorScroller m_ScrollerTexts;
|
||||
vector<Actor*> m_vTexts;
|
||||
|
||||
BGAnimation m_Overlay;
|
||||
|
||||
TransitionBGAnimation m_In;
|
||||
TransitionBGAnimation m_Out;
|
||||
};
|
||||
|
||||
|
||||
@@ -31,110 +31,7 @@
|
||||
|
||||
const CString CREDIT_LINES[] =
|
||||
{
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"GRAPHICS:",
|
||||
"v1ral (Lucas Tang)",
|
||||
"SPiGuMuS",
|
||||
"Visage",
|
||||
"DJ McFox (Ryan McKanna)",
|
||||
"Cloud34 (Lamden Travis)",
|
||||
"Redcrusher (Michael Curry)",
|
||||
"Steve 'healing_vision' Klise",
|
||||
"Mauro Panichella",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"WEB DESIGN:",
|
||||
"Brian 'Bork' Bugh",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"SOUND:",
|
||||
"Kyle 'KeeL' Ward",
|
||||
"Jim 'Animechanic' Cabeen"
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"TESTING:",
|
||||
"Gotetsu",
|
||||
"spds (James Sanders)",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"PROGRAMMING:",
|
||||
"Chris Danford",
|
||||
"Andrew 'Frieza' Livy",
|
||||
"Glenn Maynard",
|
||||
"Bruno Figueiredo",
|
||||
"Dro Kulix (Peter S. May)",
|
||||
"nmspaz (Jared Roberts)",
|
||||
"binarys (Brendan Walker)",
|
||||
"Lance Gilbert (Neovanglist)",
|
||||
"Michel Donais",
|
||||
"Mantis (Ben Nordstrom)",
|
||||
"Parasyte (Chris Gomez)",
|
||||
"dirkthedaring (Michael Patterson)",
|
||||
"angedelamort (Sauleil Lamarre)",
|
||||
"Edwin Evans",
|
||||
"Brian 'Bork' Bugh",
|
||||
"Elvis314 (Joel Maher)",
|
||||
"Kefabi (Garth Smith)",
|
||||
"Pkillah (Playah Killah)",
|
||||
"DJ McFox (Ryan McKanna)",
|
||||
"Robert Kemmetmueller",
|
||||
"Shabach (Ben Andersen)",
|
||||
"SlinkyWizard (Will Valladao)",
|
||||
"TheChip (The Chip)",
|
||||
"WarriorBob (David H)",
|
||||
"Mike Waltson",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"SPECIAL THANKS TO:",
|
||||
"SimWolf",
|
||||
"DJ DraftHorse",
|
||||
"Dance With Intensity",
|
||||
"BeMaNiRuler",
|
||||
"DDRLlama",
|
||||
"DDRManiaX",
|
||||
"NMR",
|
||||
"Random Hajile",
|
||||
"Lagged",
|
||||
"The Melting Pot",
|
||||
"DDRJamz Global BBS",
|
||||
"Eric 'WaffleKing' Webster",
|
||||
"Mark 'Foobly' Verrey",
|
||||
"Mandarin Blue",
|
||||
"Anne Kiel",
|
||||
"BeMaNiFiNiNaTiC (Jeremy Hine)",
|
||||
"Garett Sakamoto",
|
||||
"SailorBob",
|
||||
"AngelTK (Kenny Lai)",
|
||||
"Illusionz - Issaquah, WA",
|
||||
"Quarters - Kirkland, WA",
|
||||
"Segapark - Bournemouth, UK",
|
||||
"Pier Amusements - Bournemouth, UK",
|
||||
"Westcliff Amusements - Bournemouth, UK",
|
||||
"Naoki",
|
||||
"Konami Computer Entertainment Japan",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"Please, join the StepMania team and help us out!",
|
||||
""
|
||||
};
|
||||
const unsigned NUM_CREDIT_LINES = sizeof(CREDIT_LINES) / sizeof(CString);
|
||||
|
||||
@@ -168,14 +65,14 @@ ScreenMusicScroll::ScreenMusicScroll()
|
||||
m_iNumLines++;
|
||||
}
|
||||
|
||||
for( i=0; i<min(NUM_CREDIT_LINES, MAX_CREDIT_LINES); i++ )
|
||||
{
|
||||
m_textLines[m_iNumLines].LoadFromFont( THEME->GetPathTo("Fonts","ScreenMusicScroll titles") );
|
||||
m_textLines[m_iNumLines].SetText( CREDIT_LINES[i] );
|
||||
m_textLines[m_iNumLines].SetZoom( TEXT_ZOOM );
|
||||
|
||||
m_iNumLines++;
|
||||
}
|
||||
// for( i=0; i<min(NUM_CREDIT_LINES, MAX_CREDIT_LINES); i++ )
|
||||
// {
|
||||
// m_textLines[m_iNumLines].LoadFromFont( THEME->GetPathTo("Fonts","ScreenMusicScroll titles") );
|
||||
// m_textLines[m_iNumLines].SetText( CREDIT_LINES[i] );
|
||||
// m_textLines[m_iNumLines].SetZoom( TEXT_ZOOM );
|
||||
//
|
||||
// m_iNumLines++;
|
||||
// }
|
||||
|
||||
for( i=0; i<m_iNumLines; i++ )
|
||||
{
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
|
||||
|
||||
const unsigned MAX_MUSIC_LINES = 1200;
|
||||
const unsigned MAX_CREDIT_LINES = 100;
|
||||
const unsigned MAX_TOTAL_LINES = MAX_MUSIC_LINES + MAX_CREDIT_LINES;
|
||||
//const unsigned MAX_CREDIT_LINES = 100;
|
||||
const unsigned MAX_TOTAL_LINES = MAX_MUSIC_LINES;// + MAX_CREDIT_LINES;
|
||||
|
||||
|
||||
class ScreenMusicScroll : public Screen
|
||||
|
||||
@@ -356,7 +356,19 @@ void ScreenNameEntry::HandleScreenMessage( const ScreenMessage SM )
|
||||
}
|
||||
break;
|
||||
case SM_GoToNextScreen:
|
||||
SCREENMAN->SetNewScreen( "ScreenMusicScroll" );
|
||||
{
|
||||
Grade max_grade = GRADE_E;
|
||||
vector<Song*> vSongs;
|
||||
StageStats stats;
|
||||
GAMESTATE->GetFinalEvalStatsAndSongs( stats, vSongs );
|
||||
for( int p=0; p<NUM_PLAYERS; p++ )
|
||||
if( GAMESTATE->IsPlayerEnabled(p) )
|
||||
max_grade = max( max_grade, stats.GetGrade((PlayerNumber)p) );
|
||||
if( max_grade >= GRADE_AA )
|
||||
SCREENMAN->SetNewScreen( "ScreenCredits" );
|
||||
else
|
||||
SCREENMAN->SetNewScreen( "ScreenMusicScroll" );
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -123,7 +123,7 @@ void ScreenPlayerOptions::ImportOptions()
|
||||
|
||||
m_iSelectedOption[p][PO_HOLD_NOTES] = po.m_bHoldNotes ? 1 : 0;
|
||||
m_iSelectedOption[p][PO_DARK] = po.m_fDark==1 ? 1 : 0;
|
||||
m_iSelectedOption[p][PO_PERSPECTIVE]= SCALE( po.m_fPerspectiveTilt, -1, +1, 0, 2 );
|
||||
m_iSelectedOption[p][PO_PERSPECTIVE]= SCALE( (int)po.m_fPerspectiveTilt, -1, +1, 0, 2 );
|
||||
|
||||
|
||||
po.Init();
|
||||
@@ -171,7 +171,7 @@ void ScreenPlayerOptions::ExportOptions()
|
||||
|
||||
po.m_bHoldNotes = (m_iSelectedOption[p][PO_HOLD_NOTES] == 1);
|
||||
po.m_fDark = (m_iSelectedOption[p][PO_DARK] == 1) ? 1.f : 0.f;
|
||||
po.m_fPerspectiveTilt = m_iSelectedOption[p][PO_PERSPECTIVE] - 1;
|
||||
po.m_fPerspectiveTilt = (float)m_iSelectedOption[p][PO_PERSPECTIVE] - 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -310,8 +310,8 @@ void Sprite::DrawPrimitives()
|
||||
//////////////////////
|
||||
// render the diffuse pass
|
||||
//////////////////////
|
||||
v[0].c = m_temp.diffuse[2]; // bottom left
|
||||
v[1].c = m_temp.diffuse[0]; // top left
|
||||
v[0].c = m_temp.diffuse[0]; // top left
|
||||
v[1].c = m_temp.diffuse[2]; // bottom left
|
||||
v[2].c = m_temp.diffuse[3]; // bottom right
|
||||
v[3].c = m_temp.diffuse[1]; // top right
|
||||
DISPLAY->DrawQuad( v );
|
||||
|
||||
+30
-10
@@ -60,7 +60,7 @@ IntDir=.\../Release6
|
||||
TargetDir=\stepmania\stepmania
|
||||
TargetName=StepMania
|
||||
SOURCE="$(InputPath)"
|
||||
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
|
||||
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
|
||||
PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi ia32.vdi
|
||||
# End Special Build Tool
|
||||
|
||||
@@ -95,7 +95,7 @@ IntDir=.\../Debug6
|
||||
TargetDir=\stepmania\stepmania
|
||||
TargetName=StepMania-debug
|
||||
SOURCE="$(InputPath)"
|
||||
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
|
||||
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
|
||||
PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi ia32.vdi
|
||||
# End Special Build Tool
|
||||
|
||||
@@ -407,6 +407,14 @@ SOURCE=.\NoteDataWithScoring.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\NoteFieldPositioning.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\NoteFieldPositioning.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Notes.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
@@ -553,14 +561,6 @@ SOURCE=.\TitleSubstitution.cpp
|
||||
|
||||
SOURCE=.\TitleSubstitution.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\NoteFieldPositioning.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\NoteFieldPositioning.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "File Types"
|
||||
|
||||
@@ -932,6 +932,10 @@ SOURCE=.\Actor.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ActorCollision.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ActorFrame.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
@@ -940,6 +944,14 @@ SOURCE=.\ActorFrame.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ActorScroller.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ActorScroller.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\BitmapText.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
@@ -1512,6 +1524,14 @@ SOURCE=.\ScreenCompany.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ScreenCredits.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ScreenCredits.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ScreenDemonstration.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
@@ -202,6 +202,12 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
|
||||
<File
|
||||
RelativePath="ScreenCompany.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="ScreenCredits.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="ScreenCredits.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="ScreenDemonstration.cpp">
|
||||
</File>
|
||||
@@ -1513,12 +1519,21 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
|
||||
<File
|
||||
RelativePath=".\Actor.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="ActorCollision.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ActorFrame.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ActorFrame.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="ActorScroller.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="ActorScroller.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\BitmapText.cpp">
|
||||
</File>
|
||||
|
||||
Reference in New Issue
Block a user