added ScreenEnding

This commit is contained in:
Chris Danford
2003-04-03 22:10:40 +00:00
parent c41ede209c
commit a798cc954c
20 changed files with 620 additions and 152 deletions
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

+20
View File
@@ -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
+41
View File
@@ -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
+87
View File
@@ -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();
}
+39
View File
@@ -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
+1 -20
View File
@@ -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;
+2 -2
View File
@@ -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:
+2 -1
View File
@@ -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
}
+2
View File
@@ -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;
+301
View File
@@ -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 );
}
+51
View File
@@ -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;
};
+9 -112
View File
@@ -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++ )
{
+2 -2
View File
@@ -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
+13 -1
View File
@@ -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;
}
}
+2 -2
View File
@@ -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;
}
}
+2 -2
View File
@@ -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
View File
@@ -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
+15
View 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>