more fixes to Oni and courses
This commit is contained in:
+19
-1
@@ -109,8 +109,15 @@ void Actor::Draw() // set the world matrix and calculate actor properties, the
|
||||
m_temp_pos += m_vectBounce * fPercentOffset;
|
||||
}
|
||||
break;
|
||||
case bobbing:
|
||||
{
|
||||
float fPercentThroughBounce = m_fTimeIntoBounce / m_fBouncePeriod;
|
||||
float fPercentOffset = sinf( fPercentThroughBounce*D3DX_PI );
|
||||
m_temp_pos += m_vectBounce * fPercentOffset;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
ASSERT( false ); // invalid Effect
|
||||
ASSERT(0); // invalid Effect
|
||||
}
|
||||
|
||||
|
||||
@@ -189,6 +196,7 @@ void Actor::Update( float fDeltaTime )
|
||||
case flickering:
|
||||
break;
|
||||
case bouncing:
|
||||
case bobbing:
|
||||
m_fTimeIntoBounce += fDeltaTime;
|
||||
if( m_fTimeIntoBounce >= m_fBouncePeriod )
|
||||
m_fTimeIntoBounce -= m_fBouncePeriod;
|
||||
@@ -460,4 +468,14 @@ void Actor::SetEffectBouncing( D3DXVECTOR3 vectBounce, float fPeriod )
|
||||
m_fBouncePeriod = fPeriod;
|
||||
m_fTimeIntoBounce = 0;
|
||||
|
||||
}
|
||||
|
||||
void Actor::SetEffectBobbing( D3DXVECTOR3 vectBob, float fPeriod )
|
||||
{
|
||||
m_Effect = bobbing;
|
||||
|
||||
m_vectBounce = vectBob;
|
||||
m_fBouncePeriod = fPeriod;
|
||||
m_fTimeIntoBounce = 0;
|
||||
|
||||
}
|
||||
@@ -34,7 +34,7 @@ public:
|
||||
blinking, camelion, glowing,
|
||||
wagging, spinning,
|
||||
vibrating, flickering,
|
||||
bouncing
|
||||
bouncing, bobbing
|
||||
};
|
||||
|
||||
// let subclasses override
|
||||
@@ -154,6 +154,7 @@ public:
|
||||
void SetEffectVibrating( float fVibrationDistance = 5.0 );
|
||||
void SetEffectFlickering();
|
||||
void SetEffectBouncing( D3DXVECTOR3 vectBounceDir, float fPeriod );
|
||||
void SetEffectBobbing( D3DXVECTOR3 vectBobDir, float fPeriod );
|
||||
Effect GetEffect() { return m_Effect; };
|
||||
|
||||
|
||||
@@ -210,7 +211,7 @@ protected:
|
||||
|
||||
TweenState m_QueuedTweens[MAX_TWEEN_STATES];
|
||||
int m_iNumTweenStates;
|
||||
TweenState& GetLatestTween() { return m_QueuedTweens[m_iNumTweenStates-1]; };
|
||||
TweenState& GetLatestTween() { ASSERT(m_iNumTweenStates>0 && m_iNumTweenStates<MAX_TWEEN_STATES); return m_QueuedTweens[m_iNumTweenStates-1]; };
|
||||
|
||||
|
||||
//
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
#include "GameConstantsAndTypes.h"
|
||||
#include "GameManager.h"
|
||||
#include "GameState.h"
|
||||
#include "RageException.h"
|
||||
#include "RageTimer.h"
|
||||
|
||||
|
||||
float ArrowGetYOffset( const PlayerOptions& po, float fStepIndex, float fSongBeat )
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
#include "PrefsManager.h"
|
||||
#include "PrefsManager.h"
|
||||
#include "RageBitmapTexture.h"
|
||||
#include "RageException.h"
|
||||
#include "RageTimer.h"
|
||||
|
||||
|
||||
const CString BG_ANIMS_DIR = "BGAnimations\\";
|
||||
@@ -91,12 +93,7 @@ bool Background::LoadFromSong( Song* pSong, bool bDisableVisualizations )
|
||||
else
|
||||
m_BackgroundMode = MODE_ANIMATIONS;
|
||||
|
||||
|
||||
//
|
||||
// load song background
|
||||
// force reload, dither, and stretch (stretch is needed by background animations for scrolling effects)
|
||||
//
|
||||
m_sprSongBackground.Load( pSong->HasBackground() ? pSong->GetBackgroundPath() : THEME->GetPathTo(GRAPHIC_FALLBACK_BACKGROUND), true, 2, 0, true, m_BackgroundMode==MODE_ANIMATIONS );
|
||||
m_sprSongBackground.Load( pSong->HasBackground() ? pSong->GetBackgroundPath() : THEME->GetPathTo(GRAPHIC_FALLBACK_BACKGROUND), true, 4, 0, true );
|
||||
|
||||
m_sprSongBackground.StretchTo( CRect(SCREEN_LEFT,SCREEN_TOP,SCREEN_RIGHT,SCREEN_BOTTOM) );
|
||||
|
||||
|
||||
@@ -36,3 +36,8 @@ void BannerWithFrame::LoadFromGroup( CString sGroupName )
|
||||
{
|
||||
m_Banner.LoadFromGroup( sGroupName );
|
||||
}
|
||||
|
||||
void BannerWithFrame::LoadFromCourse( Course* pCourse )
|
||||
{
|
||||
m_Banner.LoadFromCourse( pCourse );
|
||||
}
|
||||
|
||||
@@ -13,7 +13,8 @@
|
||||
#include "ActorFrame.h"
|
||||
#include "Sprite.h"
|
||||
#include "Banner.h"
|
||||
|
||||
class Song;
|
||||
class Course;
|
||||
|
||||
class BannerWithFrame : public ActorFrame
|
||||
{
|
||||
@@ -22,6 +23,7 @@ public:
|
||||
|
||||
void LoadFromSong( Song* pSong );
|
||||
void LoadFromGroup( CString sGroupName );
|
||||
void LoadFromCourse( Course* pCourse );
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
#include "IniFile.h"
|
||||
#include "FontManager.h"
|
||||
#include "RageLog.h"
|
||||
#include "RageException.h"
|
||||
#include "RageTimer.h"
|
||||
|
||||
|
||||
|
||||
|
||||
+72
-52
@@ -16,79 +16,63 @@
|
||||
#include "GameManager.h"
|
||||
#include "SongManager.h"
|
||||
#include "GameState.h"
|
||||
#include "RageException.h"
|
||||
#include "RageLog.h"
|
||||
#include "MsdFile.h"
|
||||
|
||||
|
||||
void Course::LoadFromCRSFile( CString sPath, CArray<Song*,Song*> &apSongs )
|
||||
{
|
||||
CStdioFile file;
|
||||
if( !file.Open( sPath, CFile::modeRead|CFile::shareDenyNone ) )
|
||||
MsdFile msd;
|
||||
if( !msd.ReadFile(sPath) )
|
||||
throw RageException( "Error opening CRS file '%s'.", sPath );
|
||||
|
||||
CString sDir, sFName, sExt;
|
||||
splitrelpath( sPath, sDir, sFName, sExt );
|
||||
|
||||
// read the whole file into a sFileText
|
||||
CString sFileText;
|
||||
CString buffer;
|
||||
while( file.ReadString(buffer) )
|
||||
sFileText += buffer + "\n";
|
||||
file.Close();
|
||||
CStringArray arrayPossibleBanners;
|
||||
GetDirListing( "Courses\\" + sFName + ".png", arrayPossibleBanners, false, true );
|
||||
GetDirListing( "Courses\\" + sFName + ".jpg", arrayPossibleBanners, false, true );
|
||||
GetDirListing( "Courses\\" + sFName + ".bmp", arrayPossibleBanners, false, true );
|
||||
GetDirListing( "Courses\\" + sFName + ".gif", arrayPossibleBanners, false, true );
|
||||
if( arrayPossibleBanners.GetSize() > 0 )
|
||||
m_sBannerPath = arrayPossibleBanners[0];
|
||||
|
||||
// strip comments out of sFileText
|
||||
while( sFileText.Find("//") != -1 )
|
||||
for( int i=0; i<msd.m_iNumValues; i++ )
|
||||
{
|
||||
int iIndexCommentStart = sFileText.Find("//");
|
||||
int iIndexCommentEnd = sFileText.Find("\n", iIndexCommentStart);
|
||||
if( iIndexCommentEnd == -1 ) // comment doesn't have an end?
|
||||
sFileText.Delete( iIndexCommentStart, 2 );
|
||||
else
|
||||
sFileText.Delete( iIndexCommentStart, iIndexCommentEnd-iIndexCommentStart );
|
||||
}
|
||||
|
||||
// split sFileText into strings containing each value expression
|
||||
CStringArray arrayValueStrings;
|
||||
split( sFileText, ";", arrayValueStrings, false );
|
||||
|
||||
|
||||
// for each value expression string, parse it into a value name and data
|
||||
for( int i=0; i < arrayValueStrings.GetSize(); i++ )
|
||||
{
|
||||
CString sValueString = arrayValueStrings[i];
|
||||
|
||||
// split the value string into tokens
|
||||
CStringArray arrayValueTokens;
|
||||
split( sValueString, ":", arrayValueTokens, false );
|
||||
for( int j=0; j<arrayValueTokens.GetSize(); j++ )
|
||||
{
|
||||
arrayValueTokens[j].TrimLeft();
|
||||
arrayValueTokens[j].TrimRight();
|
||||
}
|
||||
if( arrayValueTokens.GetSize() == 0 )
|
||||
continue;
|
||||
|
||||
CString sValueName = arrayValueTokens.GetAt( 0 );
|
||||
CString sValueName = msd.m_szValuesAndParams[i][0];
|
||||
CString* sParams = msd.m_sValuesAndParams[i];
|
||||
|
||||
// handle the data
|
||||
if( sValueName == "#COURSE" )
|
||||
m_sName = arrayValueTokens[1];
|
||||
if( 0 == stricmp(sValueName, "COURSE") )
|
||||
m_sName = sParams[1];
|
||||
|
||||
else if( sValueName == "#REPEAT" )
|
||||
else if( 0 == stricmp(sValueName, "REPEAT") )
|
||||
{
|
||||
arrayValueTokens[1].MakeLower();
|
||||
if( arrayValueTokens[1].Find("yes") != -1 )
|
||||
sParams[1].MakeLower();
|
||||
if( sParams[1].Find("yes") != -1 )
|
||||
m_bRepeat = true;
|
||||
}
|
||||
|
||||
else if( sValueName == "#SONG" )
|
||||
else if( 0 == stricmp(sValueName, "LIVES") )
|
||||
{
|
||||
CString sSongDir = arrayValueTokens[1];
|
||||
CString sNotesDescription = arrayValueTokens[2];
|
||||
m_iLives = atoi( sParams[1] );
|
||||
}
|
||||
|
||||
else if( 0 == stricmp(sValueName, "SONG") )
|
||||
{
|
||||
CString sSongDir = "Songs\\" + sParams[1] + "\\";
|
||||
CString sNotesDescription = sParams[2];
|
||||
|
||||
int i;
|
||||
|
||||
Song* pSong = NULL;
|
||||
for( i=0; i<apSongs.GetSize(); i++ )
|
||||
if( 0 == stricmp(apSongs[i]->m_sSongDir, sSongDir) )
|
||||
for( i=0; i<apSongs.GetSize(); i++ ) // foreach song
|
||||
{
|
||||
CString sThisSongDir = apSongs[i]->m_sSongDir;
|
||||
if( 0 == stricmp(sThisSongDir, sSongDir) )
|
||||
pSong = apSongs[i];
|
||||
|
||||
}
|
||||
if( pSong == NULL ) // we didn't find the Song
|
||||
continue; // skip this song
|
||||
|
||||
@@ -164,4 +148,40 @@ void Course::GetSongAndNotesForCurrentStyle( CArray<Song*,Song*>& apSongsOut, CA
|
||||
for( int p=0; p<NUM_PLAYERS; p++ )
|
||||
apNotesOut[p].Add( pNotes );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
D3DXCOLOR Course::GetColor()
|
||||
{
|
||||
// This could be made smarter
|
||||
if( m_iStages >= 7 )
|
||||
return D3DXCOLOR(1,0,0,1); // red
|
||||
else if( m_iStages >= 4 )
|
||||
return D3DXCOLOR(1,0.5f,0,1); // orange
|
||||
else
|
||||
return D3DXCOLOR(0,1,0,1); // green
|
||||
}
|
||||
|
||||
//
|
||||
// Sorting stuff
|
||||
//
|
||||
|
||||
int CompareCoursePointersByDifficulty(const void *arg1, const void *arg2)
|
||||
{
|
||||
Course* pCourse1 = *(Course**)arg1;
|
||||
Course* pCourse2 = *(Course**)arg2;
|
||||
|
||||
float fScore1 = (float)pCourse1->m_iStages;
|
||||
float fScore2 = (float)pCourse2->m_iStages;
|
||||
|
||||
if( fScore1 < fScore2 )
|
||||
return -1;
|
||||
else if( fScore1 == fScore2 )
|
||||
return 0;
|
||||
else
|
||||
return 1;
|
||||
}
|
||||
|
||||
void SortCoursePointerArrayByDifficulty( CArray<Course*,Course*> &apCourses )
|
||||
{
|
||||
qsort( apCourses.GetData(), apCourses.GetSize(), sizeof(Course*), CompareCoursePointersByDifficulty );
|
||||
}
|
||||
|
||||
+12
-2
@@ -1,7 +1,7 @@
|
||||
#pragma once
|
||||
/*
|
||||
-----------------------------------------------------------------------------
|
||||
Course: Course
|
||||
Class: Course
|
||||
|
||||
Desc: A queue of songs and notes.
|
||||
|
||||
@@ -11,9 +11,11 @@
|
||||
*/
|
||||
|
||||
#include "GameConstantsAndTypes.h"
|
||||
#include "PlayerOptions.h"
|
||||
class Song;
|
||||
struct Notes;
|
||||
|
||||
|
||||
const int MAX_COURSE_STAGES = 100;
|
||||
|
||||
class Course
|
||||
@@ -23,6 +25,7 @@ public:
|
||||
{
|
||||
m_iStages = 0;
|
||||
m_bRepeat = false;
|
||||
m_iLives = 4;
|
||||
for( int i=0; i<MAX_COURSE_STAGES; i++ )
|
||||
m_apSongs[i] = NULL;
|
||||
}
|
||||
@@ -35,7 +38,9 @@ public:
|
||||
CString m_asDescriptions[MAX_COURSE_STAGES];
|
||||
Notes* GetNotesForStage( int iStage );
|
||||
bool m_bRepeat; // repeat after last song?
|
||||
PlayerOptions m_PlayerOptions;
|
||||
int m_iLives; // -1 means use bar life meter
|
||||
CString m_sModifiers; // contains player options and song options
|
||||
// PlayerOptions m_PlayerOptions;
|
||||
|
||||
|
||||
void LoadFromCRSFile( CString sPath, CArray<Song*,Song*> &apSongs );
|
||||
@@ -50,4 +55,9 @@ public:
|
||||
}
|
||||
|
||||
void GetSongAndNotesForCurrentStyle( CArray<Song*,Song*>& apSongsOut, CArray<Notes*,Notes*> apNotesOut[NUM_PLAYERS] );
|
||||
D3DXCOLOR GetColor();
|
||||
};
|
||||
|
||||
|
||||
void SortCoursePointerArrayByDifficulty( CArray<Course*,Course*> &apCourses );
|
||||
|
||||
|
||||
@@ -108,6 +108,9 @@ void CourseContentsFrame::SetFromCourse( Course* pCourse )
|
||||
|
||||
printf( "Adding song '%s'\n", pSong->m_sMainTitle );
|
||||
m_CourseContentDisplays[m_iNumContents].Load( m_iNumContents+1, pSong, pNotes );
|
||||
m_CourseContentDisplays[m_iNumContents].SetXY( 0, -((MAX_VISIBLE_CONTENTS-1)/2) * CONTENTS_BAR_HEIGHT );
|
||||
m_CourseContentDisplays[m_iNumContents].BeginTweening( i*0.1f );
|
||||
m_CourseContentDisplays[m_iNumContents].SetTweenY( (-(MAX_VISIBLE_CONTENTS-1)/2 + i) * CONTENTS_BAR_HEIGHT );
|
||||
|
||||
m_iNumContents ++;
|
||||
}
|
||||
@@ -116,6 +119,8 @@ void CourseContentsFrame::SetFromCourse( Course* pCourse )
|
||||
|
||||
void CourseContentsFrame::Update( float fDeltaTime )
|
||||
{
|
||||
ActorFrame::Update( fDeltaTime );
|
||||
|
||||
if( m_fTimeUntilScroll > 0 && m_iNumContents > MAX_VISIBLE_CONTENTS)
|
||||
m_fTimeUntilScroll -= fDeltaTime;
|
||||
if( m_fTimeUntilScroll <= 0 )
|
||||
@@ -149,11 +154,13 @@ void CourseContentsFrame::DrawPrimitives()
|
||||
|
||||
|
||||
int iItemToDraw = (int)m_fItemAtTopOfList;
|
||||
|
||||
float fY = (iItemToDraw-m_fItemAtTopOfList-(MAX_VISIBLE_CONTENTS-1)/2) * CONTENTS_BAR_HEIGHT;
|
||||
|
||||
for( int i=0; i<min(MAX_VISIBLE_CONTENTS+1, m_iNumContents); i++ )
|
||||
{
|
||||
m_CourseContentDisplays[iItemToDraw].SetY( fY );
|
||||
if( m_fTimeUntilScroll <= 0 )
|
||||
m_CourseContentDisplays[iItemToDraw].SetY( fY );
|
||||
m_CourseContentDisplays[iItemToDraw].Draw();
|
||||
iItemToDraw++;
|
||||
if( iItemToDraw >= m_iNumContents )
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
#include "RageTextureManager.h"
|
||||
#include "RageUtil.h"
|
||||
#include "RageLog.h"
|
||||
#include "RageException.h"
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
#include "Font.h"
|
||||
#include "RageUtil.h"
|
||||
#include "RageLog.h"
|
||||
#include "RageException.h"
|
||||
#include "RageTimer.h"
|
||||
|
||||
|
||||
FontManager* FONT = NULL;
|
||||
|
||||
@@ -0,0 +1,210 @@
|
||||
#include "stdafx.h"
|
||||
/*
|
||||
-----------------------------------------------------------------------------
|
||||
File: GameConstantsAndTypes.cpp
|
||||
|
||||
Desc: See header.
|
||||
|
||||
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||
Chris Danford
|
||||
-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#include "GameConstantsAndTypes.h"
|
||||
|
||||
|
||||
D3DXCOLOR NoteTypeToColor( NoteType nt )
|
||||
{
|
||||
switch( nt )
|
||||
{
|
||||
case NOTE_4TH: return D3DXCOLOR(1,0,0,1); // red
|
||||
case NOTE_8TH: return D3DXCOLOR(0,0,1,1); // blue
|
||||
case NOTE_12TH: return D3DXCOLOR(1,0,1,1); // purple
|
||||
case NOTE_16TH: return D3DXCOLOR(1,1,0,1); // yellow
|
||||
default: ASSERT( false ); return D3DXCOLOR(1,1,1,1);
|
||||
}
|
||||
};
|
||||
|
||||
float NoteTypeToBeat( NoteType nt )
|
||||
{
|
||||
switch( nt )
|
||||
{
|
||||
case NOTE_4TH: return 1.0f; // quarter notes
|
||||
case NOTE_8TH: return 1.0f/2; // eighth notes
|
||||
case NOTE_12TH: return 1.0f/3; // triplets
|
||||
case NOTE_16TH: return 1.0f/4; // sixteenth notes
|
||||
default: ASSERT( false ); return 0;
|
||||
}
|
||||
};
|
||||
|
||||
NoteType GetNoteType( int iNoteIndex )
|
||||
{
|
||||
if( iNoteIndex % (ELEMENTS_PER_MEASURE/4) == 0)
|
||||
return NOTE_4TH;
|
||||
else if( iNoteIndex % (ELEMENTS_PER_MEASURE/8) == 0)
|
||||
return NOTE_8TH;
|
||||
else if( iNoteIndex % (ELEMENTS_PER_MEASURE/12) == 0)
|
||||
return NOTE_12TH;
|
||||
else if( iNoteIndex % (ELEMENTS_PER_MEASURE/16) == 0)
|
||||
return NOTE_16TH;
|
||||
// ASSERT(0);
|
||||
return NOTE_INVALID;
|
||||
};
|
||||
|
||||
bool IsNoteOfType( int iNoteIndex, NoteType t )
|
||||
{
|
||||
return GetNoteType(iNoteIndex) == t;
|
||||
};
|
||||
|
||||
D3DXCOLOR GetNoteColorFromIndex( int iStepIndex )
|
||||
{
|
||||
for( int t=0; t<NUM_NOTE_TYPES; t++ )
|
||||
{
|
||||
if( IsNoteOfType( iStepIndex, (NoteType)t ) )
|
||||
return NoteTypeToColor( (NoteType)t );
|
||||
}
|
||||
return D3DXCOLOR(0.5f,0.5f,0.5f,1);
|
||||
};
|
||||
|
||||
|
||||
|
||||
D3DXCOLOR DifficultyClassToColor( DifficultyClass dc )
|
||||
{
|
||||
switch( dc )
|
||||
{
|
||||
case CLASS_EASY: return D3DXCOLOR(1,1,0,1); // yellow
|
||||
case CLASS_MEDIUM: return D3DXCOLOR(1,0,0,1); // red
|
||||
case CLASS_HARD: return D3DXCOLOR(0,1,0,1); // green
|
||||
default: ASSERT(0); return D3DXCOLOR(); // invalid DifficultyClass
|
||||
}
|
||||
}
|
||||
|
||||
CString DifficultyClassToString( DifficultyClass dc )
|
||||
{
|
||||
switch( dc )
|
||||
{
|
||||
case CLASS_EASY: return "easy";
|
||||
case CLASS_MEDIUM: return "medium";
|
||||
case CLASS_HARD: return "hard";
|
||||
default: ASSERT(0); return ""; // invalid DifficultyClass
|
||||
}
|
||||
}
|
||||
|
||||
DifficultyClass StringToDifficultyClass( CString sDC )
|
||||
{
|
||||
for( int i=0; i<NUM_DIFFICULTY_CLASSES; i++ )
|
||||
{
|
||||
DifficultyClass dc = (DifficultyClass)i;
|
||||
if( sDC == DifficultyClassToString(dc) )
|
||||
return dc;
|
||||
}
|
||||
return CLASS_INVALID;
|
||||
}
|
||||
|
||||
|
||||
int NotesTypeToNumTracks( NotesType nt )
|
||||
{
|
||||
switch( nt )
|
||||
{
|
||||
case NOTES_TYPE_DANCE_SINGLE: return 4;
|
||||
case NOTES_TYPE_DANCE_DOUBLE: return 8;
|
||||
case NOTES_TYPE_DANCE_COUPLE: return 8;
|
||||
case NOTES_TYPE_DANCE_SOLO: return 6;
|
||||
case NOTES_TYPE_PUMP_SINGLE: return 5;
|
||||
case NOTES_TYPE_PUMP_DOUBLE: return 10;
|
||||
case NOTES_TYPE_EZ2_SINGLE: return 5; // Single: TL,LHH,D,RHH,TR
|
||||
case NOTES_TYPE_EZ2_SINGLE_HARD: return 5; // Single: TL,LHH,D,RHH,TR
|
||||
case NOTES_TYPE_EZ2_DOUBLE: return 10; // Double: Single x2
|
||||
case NOTES_TYPE_EZ2_REAL: return 7; // Real: TL,LHH,LHL,D,RHL,RHH,TR
|
||||
case NOTES_TYPE_EZ2_SINGLE_VERSUS: return 10;
|
||||
case NOTES_TYPE_EZ2_SINGLE_HARD_VERSUS: return 10;
|
||||
case NOTES_TYPE_EZ2_REAL_VERSUS: return 10;
|
||||
default: ASSERT(0); return -1; // invalid NotesType
|
||||
}
|
||||
}
|
||||
|
||||
NotesType StringToNotesType( CString sNotesType )
|
||||
{
|
||||
sNotesType.MakeLower();
|
||||
if ( sNotesType == "dance-single" ) return NOTES_TYPE_DANCE_SINGLE;
|
||||
else if( sNotesType == "dance-double" ) return NOTES_TYPE_DANCE_DOUBLE;
|
||||
else if( sNotesType == "dance-couple" ) return NOTES_TYPE_DANCE_COUPLE;
|
||||
else if( sNotesType == "dance-solo" ) return NOTES_TYPE_DANCE_SOLO;
|
||||
else if( sNotesType == "pump-single" ) return NOTES_TYPE_PUMP_SINGLE;
|
||||
else if( sNotesType == "pump-double" ) return NOTES_TYPE_PUMP_DOUBLE;
|
||||
else if( sNotesType == "ez2-single" ) return NOTES_TYPE_EZ2_SINGLE;
|
||||
else if( sNotesType == "ez2-single-hard" ) return NOTES_TYPE_EZ2_SINGLE_HARD;
|
||||
else if( sNotesType == "ez2-double" ) return NOTES_TYPE_EZ2_DOUBLE;
|
||||
else if( sNotesType == "ez2-real" ) return NOTES_TYPE_EZ2_REAL;
|
||||
// else if( sNotesType == "ez2-real-versus" ) return NOTES_TYPE_EZ2_REAL_VERSUS;
|
||||
// else if( sNotesType == "ez2-single-versus" ) return NOTES_TYPE_EZ2_SINGLE_VERSUS;
|
||||
else ASSERT(0); return NOTES_TYPE_DANCE_SINGLE; // invalid NotesType
|
||||
}
|
||||
|
||||
CString NotesTypeToString( NotesType nt )
|
||||
{
|
||||
switch( nt )
|
||||
{
|
||||
case NOTES_TYPE_DANCE_SINGLE: return "dance-single";
|
||||
case NOTES_TYPE_DANCE_DOUBLE: return "dance-double";
|
||||
case NOTES_TYPE_DANCE_COUPLE: return "dance-couple";
|
||||
case NOTES_TYPE_DANCE_SOLO: return "dance-solo";
|
||||
case NOTES_TYPE_PUMP_SINGLE: return "pump-single";
|
||||
case NOTES_TYPE_PUMP_DOUBLE: return "pump-double";
|
||||
case NOTES_TYPE_EZ2_SINGLE: return "ez2-single";
|
||||
case NOTES_TYPE_EZ2_SINGLE_HARD: return "ez2-single-hard";
|
||||
case NOTES_TYPE_EZ2_DOUBLE: return "ez2-double";
|
||||
case NOTES_TYPE_EZ2_REAL: return "ez2-real";
|
||||
// case NOTES_TYPE_EZ2_REAL_VERSUS: return "ez2-real-versus";
|
||||
// case NOTES_TYPE_EZ2_SINGLE_VERSUS: return "ez2-single-versus";
|
||||
default: ASSERT(0); return ""; // invalid NotesType
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
D3DXCOLOR PlayerToColor( const PlayerNumber p )
|
||||
{
|
||||
switch( p )
|
||||
{
|
||||
case PLAYER_1: return D3DXCOLOR(0.4f,1.0f,0.8f,1); // sea green
|
||||
case PLAYER_2: return D3DXCOLOR(1.0f,0.5f,0.2f,1); // orange
|
||||
default: ASSERT( false ); return D3DXCOLOR(1,1,1,1);
|
||||
}
|
||||
};
|
||||
|
||||
D3DXCOLOR PlayerToColor( int p )
|
||||
{
|
||||
return PlayerToColor( (PlayerNumber)p );
|
||||
}
|
||||
|
||||
|
||||
|
||||
Game StyleToGame( Style s )
|
||||
{
|
||||
switch( s )
|
||||
{
|
||||
case STYLE_DANCE_SINGLE:
|
||||
case STYLE_DANCE_VERSUS:
|
||||
case STYLE_DANCE_DOUBLE:
|
||||
case STYLE_DANCE_COUPLE:
|
||||
case STYLE_DANCE_SOLO:
|
||||
return GAME_DANCE;
|
||||
case STYLE_PUMP_SINGLE:
|
||||
case STYLE_PUMP_VERSUS:
|
||||
case STYLE_PUMP_DOUBLE:
|
||||
return GAME_PUMP;
|
||||
case STYLE_EZ2_SINGLE:
|
||||
case STYLE_EZ2_SINGLE_HARD:
|
||||
case STYLE_EZ2_DOUBLE:
|
||||
case STYLE_EZ2_REAL:
|
||||
case STYLE_EZ2_SINGLE_VERSUS:
|
||||
case STYLE_EZ2_SINGLE_HARD_VERSUS:
|
||||
case STYLE_EZ2_REAL_VERSUS:
|
||||
return GAME_EZ2;
|
||||
default:
|
||||
ASSERT(0); // invalid Style
|
||||
return GAME_DANCE;
|
||||
}
|
||||
}
|
||||
@@ -3,13 +3,16 @@
|
||||
-----------------------------------------------------------------------------
|
||||
File: GameConstantsAndTypes.h
|
||||
|
||||
Desc: These things don't change very often.
|
||||
Desc: Things that are used in many places and don't change often.
|
||||
|
||||
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||
Chris Danford
|
||||
-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#include "D3DX8Math.h" // for D3DXCOLOR
|
||||
|
||||
|
||||
/////////////////////////////
|
||||
// Screen Dimensions
|
||||
/////////////////////////////
|
||||
@@ -24,7 +27,6 @@
|
||||
#define CENTER_X (SCREEN_LEFT + (SCREEN_RIGHT - SCREEN_LEFT)/2.0f)
|
||||
#define CENTER_Y (SCREEN_TOP + (SCREEN_BOTTOM - SCREEN_TOP)/2.0f)
|
||||
|
||||
|
||||
/////////////////////////
|
||||
// Note definitions
|
||||
/////////////////////////
|
||||
@@ -68,58 +70,18 @@ enum NoteType
|
||||
NOTE_INVALID
|
||||
};
|
||||
|
||||
inline D3DXCOLOR NoteTypeToColor( NoteType nt )
|
||||
{
|
||||
switch( nt )
|
||||
{
|
||||
case NOTE_4TH: return D3DXCOLOR(1,0,0,1); // red
|
||||
case NOTE_8TH: return D3DXCOLOR(0,0,1,1); // blue
|
||||
case NOTE_12TH: return D3DXCOLOR(1,0,1,1); // purple
|
||||
case NOTE_16TH: return D3DXCOLOR(1,1,0,1); // yellow
|
||||
default: ASSERT( false ); return D3DXCOLOR(1,1,1,1);
|
||||
}
|
||||
};
|
||||
D3DXCOLOR NoteTypeToColor( NoteType nt );
|
||||
|
||||
inline float NoteTypeToBeat( NoteType nt )
|
||||
{
|
||||
switch( nt )
|
||||
{
|
||||
case NOTE_4TH: return 1.0f; // quarter notes
|
||||
case NOTE_8TH: return 1.0f/2; // eighth notes
|
||||
case NOTE_12TH: return 1.0f/3; // triplets
|
||||
case NOTE_16TH: return 1.0f/4; // sixteenth notes
|
||||
default: ASSERT( false ); return 0;
|
||||
}
|
||||
};
|
||||
float NoteTypeToBeat( NoteType nt );
|
||||
|
||||
NoteType GetNoteType( int iNoteIndex );
|
||||
|
||||
bool IsNoteOfType( int iNoteIndex, NoteType t );
|
||||
|
||||
D3DXCOLOR GetNoteColorFromIndex( int iStepIndex );
|
||||
|
||||
inline NoteType GetNoteType( int iNoteIndex )
|
||||
{
|
||||
if( iNoteIndex % (ELEMENTS_PER_MEASURE/4) == 0)
|
||||
return NOTE_4TH;
|
||||
else if( iNoteIndex % (ELEMENTS_PER_MEASURE/8) == 0)
|
||||
return NOTE_8TH;
|
||||
else if( iNoteIndex % (ELEMENTS_PER_MEASURE/12) == 0)
|
||||
return NOTE_12TH;
|
||||
else if( iNoteIndex % (ELEMENTS_PER_MEASURE/16) == 0)
|
||||
return NOTE_16TH;
|
||||
// ASSERT(0);
|
||||
return NOTE_INVALID;
|
||||
};
|
||||
|
||||
inline bool IsNoteOfType( int iNoteIndex, NoteType t )
|
||||
{
|
||||
return GetNoteType(iNoteIndex) == t;
|
||||
};
|
||||
|
||||
inline D3DXCOLOR GetNoteColorFromIndex( int iStepIndex )
|
||||
{
|
||||
for( int t=0; t<NUM_NOTE_TYPES; t++ )
|
||||
{
|
||||
if( IsNoteOfType( iStepIndex, (NoteType)t ) )
|
||||
return NoteTypeToColor( (NoteType)t );
|
||||
}
|
||||
return D3DXCOLOR(0.5f,0.5f,0.5f,1);
|
||||
};
|
||||
|
||||
enum RadarCategory // starting from 12-o'clock rotating clockwise
|
||||
{
|
||||
@@ -140,38 +102,11 @@ enum DifficultyClass
|
||||
CLASS_INVALID
|
||||
};
|
||||
|
||||
inline D3DXCOLOR DifficultyClassToColor( DifficultyClass dc )
|
||||
{
|
||||
switch( dc )
|
||||
{
|
||||
case CLASS_EASY: return D3DXCOLOR(1,1,0,1); // yellow
|
||||
case CLASS_MEDIUM: return D3DXCOLOR(1,0,0,1); // red
|
||||
case CLASS_HARD: return D3DXCOLOR(0,1,0,1); // green
|
||||
default: ASSERT(0); return D3DXCOLOR(); // invalid DifficultyClass
|
||||
}
|
||||
}
|
||||
D3DXCOLOR DifficultyClassToColor( DifficultyClass dc );
|
||||
|
||||
inline CString DifficultyClassToString( DifficultyClass dc )
|
||||
{
|
||||
switch( dc )
|
||||
{
|
||||
case CLASS_EASY: return "easy";
|
||||
case CLASS_MEDIUM: return "medium";
|
||||
case CLASS_HARD: return "hard";
|
||||
default: ASSERT(0); return ""; // invalid DifficultyClass
|
||||
}
|
||||
}
|
||||
CString DifficultyClassToString( DifficultyClass dc );
|
||||
|
||||
inline DifficultyClass StringToDifficultyClass( CString sDC )
|
||||
{
|
||||
for( int i=0; i<NUM_DIFFICULTY_CLASSES; i++ )
|
||||
{
|
||||
DifficultyClass dc = (DifficultyClass)i;
|
||||
if( sDC == DifficultyClassToString(dc) )
|
||||
return dc;
|
||||
}
|
||||
return CLASS_INVALID;
|
||||
}
|
||||
DifficultyClass StringToDifficultyClass( CString sDC );
|
||||
|
||||
|
||||
enum NotesType
|
||||
@@ -193,64 +128,11 @@ enum NotesType
|
||||
NOTES_TYPE_INVALID,
|
||||
};
|
||||
|
||||
inline int NotesTypeToNumTracks( NotesType nt )
|
||||
{
|
||||
switch( nt )
|
||||
{
|
||||
case NOTES_TYPE_DANCE_SINGLE: return 4;
|
||||
case NOTES_TYPE_DANCE_DOUBLE: return 8;
|
||||
case NOTES_TYPE_DANCE_COUPLE: return 8;
|
||||
case NOTES_TYPE_DANCE_SOLO: return 6;
|
||||
case NOTES_TYPE_PUMP_SINGLE: return 5;
|
||||
case NOTES_TYPE_PUMP_DOUBLE: return 10;
|
||||
case NOTES_TYPE_EZ2_SINGLE: return 5; // Single: TL,LHH,D,RHH,TR
|
||||
case NOTES_TYPE_EZ2_SINGLE_HARD: return 5; // Single: TL,LHH,D,RHH,TR
|
||||
case NOTES_TYPE_EZ2_DOUBLE: return 10; // Double: Single x2
|
||||
case NOTES_TYPE_EZ2_REAL: return 7; // Real: TL,LHH,LHL,D,RHL,RHH,TR
|
||||
case NOTES_TYPE_EZ2_SINGLE_VERSUS: return 10;
|
||||
case NOTES_TYPE_EZ2_SINGLE_HARD_VERSUS: return 10;
|
||||
case NOTES_TYPE_EZ2_REAL_VERSUS: return 10;
|
||||
default: ASSERT(0); return -1; // invalid NotesType
|
||||
}
|
||||
}
|
||||
int NotesTypeToNumTracks( NotesType nt );
|
||||
|
||||
inline NotesType StringToNotesType( CString sNotesType )
|
||||
{
|
||||
sNotesType.MakeLower();
|
||||
if ( sNotesType == "dance-single" ) return NOTES_TYPE_DANCE_SINGLE;
|
||||
else if( sNotesType == "dance-double" ) return NOTES_TYPE_DANCE_DOUBLE;
|
||||
else if( sNotesType == "dance-couple" ) return NOTES_TYPE_DANCE_COUPLE;
|
||||
else if( sNotesType == "dance-solo" ) return NOTES_TYPE_DANCE_SOLO;
|
||||
else if( sNotesType == "pump-single" ) return NOTES_TYPE_PUMP_SINGLE;
|
||||
else if( sNotesType == "pump-double" ) return NOTES_TYPE_PUMP_DOUBLE;
|
||||
else if( sNotesType == "ez2-single" ) return NOTES_TYPE_EZ2_SINGLE;
|
||||
else if( sNotesType == "ez2-single-hard" ) return NOTES_TYPE_EZ2_SINGLE_HARD;
|
||||
else if( sNotesType == "ez2-double" ) return NOTES_TYPE_EZ2_DOUBLE;
|
||||
else if( sNotesType == "ez2-real" ) return NOTES_TYPE_EZ2_REAL;
|
||||
// else if( sNotesType == "ez2-real-versus" ) return NOTES_TYPE_EZ2_REAL_VERSUS;
|
||||
// else if( sNotesType == "ez2-single-versus" ) return NOTES_TYPE_EZ2_SINGLE_VERSUS;
|
||||
else ASSERT(0); return NOTES_TYPE_DANCE_SINGLE; // invalid NotesType
|
||||
}
|
||||
NotesType StringToNotesType( CString sNotesType );
|
||||
|
||||
inline CString NotesTypeToString( NotesType nt )
|
||||
{
|
||||
switch( nt )
|
||||
{
|
||||
case NOTES_TYPE_DANCE_SINGLE: return "dance-single";
|
||||
case NOTES_TYPE_DANCE_DOUBLE: return "dance-double";
|
||||
case NOTES_TYPE_DANCE_COUPLE: return "dance-couple";
|
||||
case NOTES_TYPE_DANCE_SOLO: return "dance-solo";
|
||||
case NOTES_TYPE_PUMP_SINGLE: return "pump-single";
|
||||
case NOTES_TYPE_PUMP_DOUBLE: return "pump-double";
|
||||
case NOTES_TYPE_EZ2_SINGLE: return "ez2-single";
|
||||
case NOTES_TYPE_EZ2_SINGLE_HARD: return "ez2-single-hard";
|
||||
case NOTES_TYPE_EZ2_DOUBLE: return "ez2-double";
|
||||
case NOTES_TYPE_EZ2_REAL: return "ez2-real";
|
||||
// case NOTES_TYPE_EZ2_REAL_VERSUS: return "ez2-real-versus";
|
||||
// case NOTES_TYPE_EZ2_SINGLE_VERSUS: return "ez2-single-versus";
|
||||
default: ASSERT(0); return ""; // invalid NotesType
|
||||
}
|
||||
}
|
||||
CString NotesTypeToString( NotesType nt );
|
||||
|
||||
|
||||
//////////////////////////
|
||||
@@ -260,6 +142,7 @@ enum PlayMode
|
||||
{
|
||||
PLAY_MODE_ARCADE,
|
||||
PLAY_MODE_ONI,
|
||||
PLAY_MODE_ENDLESS,
|
||||
NUM_PLAY_MODES,
|
||||
PLAY_MODE_INVALID
|
||||
};
|
||||
@@ -271,16 +154,8 @@ enum PlayerNumber {
|
||||
PLAYER_INVALID
|
||||
};
|
||||
|
||||
inline D3DXCOLOR PlayerToColor( const PlayerNumber p )
|
||||
{
|
||||
switch( p )
|
||||
{
|
||||
case PLAYER_1: return D3DXCOLOR(0.4f,1.0f,0.8f,1); // sea green
|
||||
case PLAYER_2: return D3DXCOLOR(1.0f,0.5f,0.2f,1); // orange
|
||||
default: ASSERT( false ); return D3DXCOLOR(1,1,1,1);
|
||||
}
|
||||
};
|
||||
inline D3DXCOLOR PlayerToColor( int p ) { return PlayerToColor( (PlayerNumber)p ); }
|
||||
D3DXCOLOR PlayerToColor( const PlayerNumber p );
|
||||
D3DXCOLOR PlayerToColor( int p );
|
||||
|
||||
|
||||
enum SongSortOrder {
|
||||
@@ -325,33 +200,7 @@ enum Style
|
||||
STYLE_NONE,
|
||||
};
|
||||
|
||||
inline Game StyleToGame( Style s )
|
||||
{
|
||||
switch( s )
|
||||
{
|
||||
case STYLE_DANCE_SINGLE:
|
||||
case STYLE_DANCE_VERSUS:
|
||||
case STYLE_DANCE_DOUBLE:
|
||||
case STYLE_DANCE_COUPLE:
|
||||
case STYLE_DANCE_SOLO:
|
||||
return GAME_DANCE;
|
||||
case STYLE_PUMP_SINGLE:
|
||||
case STYLE_PUMP_VERSUS:
|
||||
case STYLE_PUMP_DOUBLE:
|
||||
return GAME_PUMP;
|
||||
case STYLE_EZ2_SINGLE:
|
||||
case STYLE_EZ2_SINGLE_HARD:
|
||||
case STYLE_EZ2_DOUBLE:
|
||||
case STYLE_EZ2_REAL:
|
||||
case STYLE_EZ2_SINGLE_VERSUS:
|
||||
case STYLE_EZ2_SINGLE_HARD_VERSUS:
|
||||
case STYLE_EZ2_REAL_VERSUS:
|
||||
return GAME_EZ2;
|
||||
default:
|
||||
ASSERT(0); // invalid Style
|
||||
return GAME_DANCE;
|
||||
}
|
||||
}
|
||||
Game StyleToGame( Style s );
|
||||
|
||||
/*
|
||||
|
||||
@@ -568,94 +417,6 @@ inline NotesType StyleToNotesType ( Style s )
|
||||
// Options stuff
|
||||
///////////////////////////
|
||||
|
||||
struct PlayerOptions
|
||||
{
|
||||
float m_fArrowScrollSpeed;
|
||||
enum EffectType { EFFECT_NONE=0, EFFECT_BOOST, EFFECT_WAVE, EFFECT_DRUNK, EFFECT_DIZZY, EFFECT_SPACE };
|
||||
EffectType m_EffectType;
|
||||
enum AppearanceType { APPEARANCE_VISIBLE=0, APPEARANCE_HIDDEN, APPEARANCE_SUDDEN, APPEARANCE_STEALTH };
|
||||
AppearanceType m_AppearanceType;
|
||||
enum TurnType { TURN_NONE=0, TURN_MIRROR, TURN_LEFT, TURN_RIGHT, TURN_SHUFFLE };
|
||||
TurnType m_TurnType;
|
||||
bool m_bLittle;
|
||||
bool m_bReverseScroll;
|
||||
enum ColorType { COLOR_ARCADE=0, COLOR_NOTE, COLOR_FLAT, COLOR_PLAIN };
|
||||
ColorType m_ColorType;
|
||||
bool m_bHoldNotes;
|
||||
bool m_bDark;
|
||||
enum DrainType { DRAIN_NORMAL=0, DRAIN_NO_RECOVER, DRAIN_SUDDEN_DEATH };
|
||||
DrainType m_DrainType;
|
||||
|
||||
PlayerOptions() {
|
||||
m_fArrowScrollSpeed = 1.0f;
|
||||
m_EffectType = EFFECT_NONE;
|
||||
m_AppearanceType = APPEARANCE_VISIBLE;
|
||||
m_TurnType = TURN_NONE;
|
||||
m_bLittle = false;
|
||||
m_bReverseScroll = false;
|
||||
m_ColorType = COLOR_ARCADE;
|
||||
m_bHoldNotes = true;
|
||||
m_bDark = false;
|
||||
m_DrainType = DRAIN_NORMAL;
|
||||
};
|
||||
|
||||
CString GetString()
|
||||
{
|
||||
CString sReturn;
|
||||
if( m_fArrowScrollSpeed != 1 )
|
||||
sReturn += ssprintf( "%2.1fX, ", m_fArrowScrollSpeed );
|
||||
switch( m_EffectType )
|
||||
{
|
||||
case EFFECT_NONE: break;
|
||||
case EFFECT_BOOST: sReturn += "Boost, "; break;
|
||||
case EFFECT_WAVE: sReturn += "Wave, "; break;
|
||||
case EFFECT_DRUNK: sReturn += "Drunk, "; break;
|
||||
case EFFECT_DIZZY: sReturn += "Dizzy, "; break;
|
||||
case EFFECT_SPACE: sReturn += "Space, "; break;
|
||||
default: ASSERT(0); // invalid EFFECT
|
||||
}
|
||||
switch( m_AppearanceType )
|
||||
{
|
||||
case APPEARANCE_VISIBLE: break;
|
||||
case APPEARANCE_HIDDEN: sReturn += "Hidden, "; break;
|
||||
case APPEARANCE_SUDDEN: sReturn += "Sudden, "; break;
|
||||
case APPEARANCE_STEALTH: sReturn += "Stealth, "; break;
|
||||
default: ASSERT(0); // invalid EFFECT
|
||||
}
|
||||
switch( m_TurnType )
|
||||
{
|
||||
case TURN_NONE: break;
|
||||
case TURN_MIRROR: sReturn += "Mirror, "; break;
|
||||
case TURN_LEFT: sReturn += "Left, "; break;
|
||||
case TURN_RIGHT: sReturn += "Right, "; break;
|
||||
case TURN_SHUFFLE: sReturn += "Shuffle, "; break;
|
||||
default: ASSERT(0); // invalid EFFECT
|
||||
}
|
||||
if( m_bLittle )
|
||||
sReturn += "Little, ";
|
||||
if( m_bReverseScroll )
|
||||
sReturn += "Reverse, ";
|
||||
|
||||
if( sReturn.GetLength() > 2 )
|
||||
sReturn.Delete( sReturn.GetLength()-2, 2 ); // delete the trailing ", "
|
||||
return sReturn;
|
||||
}
|
||||
};
|
||||
|
||||
struct SongOptions
|
||||
{
|
||||
SongOptions() {
|
||||
m_FailType = FAIL_ARCADE;
|
||||
m_AssistType = ASSIST_NONE;
|
||||
m_fMusicRate = 1.0f;
|
||||
};
|
||||
|
||||
enum FailType { FAIL_ARCADE=0, FAIL_END_OF_SONG, FAIL_OFF };
|
||||
FailType m_FailType;
|
||||
enum AssistType { ASSIST_NONE=0, ASSIST_TICK };
|
||||
AssistType m_AssistType;
|
||||
float m_fMusicRate;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
#include "IniFile.h"
|
||||
#include "StyleDef.h"
|
||||
#include "RageException.h"
|
||||
|
||||
|
||||
CString GameDef::ElementToGraphicSuffix( const SkinElement gbg )
|
||||
|
||||
@@ -40,7 +40,7 @@ public:
|
||||
char m_szDescription[60];
|
||||
int m_iNumInstruments;
|
||||
int m_iButtonsPerInstrument;
|
||||
char m_szButtonNames[60][MAX_INSTRUMENT_BUTTONS]; // e.g. "left", "right", "middle C", "snare"
|
||||
char m_szButtonNames[60][MAX_GAME_BUTTONS]; // e.g. "left", "right", "middle C", "snare"
|
||||
|
||||
// int ButtonNameToIndex( const CString &sButtonName )
|
||||
// {
|
||||
@@ -66,7 +66,7 @@ public:
|
||||
|
||||
inline MenuInput GameInputToMenuInput( const GameInput GameI )
|
||||
{
|
||||
PlayerNumber p = (PlayerNumber)GameI.number;
|
||||
PlayerNumber p = (PlayerNumber)GameI.controller;
|
||||
for( int b=0; b<NUM_MENU_BUTTONS; b++ )
|
||||
{
|
||||
if( m_iMenuButtons[b] == GameI.button )
|
||||
@@ -76,7 +76,7 @@ public:
|
||||
};
|
||||
inline GameInput MenuInputToGameInput( const MenuInput MenuI )
|
||||
{
|
||||
return GameInput( (InstrumentNumber)MenuI.player, (InstrumentButton)m_iMenuButtons[MenuI.button] );
|
||||
return GameInput( (GameController)MenuI.player, (GameButton)m_iMenuButtons[MenuI.button] );
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
#include "stdafx.h"
|
||||
/*
|
||||
-----------------------------------------------------------------------------
|
||||
Class: GameInput
|
||||
|
||||
Desc: See header.
|
||||
|
||||
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||
Chris Danford
|
||||
-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#include "GameInput.h"
|
||||
#include "RageLog.h"
|
||||
#include "RageUtil.h"
|
||||
|
||||
|
||||
CString GameInput::toString()
|
||||
{
|
||||
return ssprintf("%d-%d", controller, button );
|
||||
}
|
||||
|
||||
bool GameInput::fromString( CString s )
|
||||
{
|
||||
CStringArray a;
|
||||
split( s, "-", a);
|
||||
|
||||
if( a.GetSize() != 2 ) {
|
||||
MakeBlank();
|
||||
return false;
|
||||
}
|
||||
|
||||
controller = (GameController)atoi( a[0] );
|
||||
button = (GameButton)atoi( a[1] );
|
||||
return true;
|
||||
};
|
||||
|
||||
|
||||
+32
-50
@@ -9,72 +9,54 @@
|
||||
Chris Danford
|
||||
-----------------------------------------------------------------------------
|
||||
*/
|
||||
enum InstrumentNumber
|
||||
enum GameController
|
||||
{
|
||||
INSTRUMENT_1 = 0,
|
||||
INSTRUMENT_2,
|
||||
MAX_INSTRUMENTS, // leave this at the end
|
||||
INSTRUMENT_NONE,
|
||||
GAME_CONTROLLER_1 = 0,
|
||||
GAME_CONTROLLER_2,
|
||||
MAX_GAME_CONTROLLERS, // leave this at the end
|
||||
GAME_CONTROLLER_NONE,
|
||||
};
|
||||
|
||||
enum InstrumentButton
|
||||
enum GameButton
|
||||
{
|
||||
INSTRUMENT_BUTTON_1 = 0,
|
||||
INSTRUMENT_BUTTON_2,
|
||||
INSTRUMENT_BUTTON_3,
|
||||
INSTRUMENT_BUTTON_4,
|
||||
INSTRUMENT_BUTTON_5,
|
||||
INSTRUMENT_BUTTON_6,
|
||||
INSTRUMENT_BUTTON_7,
|
||||
INSTRUMENT_BUTTON_8,
|
||||
INSTRUMENT_BUTTON_9,
|
||||
INSTRUMENT_BUTTON_10,
|
||||
INSTRUMENT_BUTTON_11,
|
||||
INSTRUMENT_BUTTON_12,
|
||||
INSTRUMENT_BUTTON_13,
|
||||
INSTRUMENT_BUTTON_14,
|
||||
INSTRUMENT_BUTTON_15,
|
||||
INSTRUMENT_BUTTON_16,
|
||||
MAX_INSTRUMENT_BUTTONS, // leave this at the end
|
||||
INSTRUMENT_BUTTON_NONE
|
||||
GAME_BUTTON_1 = 0,
|
||||
GAME_BUTTON_2,
|
||||
GAME_BUTTON_3,
|
||||
GAME_BUTTON_4,
|
||||
GAME_BUTTON_5,
|
||||
GAME_BUTTON_6,
|
||||
GAME_BUTTON_7,
|
||||
GAME_BUTTON_8,
|
||||
GAME_BUTTON_9,
|
||||
GAME_BUTTON_10,
|
||||
GAME_BUTTON_11,
|
||||
GAME_BUTTON_12,
|
||||
GAME_BUTTON_13,
|
||||
GAME_BUTTON_14,
|
||||
GAME_BUTTON_15,
|
||||
GAME_BUTTON_16,
|
||||
MAX_GAME_BUTTONS, // leave this at the end
|
||||
GAME_BUTTON_NONE
|
||||
};
|
||||
|
||||
|
||||
struct GameInput
|
||||
{
|
||||
GameInput() { MakeBlank(); };
|
||||
GameInput( InstrumentNumber n, InstrumentButton b ) { number = n; button = b; };
|
||||
GameInput( GameController c, GameButton b ) { controller = c; button = b; };
|
||||
|
||||
|
||||
InstrumentNumber number; // instrument number
|
||||
InstrumentButton button; // instrument button
|
||||
GameController controller; //
|
||||
GameButton button; // instrument button
|
||||
|
||||
bool operator==( const GameInput &other ) { return number == other.number && button == other.button; };
|
||||
bool operator==( const GameInput &other ) { return controller == other.controller && button == other.button; };
|
||||
|
||||
inline bool IsBlank() const { return number == INSTRUMENT_NONE; };
|
||||
inline bool IsBlank() const { return controller == GAME_CONTROLLER_NONE; };
|
||||
inline bool IsValid() const { return !IsBlank(); };
|
||||
inline void MakeBlank() { number = INSTRUMENT_NONE; button = INSTRUMENT_BUTTON_NONE; };
|
||||
inline void MakeBlank() { controller = GAME_CONTROLLER_NONE; button = GAME_BUTTON_NONE; };
|
||||
|
||||
|
||||
CString toString()
|
||||
{
|
||||
return ssprintf("%d-%d", number, button );
|
||||
}
|
||||
|
||||
bool fromString( CString s )
|
||||
{
|
||||
CStringArray a;
|
||||
split( s, "-", a);
|
||||
|
||||
if( a.GetSize() != 2 ) {
|
||||
MakeBlank();
|
||||
return false;
|
||||
}
|
||||
|
||||
number = (InstrumentNumber)atoi( a[0] );
|
||||
button = (InstrumentButton)atoi( a[1] );
|
||||
return true;
|
||||
};
|
||||
CString toString();
|
||||
bool fromString( CString s );
|
||||
};
|
||||
|
||||
|
||||
|
||||
+214
-214
@@ -19,32 +19,32 @@
|
||||
GameManager* GAMEMAN = NULL; // global and accessable from anywhere in our program
|
||||
|
||||
|
||||
InstrumentButton DANCE_BUTTON_LEFT = (InstrumentButton)0;
|
||||
InstrumentButton DANCE_BUTTON_RIGHT = (InstrumentButton)1;
|
||||
InstrumentButton DANCE_BUTTON_UP = (InstrumentButton)2;
|
||||
InstrumentButton DANCE_BUTTON_DOWN = (InstrumentButton)3;
|
||||
InstrumentButton DANCE_BUTTON_UPLEFT = (InstrumentButton)4;
|
||||
InstrumentButton DANCE_BUTTON_UPRIGHT = (InstrumentButton)5;
|
||||
InstrumentButton DANCE_BUTTON_SELECT = (InstrumentButton)6;
|
||||
InstrumentButton DANCE_BUTTON_START = (InstrumentButton)7;
|
||||
GameButton DANCE_BUTTON_LEFT = (GameButton)0;
|
||||
GameButton DANCE_BUTTON_RIGHT = (GameButton)1;
|
||||
GameButton DANCE_BUTTON_UP = (GameButton)2;
|
||||
GameButton DANCE_BUTTON_DOWN = (GameButton)3;
|
||||
GameButton DANCE_BUTTON_UPLEFT = (GameButton)4;
|
||||
GameButton DANCE_BUTTON_UPRIGHT = (GameButton)5;
|
||||
GameButton DANCE_BUTTON_SELECT = (GameButton)6;
|
||||
GameButton DANCE_BUTTON_START = (GameButton)7;
|
||||
int NUM_DANCE_BUTTONS = 8;
|
||||
|
||||
InstrumentButton PUMP_BUTTON_UPLEFT = (InstrumentButton)0;
|
||||
InstrumentButton PUMP_BUTTON_UPRIGHT = (InstrumentButton)1;
|
||||
InstrumentButton PUMP_BUTTON_CENTER = (InstrumentButton)2;
|
||||
InstrumentButton PUMP_BUTTON_DOWNLEFT = (InstrumentButton)3;
|
||||
InstrumentButton PUMP_BUTTON_DOWNRIGHT = (InstrumentButton)4;
|
||||
InstrumentButton PUMP_BUTTON_SELECT = (InstrumentButton)5;
|
||||
GameButton PUMP_BUTTON_UPLEFT = (GameButton)0;
|
||||
GameButton PUMP_BUTTON_UPRIGHT = (GameButton)1;
|
||||
GameButton PUMP_BUTTON_CENTER = (GameButton)2;
|
||||
GameButton PUMP_BUTTON_DOWNLEFT = (GameButton)3;
|
||||
GameButton PUMP_BUTTON_DOWNRIGHT = (GameButton)4;
|
||||
GameButton PUMP_BUTTON_SELECT = (GameButton)5;
|
||||
int NUM_PUMP_BUTTONS = 6;
|
||||
|
||||
InstrumentButton EZ2_BUTTON_UPLEFT = (InstrumentButton)0;
|
||||
InstrumentButton EZ2_BUTTON_UPLEFTHAND = (InstrumentButton)1;
|
||||
InstrumentButton EZ2_BUTTON_LRLEFTHAND = (InstrumentButton)2;
|
||||
InstrumentButton EZ2_BUTTON_DOWN = (InstrumentButton)3;
|
||||
InstrumentButton EZ2_BUTTON_LRRIGHTHAND = (InstrumentButton)4;
|
||||
InstrumentButton EZ2_BUTTON_UPRIGHTHAND = (InstrumentButton)5;
|
||||
InstrumentButton EZ2_BUTTON_UPRIGHT = (InstrumentButton)6;
|
||||
InstrumentButton EZ2_BUTTON_SELECT = (InstrumentButton)7;
|
||||
GameButton EZ2_BUTTON_UPLEFT = (GameButton)0;
|
||||
GameButton EZ2_BUTTON_UPLEFTHAND = (GameButton)1;
|
||||
GameButton EZ2_BUTTON_LRLEFTHAND = (GameButton)2;
|
||||
GameButton EZ2_BUTTON_DOWN = (GameButton)3;
|
||||
GameButton EZ2_BUTTON_LRRIGHTHAND = (GameButton)4;
|
||||
GameButton EZ2_BUTTON_UPRIGHTHAND = (GameButton)5;
|
||||
GameButton EZ2_BUTTON_UPRIGHT = (GameButton)6;
|
||||
GameButton EZ2_BUTTON_SELECT = (GameButton)7;
|
||||
int NUM_EZ2_BUTTONS = 8;
|
||||
|
||||
const int DANCE_COL_SPACING = 64;
|
||||
@@ -137,16 +137,16 @@ StyleDef g_StyleDefs[NUM_STYLES] =
|
||||
4, // m_iColsPerPlayer
|
||||
{ // m_ColumnInfo[NUM_PLAYERS][MAX_COLS_PER_PLAYER];
|
||||
{ // PLAYER_1
|
||||
{ TRACK_1, INSTRUMENT_1, DANCE_BUTTON_LEFT, -DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_2, INSTRUMENT_1, DANCE_BUTTON_DOWN, -DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_3, INSTRUMENT_1, DANCE_BUTTON_UP, +DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_4, INSTRUMENT_1, DANCE_BUTTON_RIGHT, +DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_1, GAME_CONTROLLER_1, DANCE_BUTTON_LEFT, -DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_2, GAME_CONTROLLER_1, DANCE_BUTTON_DOWN, -DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_3, GAME_CONTROLLER_1, DANCE_BUTTON_UP, +DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_4, GAME_CONTROLLER_1, DANCE_BUTTON_RIGHT, +DANCE_COL_SPACING*1.5f },
|
||||
},
|
||||
{ // PLAYER_2
|
||||
{ TRACK_1, INSTRUMENT_2, DANCE_BUTTON_LEFT, -DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_2, INSTRUMENT_2, DANCE_BUTTON_DOWN, -DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_3, INSTRUMENT_2, DANCE_BUTTON_UP, +DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_4, INSTRUMENT_2, DANCE_BUTTON_RIGHT, +DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_1, GAME_CONTROLLER_2, DANCE_BUTTON_LEFT, -DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_2, GAME_CONTROLLER_2, DANCE_BUTTON_DOWN, -DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_3, GAME_CONTROLLER_2, DANCE_BUTTON_UP, +DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_4, GAME_CONTROLLER_2, DANCE_BUTTON_RIGHT, +DANCE_COL_SPACING*1.5f },
|
||||
},
|
||||
},
|
||||
{ // m_iColumnDrawOrder[MAX_COLS_PER_PLAYER];
|
||||
@@ -161,16 +161,16 @@ StyleDef g_StyleDefs[NUM_STYLES] =
|
||||
4, // m_iColsPerPlayer
|
||||
{ // m_ColumnInfo[NUM_PLAYERS][MAX_COLS_PER_PLAYER];
|
||||
{ // PLAYER_1
|
||||
{ TRACK_1, INSTRUMENT_1, DANCE_BUTTON_LEFT, -DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_2, INSTRUMENT_1, DANCE_BUTTON_DOWN, -DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_3, INSTRUMENT_1, DANCE_BUTTON_UP, +DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_4, INSTRUMENT_1, DANCE_BUTTON_RIGHT, +DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_1, GAME_CONTROLLER_1, DANCE_BUTTON_LEFT, -DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_2, GAME_CONTROLLER_1, DANCE_BUTTON_DOWN, -DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_3, GAME_CONTROLLER_1, DANCE_BUTTON_UP, +DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_4, GAME_CONTROLLER_1, DANCE_BUTTON_RIGHT, +DANCE_COL_SPACING*1.5f },
|
||||
},
|
||||
{ // PLAYER_2
|
||||
{ TRACK_1, INSTRUMENT_2, DANCE_BUTTON_LEFT, -DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_2, INSTRUMENT_2, DANCE_BUTTON_DOWN, -DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_3, INSTRUMENT_2, DANCE_BUTTON_UP, +DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_4, INSTRUMENT_2, DANCE_BUTTON_RIGHT, +DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_1, GAME_CONTROLLER_2, DANCE_BUTTON_LEFT, -DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_2, GAME_CONTROLLER_2, DANCE_BUTTON_DOWN, -DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_3, GAME_CONTROLLER_2, DANCE_BUTTON_UP, +DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_4, GAME_CONTROLLER_2, DANCE_BUTTON_RIGHT, +DANCE_COL_SPACING*1.5f },
|
||||
},
|
||||
},
|
||||
{ // m_iColumnDrawOrder[MAX_COLS_PER_PLAYER];
|
||||
@@ -185,24 +185,24 @@ StyleDef g_StyleDefs[NUM_STYLES] =
|
||||
8, // m_iColsPerPlayer
|
||||
{ // m_ColumnInfo[NUM_PLAYERS][MAX_COLS_PER_PLAYER];
|
||||
{ // PLAYER_1
|
||||
{ TRACK_1, INSTRUMENT_1, DANCE_BUTTON_LEFT, -DANCE_COL_SPACING*3.5f },
|
||||
{ TRACK_2, INSTRUMENT_1, DANCE_BUTTON_DOWN, -DANCE_COL_SPACING*2.5f },
|
||||
{ TRACK_3, INSTRUMENT_1, DANCE_BUTTON_UP, -DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_4, INSTRUMENT_1, DANCE_BUTTON_RIGHT, -DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_5, INSTRUMENT_2, DANCE_BUTTON_LEFT, +DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_6, INSTRUMENT_2, DANCE_BUTTON_DOWN, +DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_7, INSTRUMENT_2, DANCE_BUTTON_UP, +DANCE_COL_SPACING*2.5f },
|
||||
{ TRACK_8, INSTRUMENT_2, DANCE_BUTTON_RIGHT, +DANCE_COL_SPACING*3.5f },
|
||||
{ TRACK_1, GAME_CONTROLLER_1, DANCE_BUTTON_LEFT, -DANCE_COL_SPACING*3.5f },
|
||||
{ TRACK_2, GAME_CONTROLLER_1, DANCE_BUTTON_DOWN, -DANCE_COL_SPACING*2.5f },
|
||||
{ TRACK_3, GAME_CONTROLLER_1, DANCE_BUTTON_UP, -DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_4, GAME_CONTROLLER_1, DANCE_BUTTON_RIGHT, -DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_5, GAME_CONTROLLER_2, DANCE_BUTTON_LEFT, +DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_6, GAME_CONTROLLER_2, DANCE_BUTTON_DOWN, +DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_7, GAME_CONTROLLER_2, DANCE_BUTTON_UP, +DANCE_COL_SPACING*2.5f },
|
||||
{ TRACK_8, GAME_CONTROLLER_2, DANCE_BUTTON_RIGHT, +DANCE_COL_SPACING*3.5f },
|
||||
},
|
||||
{ // PLAYER_2
|
||||
{ TRACK_1, INSTRUMENT_1, DANCE_BUTTON_LEFT, -DANCE_COL_SPACING*3.5f },
|
||||
{ TRACK_2, INSTRUMENT_1, DANCE_BUTTON_DOWN, -DANCE_COL_SPACING*2.5f },
|
||||
{ TRACK_3, INSTRUMENT_1, DANCE_BUTTON_UP, -DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_4, INSTRUMENT_1, DANCE_BUTTON_RIGHT, -DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_5, INSTRUMENT_2, DANCE_BUTTON_LEFT, +DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_6, INSTRUMENT_2, DANCE_BUTTON_DOWN, +DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_7, INSTRUMENT_2, DANCE_BUTTON_UP, +DANCE_COL_SPACING*2.5f },
|
||||
{ TRACK_8, INSTRUMENT_2, DANCE_BUTTON_RIGHT, +DANCE_COL_SPACING*3.5f },
|
||||
{ TRACK_1, GAME_CONTROLLER_1, DANCE_BUTTON_LEFT, -DANCE_COL_SPACING*3.5f },
|
||||
{ TRACK_2, GAME_CONTROLLER_1, DANCE_BUTTON_DOWN, -DANCE_COL_SPACING*2.5f },
|
||||
{ TRACK_3, GAME_CONTROLLER_1, DANCE_BUTTON_UP, -DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_4, GAME_CONTROLLER_1, DANCE_BUTTON_RIGHT, -DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_5, GAME_CONTROLLER_2, DANCE_BUTTON_LEFT, +DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_6, GAME_CONTROLLER_2, DANCE_BUTTON_DOWN, +DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_7, GAME_CONTROLLER_2, DANCE_BUTTON_UP, +DANCE_COL_SPACING*2.5f },
|
||||
{ TRACK_8, GAME_CONTROLLER_2, DANCE_BUTTON_RIGHT, +DANCE_COL_SPACING*3.5f },
|
||||
},
|
||||
},
|
||||
{ // m_iColumnDrawOrder[MAX_COLS_PER_PLAYER];
|
||||
@@ -217,16 +217,16 @@ StyleDef g_StyleDefs[NUM_STYLES] =
|
||||
4, // m_iColsPerPlayer
|
||||
{ // m_ColumnInfo[NUM_PLAYERS][MAX_COLS_PER_PLAYER];
|
||||
{ // PLAYER_1
|
||||
{ TRACK_1, INSTRUMENT_1, DANCE_BUTTON_LEFT, -DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_2, INSTRUMENT_1, DANCE_BUTTON_DOWN, -DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_3, INSTRUMENT_1, DANCE_BUTTON_UP, +DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_4, INSTRUMENT_1, DANCE_BUTTON_RIGHT, +DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_1, GAME_CONTROLLER_1, DANCE_BUTTON_LEFT, -DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_2, GAME_CONTROLLER_1, DANCE_BUTTON_DOWN, -DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_3, GAME_CONTROLLER_1, DANCE_BUTTON_UP, +DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_4, GAME_CONTROLLER_1, DANCE_BUTTON_RIGHT, +DANCE_COL_SPACING*1.5f },
|
||||
},
|
||||
{ // PLAYER_2
|
||||
{ TRACK_1, INSTRUMENT_2, DANCE_BUTTON_LEFT, -DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_2, INSTRUMENT_2, DANCE_BUTTON_DOWN, -DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_3, INSTRUMENT_2, DANCE_BUTTON_UP, +DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_4, INSTRUMENT_2, DANCE_BUTTON_RIGHT, +DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_1, GAME_CONTROLLER_2, DANCE_BUTTON_LEFT, -DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_2, GAME_CONTROLLER_2, DANCE_BUTTON_DOWN, -DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_3, GAME_CONTROLLER_2, DANCE_BUTTON_UP, +DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_4, GAME_CONTROLLER_2, DANCE_BUTTON_RIGHT, +DANCE_COL_SPACING*1.5f },
|
||||
},
|
||||
},
|
||||
{ // m_iColumnDrawOrder[MAX_COLS_PER_PLAYER];
|
||||
@@ -241,20 +241,20 @@ StyleDef g_StyleDefs[NUM_STYLES] =
|
||||
6, // m_iColsPerPlayer
|
||||
{ // m_ColumnInfo[NUM_PLAYERS][MAX_COLS_PER_PLAYER];
|
||||
{ // PLAYER_1
|
||||
{ TRACK_1, INSTRUMENT_1, DANCE_BUTTON_LEFT, -DANCE_COL_SPACING*2.5f },
|
||||
{ TRACK_2, INSTRUMENT_1, DANCE_BUTTON_UPLEFT, -DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_3, INSTRUMENT_1, DANCE_BUTTON_DOWN, -DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_4, INSTRUMENT_1, DANCE_BUTTON_UP, +DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_5, INSTRUMENT_1, DANCE_BUTTON_UPRIGHT, +DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_6, INSTRUMENT_1, DANCE_BUTTON_RIGHT, +DANCE_COL_SPACING*2.5f },
|
||||
{ TRACK_1, GAME_CONTROLLER_1, DANCE_BUTTON_LEFT, -DANCE_COL_SPACING*2.5f },
|
||||
{ TRACK_2, GAME_CONTROLLER_1, DANCE_BUTTON_UPLEFT, -DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_3, GAME_CONTROLLER_1, DANCE_BUTTON_DOWN, -DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_4, GAME_CONTROLLER_1, DANCE_BUTTON_UP, +DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_5, GAME_CONTROLLER_1, DANCE_BUTTON_UPRIGHT, +DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_6, GAME_CONTROLLER_1, DANCE_BUTTON_RIGHT, +DANCE_COL_SPACING*2.5f },
|
||||
},
|
||||
{ // PLAYER_2
|
||||
{ TRACK_1, INSTRUMENT_2, DANCE_BUTTON_LEFT, -DANCE_COL_SPACING*2.5f },
|
||||
{ TRACK_2, INSTRUMENT_2, DANCE_BUTTON_UPLEFT, -DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_3, INSTRUMENT_2, DANCE_BUTTON_DOWN, -DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_4, INSTRUMENT_2, DANCE_BUTTON_UP, +DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_5, INSTRUMENT_2, DANCE_BUTTON_UPRIGHT, +DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_6, INSTRUMENT_2, DANCE_BUTTON_RIGHT, +DANCE_COL_SPACING*2.5f },
|
||||
{ TRACK_1, GAME_CONTROLLER_2, DANCE_BUTTON_LEFT, -DANCE_COL_SPACING*2.5f },
|
||||
{ TRACK_2, GAME_CONTROLLER_2, DANCE_BUTTON_UPLEFT, -DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_3, GAME_CONTROLLER_2, DANCE_BUTTON_DOWN, -DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_4, GAME_CONTROLLER_2, DANCE_BUTTON_UP, +DANCE_COL_SPACING*0.5f },
|
||||
{ TRACK_5, GAME_CONTROLLER_2, DANCE_BUTTON_UPRIGHT, +DANCE_COL_SPACING*1.5f },
|
||||
{ TRACK_6, GAME_CONTROLLER_2, DANCE_BUTTON_RIGHT, +DANCE_COL_SPACING*2.5f },
|
||||
},
|
||||
},
|
||||
{ // m_iColumnDrawOrder[MAX_COLS_PER_PLAYER];
|
||||
@@ -269,20 +269,20 @@ StyleDef g_StyleDefs[NUM_STYLES] =
|
||||
6, // m_iColsPerPlayer
|
||||
{ // m_ColumnInfo[NUM_PLAYERS][MAX_COLS_PER_PLAYER];
|
||||
{ // PLAYER_1
|
||||
{ TRACK_1, INSTRUMENT_1, DANCE_BUTTON_LEFT, -DANCE_6PANEL_VERSUS_COL_SPACING*2.5f },
|
||||
{ TRACK_2, INSTRUMENT_1, DANCE_BUTTON_UPLEFT, -DANCE_6PANEL_VERSUS_COL_SPACING*1.5f },
|
||||
{ TRACK_3, INSTRUMENT_1, DANCE_BUTTON_DOWN, -DANCE_6PANEL_VERSUS_COL_SPACING*0.5f },
|
||||
{ TRACK_4, INSTRUMENT_1, DANCE_BUTTON_UP, +DANCE_6PANEL_VERSUS_COL_SPACING*0.5f },
|
||||
{ TRACK_5, INSTRUMENT_1, DANCE_BUTTON_UPRIGHT, +DANCE_6PANEL_VERSUS_COL_SPACING*1.5f },
|
||||
{ TRACK_6, INSTRUMENT_1, DANCE_BUTTON_RIGHT, +DANCE_6PANEL_VERSUS_COL_SPACING*2.5f },
|
||||
{ TRACK_1, GAME_CONTROLLER_1, DANCE_BUTTON_LEFT, -DANCE_6PANEL_VERSUS_COL_SPACING*2.5f },
|
||||
{ TRACK_2, GAME_CONTROLLER_1, DANCE_BUTTON_UPLEFT, -DANCE_6PANEL_VERSUS_COL_SPACING*1.5f },
|
||||
{ TRACK_3, GAME_CONTROLLER_1, DANCE_BUTTON_DOWN, -DANCE_6PANEL_VERSUS_COL_SPACING*0.5f },
|
||||
{ TRACK_4, GAME_CONTROLLER_1, DANCE_BUTTON_UP, +DANCE_6PANEL_VERSUS_COL_SPACING*0.5f },
|
||||
{ TRACK_5, GAME_CONTROLLER_1, DANCE_BUTTON_UPRIGHT, +DANCE_6PANEL_VERSUS_COL_SPACING*1.5f },
|
||||
{ TRACK_6, GAME_CONTROLLER_1, DANCE_BUTTON_RIGHT, +DANCE_6PANEL_VERSUS_COL_SPACING*2.5f },
|
||||
},
|
||||
{ // PLAYER_2
|
||||
{ TRACK_1, INSTRUMENT_2, DANCE_BUTTON_LEFT, -DANCE_6PANEL_VERSUS_COL_SPACING*2.5f },
|
||||
{ TRACK_2, INSTRUMENT_2, DANCE_BUTTON_UPLEFT, -DANCE_6PANEL_VERSUS_COL_SPACING*1.5f },
|
||||
{ TRACK_3, INSTRUMENT_2, DANCE_BUTTON_DOWN, -DANCE_6PANEL_VERSUS_COL_SPACING*0.5f },
|
||||
{ TRACK_4, INSTRUMENT_2, DANCE_BUTTON_UP, +DANCE_6PANEL_VERSUS_COL_SPACING*0.5f },
|
||||
{ TRACK_5, INSTRUMENT_2, DANCE_BUTTON_UPRIGHT, +DANCE_6PANEL_VERSUS_COL_SPACING*1.5f },
|
||||
{ TRACK_6, INSTRUMENT_2, DANCE_BUTTON_RIGHT, +DANCE_6PANEL_VERSUS_COL_SPACING*2.5f },
|
||||
{ TRACK_1, GAME_CONTROLLER_2, DANCE_BUTTON_LEFT, -DANCE_6PANEL_VERSUS_COL_SPACING*2.5f },
|
||||
{ TRACK_2, GAME_CONTROLLER_2, DANCE_BUTTON_UPLEFT, -DANCE_6PANEL_VERSUS_COL_SPACING*1.5f },
|
||||
{ TRACK_3, GAME_CONTROLLER_2, DANCE_BUTTON_DOWN, -DANCE_6PANEL_VERSUS_COL_SPACING*0.5f },
|
||||
{ TRACK_4, GAME_CONTROLLER_2, DANCE_BUTTON_UP, +DANCE_6PANEL_VERSUS_COL_SPACING*0.5f },
|
||||
{ TRACK_5, GAME_CONTROLLER_2, DANCE_BUTTON_UPRIGHT, +DANCE_6PANEL_VERSUS_COL_SPACING*1.5f },
|
||||
{ TRACK_6, GAME_CONTROLLER_2, DANCE_BUTTON_RIGHT, +DANCE_6PANEL_VERSUS_COL_SPACING*2.5f },
|
||||
},
|
||||
},
|
||||
{ // m_iColumnDrawOrder[MAX_COLS_PER_PLAYER];
|
||||
@@ -297,18 +297,18 @@ StyleDef g_StyleDefs[NUM_STYLES] =
|
||||
5, // m_iColsPerPlayer
|
||||
{ // m_ColumnInfo[NUM_PLAYERS][MAX_COLS_PER_PLAYER];
|
||||
{ // PLAYER_1
|
||||
{ TRACK_1, INSTRUMENT_1, PUMP_BUTTON_DOWNLEFT, -PUMP_COL_SPACING*2 },
|
||||
{ TRACK_2, INSTRUMENT_1, PUMP_BUTTON_UPLEFT, -PUMP_COL_SPACING*1 },
|
||||
{ TRACK_3, INSTRUMENT_1, PUMP_BUTTON_CENTER, +PUMP_COL_SPACING*0 },
|
||||
{ TRACK_4, INSTRUMENT_1, PUMP_BUTTON_UPRIGHT, +PUMP_COL_SPACING*1 },
|
||||
{ TRACK_5, INSTRUMENT_1, PUMP_BUTTON_DOWNRIGHT, +PUMP_COL_SPACING*2 },
|
||||
{ TRACK_1, GAME_CONTROLLER_1, PUMP_BUTTON_DOWNLEFT, -PUMP_COL_SPACING*2 },
|
||||
{ TRACK_2, GAME_CONTROLLER_1, PUMP_BUTTON_UPLEFT, -PUMP_COL_SPACING*1 },
|
||||
{ TRACK_3, GAME_CONTROLLER_1, PUMP_BUTTON_CENTER, +PUMP_COL_SPACING*0 },
|
||||
{ TRACK_4, GAME_CONTROLLER_1, PUMP_BUTTON_UPRIGHT, +PUMP_COL_SPACING*1 },
|
||||
{ TRACK_5, GAME_CONTROLLER_1, PUMP_BUTTON_DOWNRIGHT, +PUMP_COL_SPACING*2 },
|
||||
},
|
||||
{ // PLAYER_2
|
||||
{ TRACK_1, INSTRUMENT_2, PUMP_BUTTON_DOWNLEFT, -PUMP_COL_SPACING*2 },
|
||||
{ TRACK_2, INSTRUMENT_2, PUMP_BUTTON_UPLEFT, -PUMP_COL_SPACING*1 },
|
||||
{ TRACK_3, INSTRUMENT_2, PUMP_BUTTON_CENTER, +PUMP_COL_SPACING*0 },
|
||||
{ TRACK_4, INSTRUMENT_2, PUMP_BUTTON_UPRIGHT, +PUMP_COL_SPACING*1 },
|
||||
{ TRACK_5, INSTRUMENT_2, PUMP_BUTTON_DOWNRIGHT, +PUMP_COL_SPACING*2 },
|
||||
{ TRACK_1, GAME_CONTROLLER_2, PUMP_BUTTON_DOWNLEFT, -PUMP_COL_SPACING*2 },
|
||||
{ TRACK_2, GAME_CONTROLLER_2, PUMP_BUTTON_UPLEFT, -PUMP_COL_SPACING*1 },
|
||||
{ TRACK_3, GAME_CONTROLLER_2, PUMP_BUTTON_CENTER, +PUMP_COL_SPACING*0 },
|
||||
{ TRACK_4, GAME_CONTROLLER_2, PUMP_BUTTON_UPRIGHT, +PUMP_COL_SPACING*1 },
|
||||
{ TRACK_5, GAME_CONTROLLER_2, PUMP_BUTTON_DOWNRIGHT, +PUMP_COL_SPACING*2 },
|
||||
},
|
||||
},
|
||||
{ // m_iColumnDrawOrder[MAX_COLS_PER_PLAYER];
|
||||
@@ -323,18 +323,18 @@ StyleDef g_StyleDefs[NUM_STYLES] =
|
||||
5, // m_iColsPerPlayer
|
||||
{ // m_ColumnInfo[NUM_PLAYERS][MAX_COLS_PER_PLAYER];
|
||||
{ // PLAYER_1
|
||||
{ TRACK_1, INSTRUMENT_1, PUMP_BUTTON_DOWNLEFT, -PUMP_COL_SPACING*2 },
|
||||
{ TRACK_2, INSTRUMENT_1, PUMP_BUTTON_UPLEFT, -PUMP_COL_SPACING*1 },
|
||||
{ TRACK_3, INSTRUMENT_1, PUMP_BUTTON_CENTER, +PUMP_COL_SPACING*0 },
|
||||
{ TRACK_4, INSTRUMENT_1, PUMP_BUTTON_UPRIGHT, +PUMP_COL_SPACING*1 },
|
||||
{ TRACK_5, INSTRUMENT_1, PUMP_BUTTON_DOWNRIGHT, +PUMP_COL_SPACING*2 },
|
||||
{ TRACK_1, GAME_CONTROLLER_1, PUMP_BUTTON_DOWNLEFT, -PUMP_COL_SPACING*2 },
|
||||
{ TRACK_2, GAME_CONTROLLER_1, PUMP_BUTTON_UPLEFT, -PUMP_COL_SPACING*1 },
|
||||
{ TRACK_3, GAME_CONTROLLER_1, PUMP_BUTTON_CENTER, +PUMP_COL_SPACING*0 },
|
||||
{ TRACK_4, GAME_CONTROLLER_1, PUMP_BUTTON_UPRIGHT, +PUMP_COL_SPACING*1 },
|
||||
{ TRACK_5, GAME_CONTROLLER_1, PUMP_BUTTON_DOWNRIGHT, +PUMP_COL_SPACING*2 },
|
||||
},
|
||||
{ // PLAYER_2
|
||||
{ TRACK_1, INSTRUMENT_2, PUMP_BUTTON_DOWNLEFT, -PUMP_COL_SPACING*2 },
|
||||
{ TRACK_2, INSTRUMENT_2, PUMP_BUTTON_UPLEFT, -PUMP_COL_SPACING*1 },
|
||||
{ TRACK_3, INSTRUMENT_2, PUMP_BUTTON_CENTER, +PUMP_COL_SPACING*0 },
|
||||
{ TRACK_4, INSTRUMENT_2, PUMP_BUTTON_UPRIGHT, +PUMP_COL_SPACING*1 },
|
||||
{ TRACK_5, INSTRUMENT_2, PUMP_BUTTON_DOWNRIGHT, +PUMP_COL_SPACING*2 },
|
||||
{ TRACK_1, GAME_CONTROLLER_2, PUMP_BUTTON_DOWNLEFT, -PUMP_COL_SPACING*2 },
|
||||
{ TRACK_2, GAME_CONTROLLER_2, PUMP_BUTTON_UPLEFT, -PUMP_COL_SPACING*1 },
|
||||
{ TRACK_3, GAME_CONTROLLER_2, PUMP_BUTTON_CENTER, +PUMP_COL_SPACING*0 },
|
||||
{ TRACK_4, GAME_CONTROLLER_2, PUMP_BUTTON_UPRIGHT, +PUMP_COL_SPACING*1 },
|
||||
{ TRACK_5, GAME_CONTROLLER_2, PUMP_BUTTON_DOWNRIGHT, +PUMP_COL_SPACING*2 },
|
||||
},
|
||||
},
|
||||
{ // m_iColumnDrawOrder[MAX_COLS_PER_PLAYER];
|
||||
@@ -349,28 +349,28 @@ StyleDef g_StyleDefs[NUM_STYLES] =
|
||||
10, // m_iColsPerPlayer
|
||||
{ // m_ColumnInfo[NUM_PLAYERS][MAX_COLS_PER_PLAYER];
|
||||
{ // PLAYER_1
|
||||
{ TRACK_1, INSTRUMENT_1, PUMP_BUTTON_DOWNLEFT, -PUMP_COL_SPACING*4.5f },
|
||||
{ TRACK_2, INSTRUMENT_1, PUMP_BUTTON_UPLEFT, -PUMP_COL_SPACING*3.5f },
|
||||
{ TRACK_3, INSTRUMENT_1, PUMP_BUTTON_CENTER, -PUMP_COL_SPACING*2.5f },
|
||||
{ TRACK_4, INSTRUMENT_1, PUMP_BUTTON_UPRIGHT, -PUMP_COL_SPACING*1.5f },
|
||||
{ TRACK_5, INSTRUMENT_1, PUMP_BUTTON_DOWNRIGHT, -PUMP_COL_SPACING*0.5f },
|
||||
{ TRACK_6, INSTRUMENT_2, PUMP_BUTTON_DOWNLEFT, +PUMP_COL_SPACING*0.5f },
|
||||
{ TRACK_7, INSTRUMENT_2, PUMP_BUTTON_UPLEFT, +PUMP_COL_SPACING*1.5f },
|
||||
{ TRACK_8, INSTRUMENT_2, PUMP_BUTTON_CENTER, +PUMP_COL_SPACING*2.5f },
|
||||
{ TRACK_9, INSTRUMENT_2, PUMP_BUTTON_UPRIGHT, +PUMP_COL_SPACING*3.5f },
|
||||
{ TRACK_10, INSTRUMENT_2, PUMP_BUTTON_DOWNRIGHT, +PUMP_COL_SPACING*4.5f },
|
||||
{ TRACK_1, GAME_CONTROLLER_1, PUMP_BUTTON_DOWNLEFT, -PUMP_COL_SPACING*4.5f },
|
||||
{ TRACK_2, GAME_CONTROLLER_1, PUMP_BUTTON_UPLEFT, -PUMP_COL_SPACING*3.5f },
|
||||
{ TRACK_3, GAME_CONTROLLER_1, PUMP_BUTTON_CENTER, -PUMP_COL_SPACING*2.5f },
|
||||
{ TRACK_4, GAME_CONTROLLER_1, PUMP_BUTTON_UPRIGHT, -PUMP_COL_SPACING*1.5f },
|
||||
{ TRACK_5, GAME_CONTROLLER_1, PUMP_BUTTON_DOWNRIGHT, -PUMP_COL_SPACING*0.5f },
|
||||
{ TRACK_6, GAME_CONTROLLER_2, PUMP_BUTTON_DOWNLEFT, +PUMP_COL_SPACING*0.5f },
|
||||
{ TRACK_7, GAME_CONTROLLER_2, PUMP_BUTTON_UPLEFT, +PUMP_COL_SPACING*1.5f },
|
||||
{ TRACK_8, GAME_CONTROLLER_2, PUMP_BUTTON_CENTER, +PUMP_COL_SPACING*2.5f },
|
||||
{ TRACK_9, GAME_CONTROLLER_2, PUMP_BUTTON_UPRIGHT, +PUMP_COL_SPACING*3.5f },
|
||||
{ TRACK_10, GAME_CONTROLLER_2, PUMP_BUTTON_DOWNRIGHT, +PUMP_COL_SPACING*4.5f },
|
||||
},
|
||||
{ // PLAYER_2
|
||||
{ TRACK_1, INSTRUMENT_1, PUMP_BUTTON_DOWNLEFT, -PUMP_COL_SPACING*4.5f },
|
||||
{ TRACK_2, INSTRUMENT_1, PUMP_BUTTON_UPLEFT, -PUMP_COL_SPACING*3.5f },
|
||||
{ TRACK_3, INSTRUMENT_1, PUMP_BUTTON_CENTER, -PUMP_COL_SPACING*2.5f },
|
||||
{ TRACK_4, INSTRUMENT_1, PUMP_BUTTON_UPRIGHT, -PUMP_COL_SPACING*1.5f },
|
||||
{ TRACK_5, INSTRUMENT_1, PUMP_BUTTON_DOWNRIGHT, -PUMP_COL_SPACING*0.5f },
|
||||
{ TRACK_6, INSTRUMENT_2, PUMP_BUTTON_DOWNLEFT, +PUMP_COL_SPACING*0.5f },
|
||||
{ TRACK_7, INSTRUMENT_2, PUMP_BUTTON_UPLEFT, +PUMP_COL_SPACING*1.5f },
|
||||
{ TRACK_8, INSTRUMENT_2, PUMP_BUTTON_CENTER, +PUMP_COL_SPACING*2.5f },
|
||||
{ TRACK_9, INSTRUMENT_2, PUMP_BUTTON_UPRIGHT, +PUMP_COL_SPACING*3.5f },
|
||||
{ TRACK_10, INSTRUMENT_2, PUMP_BUTTON_DOWNRIGHT, +PUMP_COL_SPACING*4.5f },
|
||||
{ TRACK_1, GAME_CONTROLLER_1, PUMP_BUTTON_DOWNLEFT, -PUMP_COL_SPACING*4.5f },
|
||||
{ TRACK_2, GAME_CONTROLLER_1, PUMP_BUTTON_UPLEFT, -PUMP_COL_SPACING*3.5f },
|
||||
{ TRACK_3, GAME_CONTROLLER_1, PUMP_BUTTON_CENTER, -PUMP_COL_SPACING*2.5f },
|
||||
{ TRACK_4, GAME_CONTROLLER_1, PUMP_BUTTON_UPRIGHT, -PUMP_COL_SPACING*1.5f },
|
||||
{ TRACK_5, GAME_CONTROLLER_1, PUMP_BUTTON_DOWNRIGHT, -PUMP_COL_SPACING*0.5f },
|
||||
{ TRACK_6, GAME_CONTROLLER_2, PUMP_BUTTON_DOWNLEFT, +PUMP_COL_SPACING*0.5f },
|
||||
{ TRACK_7, GAME_CONTROLLER_2, PUMP_BUTTON_UPLEFT, +PUMP_COL_SPACING*1.5f },
|
||||
{ TRACK_8, GAME_CONTROLLER_2, PUMP_BUTTON_CENTER, +PUMP_COL_SPACING*2.5f },
|
||||
{ TRACK_9, GAME_CONTROLLER_2, PUMP_BUTTON_UPRIGHT, +PUMP_COL_SPACING*3.5f },
|
||||
{ TRACK_10, GAME_CONTROLLER_2, PUMP_BUTTON_DOWNRIGHT, +PUMP_COL_SPACING*4.5f },
|
||||
},
|
||||
},
|
||||
{ // m_iColumnDrawOrder[MAX_COLS_PER_PLAYER];
|
||||
@@ -387,18 +387,18 @@ StyleDef g_StyleDefs[NUM_STYLES] =
|
||||
5, // m_iColsPerPlayer
|
||||
{ // m_ColumnInfo[NUM_PLAYERS][MAX_COLS_PER_PLAYER];
|
||||
{ // PLAYER_1
|
||||
{ TRACK_1, INSTRUMENT_1, EZ2_BUTTON_UPLEFT, -EZ2_COL_SPACING*1.0f }, // CHANGE THESE WHEN WE CAN SEE THE
|
||||
{ TRACK_2, INSTRUMENT_1, EZ2_BUTTON_UPLEFTHAND, -EZ2_COL_SPACING*0.5f }, // NOTES IN-GAME !!!!!!!!!!
|
||||
{ TRACK_3, INSTRUMENT_1, EZ2_BUTTON_DOWN, +EZ2_COL_SPACING*0 },
|
||||
{ TRACK_4, INSTRUMENT_1, EZ2_BUTTON_UPRIGHTHAND, +EZ2_COL_SPACING*0.5f },
|
||||
{ TRACK_5, INSTRUMENT_1, EZ2_BUTTON_UPRIGHT, +EZ2_COL_SPACING*1.0f },
|
||||
{ TRACK_1, GAME_CONTROLLER_1, EZ2_BUTTON_UPLEFT, -EZ2_COL_SPACING*1.0f }, // CHANGE THESE WHEN WE CAN SEE THE
|
||||
{ TRACK_2, GAME_CONTROLLER_1, EZ2_BUTTON_UPLEFTHAND, -EZ2_COL_SPACING*0.5f }, // NOTES IN-GAME !!!!!!!!!!
|
||||
{ TRACK_3, GAME_CONTROLLER_1, EZ2_BUTTON_DOWN, +EZ2_COL_SPACING*0 },
|
||||
{ TRACK_4, GAME_CONTROLLER_1, EZ2_BUTTON_UPRIGHTHAND, +EZ2_COL_SPACING*0.5f },
|
||||
{ TRACK_5, GAME_CONTROLLER_1, EZ2_BUTTON_UPRIGHT, +EZ2_COL_SPACING*1.0f },
|
||||
},
|
||||
{ // PLAYER_2
|
||||
{ TRACK_1, INSTRUMENT_2, EZ2_BUTTON_UPLEFT, -EZ2_COL_SPACING*2 }, // CHANGE THESE WHEN WE CAN SEE THE
|
||||
{ TRACK_2, INSTRUMENT_2, EZ2_BUTTON_UPLEFTHAND, -EZ2_COL_SPACING*1 }, // NOTES IN-GAME !!!!!!!!!!
|
||||
{ TRACK_3, INSTRUMENT_2, EZ2_BUTTON_DOWN, +EZ2_COL_SPACING*0 },
|
||||
{ TRACK_4, INSTRUMENT_2, EZ2_BUTTON_UPRIGHTHAND, +EZ2_COL_SPACING*1 },
|
||||
{ TRACK_5, INSTRUMENT_2, EZ2_BUTTON_UPRIGHT, +EZ2_COL_SPACING*2 },
|
||||
{ TRACK_1, GAME_CONTROLLER_2, EZ2_BUTTON_UPLEFT, -EZ2_COL_SPACING*2 }, // CHANGE THESE WHEN WE CAN SEE THE
|
||||
{ TRACK_2, GAME_CONTROLLER_2, EZ2_BUTTON_UPLEFTHAND, -EZ2_COL_SPACING*1 }, // NOTES IN-GAME !!!!!!!!!!
|
||||
{ TRACK_3, GAME_CONTROLLER_2, EZ2_BUTTON_DOWN, +EZ2_COL_SPACING*0 },
|
||||
{ TRACK_4, GAME_CONTROLLER_2, EZ2_BUTTON_UPRIGHTHAND, +EZ2_COL_SPACING*1 },
|
||||
{ TRACK_5, GAME_CONTROLLER_2, EZ2_BUTTON_UPRIGHT, +EZ2_COL_SPACING*2 },
|
||||
},
|
||||
},
|
||||
{ // m_iColumnDrawOrder[MAX_COLS_PER_PLAYER];
|
||||
@@ -414,18 +414,18 @@ StyleDef g_StyleDefs[NUM_STYLES] =
|
||||
5, // m_iColsPerPlayer
|
||||
{ // m_ColumnInfo[NUM_PLAYERS][MAX_COLS_PER_PLAYER];
|
||||
{ // PLAYER_1
|
||||
{ TRACK_1, INSTRUMENT_1, EZ2_BUTTON_UPLEFT, -EZ2_COL_SPACING*1.0f }, // CHANGE THESE WHEN WE CAN SEE THE
|
||||
{ TRACK_2, INSTRUMENT_1, EZ2_BUTTON_UPLEFTHAND, -EZ2_COL_SPACING*0.5f }, // NOTES IN-GAME !!!!!!!!!!
|
||||
{ TRACK_3, INSTRUMENT_1, EZ2_BUTTON_DOWN, +EZ2_COL_SPACING*0 },
|
||||
{ TRACK_4, INSTRUMENT_1, EZ2_BUTTON_UPRIGHTHAND, +EZ2_COL_SPACING*0.5f },
|
||||
{ TRACK_5, INSTRUMENT_1, EZ2_BUTTON_UPRIGHT, +EZ2_COL_SPACING*1.0f },
|
||||
{ TRACK_1, GAME_CONTROLLER_1, EZ2_BUTTON_UPLEFT, -EZ2_COL_SPACING*1.0f }, // CHANGE THESE WHEN WE CAN SEE THE
|
||||
{ TRACK_2, GAME_CONTROLLER_1, EZ2_BUTTON_UPLEFTHAND, -EZ2_COL_SPACING*0.5f }, // NOTES IN-GAME !!!!!!!!!!
|
||||
{ TRACK_3, GAME_CONTROLLER_1, EZ2_BUTTON_DOWN, +EZ2_COL_SPACING*0 },
|
||||
{ TRACK_4, GAME_CONTROLLER_1, EZ2_BUTTON_UPRIGHTHAND, +EZ2_COL_SPACING*0.5f },
|
||||
{ TRACK_5, GAME_CONTROLLER_1, EZ2_BUTTON_UPRIGHT, +EZ2_COL_SPACING*1.0f },
|
||||
},
|
||||
{ // PLAYER_2
|
||||
{ TRACK_1, INSTRUMENT_2, EZ2_BUTTON_UPLEFT, -EZ2_COL_SPACING*2 }, // CHANGE THESE WHEN WE CAN SEE THE
|
||||
{ TRACK_2, INSTRUMENT_2, EZ2_BUTTON_UPLEFTHAND, -EZ2_COL_SPACING*1 }, // NOTES IN-GAME !!!!!!!!!!
|
||||
{ TRACK_3, INSTRUMENT_2, EZ2_BUTTON_DOWN, +EZ2_COL_SPACING*0 },
|
||||
{ TRACK_4, INSTRUMENT_2, EZ2_BUTTON_UPRIGHTHAND, +EZ2_COL_SPACING*1 },
|
||||
{ TRACK_5, INSTRUMENT_2, EZ2_BUTTON_UPRIGHT, +EZ2_COL_SPACING*2 },
|
||||
{ TRACK_1, GAME_CONTROLLER_2, EZ2_BUTTON_UPLEFT, -EZ2_COL_SPACING*2 }, // CHANGE THESE WHEN WE CAN SEE THE
|
||||
{ TRACK_2, GAME_CONTROLLER_2, EZ2_BUTTON_UPLEFTHAND, -EZ2_COL_SPACING*1 }, // NOTES IN-GAME !!!!!!!!!!
|
||||
{ TRACK_3, GAME_CONTROLLER_2, EZ2_BUTTON_DOWN, +EZ2_COL_SPACING*0 },
|
||||
{ TRACK_4, GAME_CONTROLLER_2, EZ2_BUTTON_UPRIGHTHAND, +EZ2_COL_SPACING*1 },
|
||||
{ TRACK_5, GAME_CONTROLLER_2, EZ2_BUTTON_UPRIGHT, +EZ2_COL_SPACING*2 },
|
||||
},
|
||||
},
|
||||
{ // m_iColumnDrawOrder[MAX_COLS_PER_PLAYER];
|
||||
@@ -441,28 +441,28 @@ StyleDef g_StyleDefs[NUM_STYLES] =
|
||||
10, // m_iColsPerPlayer
|
||||
{ // m_ColumnInfo[NUM_PLAYERS][MAX_COLS_PER_PLAYER];
|
||||
{ // PLAYER_1
|
||||
{ TRACK_1, INSTRUMENT_1, EZ2_BUTTON_UPLEFT, -EZ2_COL_SPACING*4.5f }, // CHANGE THESE WHEN WE CAN SEE THE
|
||||
{ TRACK_2, INSTRUMENT_1, EZ2_BUTTON_UPLEFTHAND, -EZ2_COL_SPACING*3.5f }, // NOTES IN-GAME !!!!!!!!!!
|
||||
{ TRACK_3, INSTRUMENT_1, EZ2_BUTTON_DOWN, -EZ2_COL_SPACING*2.5f },
|
||||
{ TRACK_4, INSTRUMENT_1, EZ2_BUTTON_UPRIGHTHAND, -EZ2_COL_SPACING*1.5f },
|
||||
{ TRACK_5, INSTRUMENT_1, EZ2_BUTTON_UPRIGHT, -EZ2_COL_SPACING*0.5f },
|
||||
{ TRACK_6, INSTRUMENT_2, EZ2_BUTTON_UPLEFT, +EZ2_COL_SPACING*0.5f },
|
||||
{ TRACK_7, INSTRUMENT_2, EZ2_BUTTON_UPLEFTHAND, +EZ2_COL_SPACING*1.5f },
|
||||
{ TRACK_8, INSTRUMENT_2, EZ2_BUTTON_DOWN, +EZ2_COL_SPACING*2.5f },
|
||||
{ TRACK_9, INSTRUMENT_2, EZ2_BUTTON_UPRIGHTHAND, +EZ2_COL_SPACING*3.5f },
|
||||
{ TRACK_10, INSTRUMENT_2, EZ2_BUTTON_UPRIGHT, +EZ2_COL_SPACING*4.5f },
|
||||
{ TRACK_1, GAME_CONTROLLER_1, EZ2_BUTTON_UPLEFT, -EZ2_COL_SPACING*4.5f }, // CHANGE THESE WHEN WE CAN SEE THE
|
||||
{ TRACK_2, GAME_CONTROLLER_1, EZ2_BUTTON_UPLEFTHAND, -EZ2_COL_SPACING*3.5f }, // NOTES IN-GAME !!!!!!!!!!
|
||||
{ TRACK_3, GAME_CONTROLLER_1, EZ2_BUTTON_DOWN, -EZ2_COL_SPACING*2.5f },
|
||||
{ TRACK_4, GAME_CONTROLLER_1, EZ2_BUTTON_UPRIGHTHAND, -EZ2_COL_SPACING*1.5f },
|
||||
{ TRACK_5, GAME_CONTROLLER_1, EZ2_BUTTON_UPRIGHT, -EZ2_COL_SPACING*0.5f },
|
||||
{ TRACK_6, GAME_CONTROLLER_2, EZ2_BUTTON_UPLEFT, +EZ2_COL_SPACING*0.5f },
|
||||
{ TRACK_7, GAME_CONTROLLER_2, EZ2_BUTTON_UPLEFTHAND, +EZ2_COL_SPACING*1.5f },
|
||||
{ TRACK_8, GAME_CONTROLLER_2, EZ2_BUTTON_DOWN, +EZ2_COL_SPACING*2.5f },
|
||||
{ TRACK_9, GAME_CONTROLLER_2, EZ2_BUTTON_UPRIGHTHAND, +EZ2_COL_SPACING*3.5f },
|
||||
{ TRACK_10, GAME_CONTROLLER_2, EZ2_BUTTON_UPRIGHT, +EZ2_COL_SPACING*4.5f },
|
||||
},
|
||||
{ // PLAYER_2
|
||||
{ TRACK_1, INSTRUMENT_1, EZ2_BUTTON_UPLEFT, -EZ2_COL_SPACING*4.5f }, // CHANGE THESE WHEN WE CAN SEE THE
|
||||
{ TRACK_2, INSTRUMENT_1, EZ2_BUTTON_UPLEFTHAND, -EZ2_COL_SPACING*3.5f }, // NOTES IN-GAME !!!!!!!!!!
|
||||
{ TRACK_3, INSTRUMENT_1, EZ2_BUTTON_DOWN, -EZ2_COL_SPACING*2.5f },
|
||||
{ TRACK_4, INSTRUMENT_1, EZ2_BUTTON_UPRIGHTHAND, -EZ2_COL_SPACING*1.5f },
|
||||
{ TRACK_5, INSTRUMENT_1, EZ2_BUTTON_UPRIGHT, -EZ2_COL_SPACING*0.5f },
|
||||
{ TRACK_6, INSTRUMENT_2, EZ2_BUTTON_UPLEFT, +EZ2_COL_SPACING*0.5f },
|
||||
{ TRACK_7, INSTRUMENT_2, EZ2_BUTTON_UPLEFTHAND, +EZ2_COL_SPACING*1.5f },
|
||||
{ TRACK_8, INSTRUMENT_2, EZ2_BUTTON_DOWN, +EZ2_COL_SPACING*2.5f },
|
||||
{ TRACK_9, INSTRUMENT_2, EZ2_BUTTON_UPRIGHTHAND, +EZ2_COL_SPACING*3.5f },
|
||||
{ TRACK_10, INSTRUMENT_2, EZ2_BUTTON_UPRIGHT, +EZ2_COL_SPACING*4.5f },
|
||||
{ TRACK_1, GAME_CONTROLLER_1, EZ2_BUTTON_UPLEFT, -EZ2_COL_SPACING*4.5f }, // CHANGE THESE WHEN WE CAN SEE THE
|
||||
{ TRACK_2, GAME_CONTROLLER_1, EZ2_BUTTON_UPLEFTHAND, -EZ2_COL_SPACING*3.5f }, // NOTES IN-GAME !!!!!!!!!!
|
||||
{ TRACK_3, GAME_CONTROLLER_1, EZ2_BUTTON_DOWN, -EZ2_COL_SPACING*2.5f },
|
||||
{ TRACK_4, GAME_CONTROLLER_1, EZ2_BUTTON_UPRIGHTHAND, -EZ2_COL_SPACING*1.5f },
|
||||
{ TRACK_5, GAME_CONTROLLER_1, EZ2_BUTTON_UPRIGHT, -EZ2_COL_SPACING*0.5f },
|
||||
{ TRACK_6, GAME_CONTROLLER_2, EZ2_BUTTON_UPLEFT, +EZ2_COL_SPACING*0.5f },
|
||||
{ TRACK_7, GAME_CONTROLLER_2, EZ2_BUTTON_UPLEFTHAND, +EZ2_COL_SPACING*1.5f },
|
||||
{ TRACK_8, GAME_CONTROLLER_2, EZ2_BUTTON_DOWN, +EZ2_COL_SPACING*2.5f },
|
||||
{ TRACK_9, GAME_CONTROLLER_2, EZ2_BUTTON_UPRIGHTHAND, +EZ2_COL_SPACING*3.5f },
|
||||
{ TRACK_10, GAME_CONTROLLER_2, EZ2_BUTTON_UPRIGHT, +EZ2_COL_SPACING*4.5f },
|
||||
},
|
||||
},
|
||||
{ // m_iColumnDrawOrder[MAX_COLS_PER_PLAYER];
|
||||
@@ -477,22 +477,22 @@ StyleDef g_StyleDefs[NUM_STYLES] =
|
||||
7, // m_iColsPerPlayer
|
||||
{ // m_ColumnInfo[NUM_PLAYERS][MAX_COLS_PER_PLAYER];
|
||||
{ // PLAYER_1
|
||||
{ TRACK_1, INSTRUMENT_1, EZ2_BUTTON_UPLEFT, -EZ2_COL_SPACING*3 }, // CHANGE THESE WHEN WE CAN SEE THE
|
||||
{ TRACK_2, INSTRUMENT_1, EZ2_BUTTON_LRLEFTHAND, -EZ2_COL_SPACING*2 }, // NOTES IN-GAME !!!!!!!!!!
|
||||
{ TRACK_3, INSTRUMENT_1, EZ2_BUTTON_UPLEFTHAND, -EZ2_COL_SPACING*1 },
|
||||
{ TRACK_4, INSTRUMENT_1, EZ2_BUTTON_DOWN, +EZ2_COL_SPACING*0 },
|
||||
{ TRACK_5, INSTRUMENT_1, EZ2_BUTTON_UPRIGHTHAND, +EZ2_COL_SPACING*1 },
|
||||
{ TRACK_6, INSTRUMENT_1, EZ2_BUTTON_LRRIGHTHAND, +EZ2_COL_SPACING*2 },
|
||||
{ TRACK_7, INSTRUMENT_1, EZ2_BUTTON_UPRIGHT, +EZ2_COL_SPACING*3 },
|
||||
{ TRACK_1, GAME_CONTROLLER_1, EZ2_BUTTON_UPLEFT, -EZ2_COL_SPACING*3 }, // CHANGE THESE WHEN WE CAN SEE THE
|
||||
{ TRACK_2, GAME_CONTROLLER_1, EZ2_BUTTON_LRLEFTHAND, -EZ2_COL_SPACING*2 }, // NOTES IN-GAME !!!!!!!!!!
|
||||
{ TRACK_3, GAME_CONTROLLER_1, EZ2_BUTTON_UPLEFTHAND, -EZ2_COL_SPACING*1 },
|
||||
{ TRACK_4, GAME_CONTROLLER_1, EZ2_BUTTON_DOWN, +EZ2_COL_SPACING*0 },
|
||||
{ TRACK_5, GAME_CONTROLLER_1, EZ2_BUTTON_UPRIGHTHAND, +EZ2_COL_SPACING*1 },
|
||||
{ TRACK_6, GAME_CONTROLLER_1, EZ2_BUTTON_LRRIGHTHAND, +EZ2_COL_SPACING*2 },
|
||||
{ TRACK_7, GAME_CONTROLLER_1, EZ2_BUTTON_UPRIGHT, +EZ2_COL_SPACING*3 },
|
||||
},
|
||||
{ // PLAYER_2
|
||||
{ TRACK_1, INSTRUMENT_2, EZ2_BUTTON_UPLEFT, -EZ2_COL_SPACING*3 }, // CHANGE THESE WHEN WE CAN SEE THE
|
||||
{ TRACK_2, INSTRUMENT_2, EZ2_BUTTON_LRLEFTHAND, -EZ2_COL_SPACING*2 }, // NOTES IN-GAME !!!!!!!!!!
|
||||
{ TRACK_3, INSTRUMENT_2, EZ2_BUTTON_UPLEFTHAND, -EZ2_COL_SPACING*1 },
|
||||
{ TRACK_4, INSTRUMENT_2, EZ2_BUTTON_DOWN, +EZ2_COL_SPACING*0 },
|
||||
{ TRACK_5, INSTRUMENT_2, EZ2_BUTTON_UPRIGHTHAND, +EZ2_COL_SPACING*1 },
|
||||
{ TRACK_6, INSTRUMENT_2, EZ2_BUTTON_LRRIGHTHAND, +EZ2_COL_SPACING*2 },
|
||||
{ TRACK_7, INSTRUMENT_2, EZ2_BUTTON_UPRIGHT, +EZ2_COL_SPACING*3 },
|
||||
{ TRACK_1, GAME_CONTROLLER_2, EZ2_BUTTON_UPLEFT, -EZ2_COL_SPACING*3 }, // CHANGE THESE WHEN WE CAN SEE THE
|
||||
{ TRACK_2, GAME_CONTROLLER_2, EZ2_BUTTON_LRLEFTHAND, -EZ2_COL_SPACING*2 }, // NOTES IN-GAME !!!!!!!!!!
|
||||
{ TRACK_3, GAME_CONTROLLER_2, EZ2_BUTTON_UPLEFTHAND, -EZ2_COL_SPACING*1 },
|
||||
{ TRACK_4, GAME_CONTROLLER_2, EZ2_BUTTON_DOWN, +EZ2_COL_SPACING*0 },
|
||||
{ TRACK_5, GAME_CONTROLLER_2, EZ2_BUTTON_UPRIGHTHAND, +EZ2_COL_SPACING*1 },
|
||||
{ TRACK_6, GAME_CONTROLLER_2, EZ2_BUTTON_LRRIGHTHAND, +EZ2_COL_SPACING*2 },
|
||||
{ TRACK_7, GAME_CONTROLLER_2, EZ2_BUTTON_UPRIGHT, +EZ2_COL_SPACING*3 },
|
||||
},
|
||||
},
|
||||
{ // m_iColumnDrawOrder[MAX_COLS_PER_PLAYER];
|
||||
@@ -507,18 +507,18 @@ StyleDef g_StyleDefs[NUM_STYLES] =
|
||||
5, // m_iColsPerPlayer
|
||||
{ // m_ColumnInfo[NUM_PLAYERS][MAX_COLS_PER_PLAYER];
|
||||
{ // PLAYER_1
|
||||
{ TRACK_1, INSTRUMENT_1, EZ2_BUTTON_UPLEFT, -EZ2_COL_SPACING*2 }, // CHANGE THESE WHEN WE CAN SEE THE
|
||||
{ TRACK_2, INSTRUMENT_1, EZ2_BUTTON_UPLEFTHAND, -EZ2_COL_SPACING*1 }, // NOTES IN-GAME !!!!!!!!!!
|
||||
{ TRACK_3, INSTRUMENT_1, EZ2_BUTTON_DOWN, +EZ2_COL_SPACING*0 },
|
||||
{ TRACK_4, INSTRUMENT_1, EZ2_BUTTON_UPRIGHTHAND, +EZ2_COL_SPACING*1 },
|
||||
{ TRACK_5, INSTRUMENT_1, EZ2_BUTTON_UPRIGHT, +EZ2_COL_SPACING*2 },
|
||||
{ TRACK_1, GAME_CONTROLLER_1, EZ2_BUTTON_UPLEFT, -EZ2_COL_SPACING*2 }, // CHANGE THESE WHEN WE CAN SEE THE
|
||||
{ TRACK_2, GAME_CONTROLLER_1, EZ2_BUTTON_UPLEFTHAND, -EZ2_COL_SPACING*1 }, // NOTES IN-GAME !!!!!!!!!!
|
||||
{ TRACK_3, GAME_CONTROLLER_1, EZ2_BUTTON_DOWN, +EZ2_COL_SPACING*0 },
|
||||
{ TRACK_4, GAME_CONTROLLER_1, EZ2_BUTTON_UPRIGHTHAND, +EZ2_COL_SPACING*1 },
|
||||
{ TRACK_5, GAME_CONTROLLER_1, EZ2_BUTTON_UPRIGHT, +EZ2_COL_SPACING*2 },
|
||||
},
|
||||
{ // PLAYER_2
|
||||
{ TRACK_1, INSTRUMENT_2, EZ2_BUTTON_UPLEFT, -EZ2_COL_SPACING*2 }, // CHANGE THESE WHEN WE CAN SEE THE
|
||||
{ TRACK_2, INSTRUMENT_2, EZ2_BUTTON_UPLEFTHAND, -EZ2_COL_SPACING*1 }, // NOTES IN-GAME !!!!!!!!!!
|
||||
{ TRACK_3, INSTRUMENT_2, EZ2_BUTTON_DOWN, +EZ2_COL_SPACING*0 },
|
||||
{ TRACK_4, INSTRUMENT_2, EZ2_BUTTON_UPRIGHTHAND, +EZ2_COL_SPACING*1 },
|
||||
{ TRACK_5, INSTRUMENT_2, EZ2_BUTTON_UPRIGHT, +EZ2_COL_SPACING*2 },
|
||||
{ TRACK_1, GAME_CONTROLLER_2, EZ2_BUTTON_UPLEFT, -EZ2_COL_SPACING*2 }, // CHANGE THESE WHEN WE CAN SEE THE
|
||||
{ TRACK_2, GAME_CONTROLLER_2, EZ2_BUTTON_UPLEFTHAND, -EZ2_COL_SPACING*1 }, // NOTES IN-GAME !!!!!!!!!!
|
||||
{ TRACK_3, GAME_CONTROLLER_2, EZ2_BUTTON_DOWN, +EZ2_COL_SPACING*0 },
|
||||
{ TRACK_4, GAME_CONTROLLER_2, EZ2_BUTTON_UPRIGHTHAND, +EZ2_COL_SPACING*1 },
|
||||
{ TRACK_5, GAME_CONTROLLER_2, EZ2_BUTTON_UPRIGHT, +EZ2_COL_SPACING*2 },
|
||||
},
|
||||
},
|
||||
{ // m_iColumnDrawOrder[MAX_COLS_PER_PLAYER];
|
||||
@@ -533,18 +533,18 @@ StyleDef g_StyleDefs[NUM_STYLES] =
|
||||
5, // m_iColsPerPlayer
|
||||
{ // m_ColumnInfo[NUM_PLAYERS][MAX_COLS_PER_PLAYER];
|
||||
{ // PLAYER_1
|
||||
{ TRACK_1, INSTRUMENT_1, EZ2_BUTTON_UPLEFT, -EZ2_COL_SPACING*2 }, // CHANGE THESE WHEN WE CAN SEE THE
|
||||
{ TRACK_2, INSTRUMENT_1, EZ2_BUTTON_UPLEFTHAND, -EZ2_COL_SPACING*1 }, // NOTES IN-GAME !!!!!!!!!!
|
||||
{ TRACK_3, INSTRUMENT_1, EZ2_BUTTON_DOWN, +EZ2_COL_SPACING*0 },
|
||||
{ TRACK_4, INSTRUMENT_1, EZ2_BUTTON_UPRIGHTHAND, +EZ2_COL_SPACING*1 },
|
||||
{ TRACK_5, INSTRUMENT_1, EZ2_BUTTON_UPRIGHT, +EZ2_COL_SPACING*2 },
|
||||
{ TRACK_1, GAME_CONTROLLER_1, EZ2_BUTTON_UPLEFT, -EZ2_COL_SPACING*2 }, // CHANGE THESE WHEN WE CAN SEE THE
|
||||
{ TRACK_2, GAME_CONTROLLER_1, EZ2_BUTTON_UPLEFTHAND, -EZ2_COL_SPACING*1 }, // NOTES IN-GAME !!!!!!!!!!
|
||||
{ TRACK_3, GAME_CONTROLLER_1, EZ2_BUTTON_DOWN, +EZ2_COL_SPACING*0 },
|
||||
{ TRACK_4, GAME_CONTROLLER_1, EZ2_BUTTON_UPRIGHTHAND, +EZ2_COL_SPACING*1 },
|
||||
{ TRACK_5, GAME_CONTROLLER_1, EZ2_BUTTON_UPRIGHT, +EZ2_COL_SPACING*2 },
|
||||
},
|
||||
{ // PLAYER_2
|
||||
{ TRACK_1, INSTRUMENT_2, EZ2_BUTTON_UPLEFT, -EZ2_COL_SPACING*2 }, // CHANGE THESE WHEN WE CAN SEE THE
|
||||
{ TRACK_2, INSTRUMENT_2, EZ2_BUTTON_UPLEFTHAND, -EZ2_COL_SPACING*1 }, // NOTES IN-GAME !!!!!!!!!!
|
||||
{ TRACK_3, INSTRUMENT_2, EZ2_BUTTON_DOWN, +EZ2_COL_SPACING*0 },
|
||||
{ TRACK_4, INSTRUMENT_2, EZ2_BUTTON_UPRIGHTHAND, +EZ2_COL_SPACING*1 },
|
||||
{ TRACK_5, INSTRUMENT_2, EZ2_BUTTON_UPRIGHT, +EZ2_COL_SPACING*2 },
|
||||
{ TRACK_1, GAME_CONTROLLER_2, EZ2_BUTTON_UPLEFT, -EZ2_COL_SPACING*2 }, // CHANGE THESE WHEN WE CAN SEE THE
|
||||
{ TRACK_2, GAME_CONTROLLER_2, EZ2_BUTTON_UPLEFTHAND, -EZ2_COL_SPACING*1 }, // NOTES IN-GAME !!!!!!!!!!
|
||||
{ TRACK_3, GAME_CONTROLLER_2, EZ2_BUTTON_DOWN, +EZ2_COL_SPACING*0 },
|
||||
{ TRACK_4, GAME_CONTROLLER_2, EZ2_BUTTON_UPRIGHTHAND, +EZ2_COL_SPACING*1 },
|
||||
{ TRACK_5, GAME_CONTROLLER_2, EZ2_BUTTON_UPRIGHT, +EZ2_COL_SPACING*2 },
|
||||
},
|
||||
},
|
||||
{ // m_iColumnDrawOrder[MAX_COLS_PER_PLAYER];
|
||||
@@ -560,22 +560,22 @@ StyleDef g_StyleDefs[NUM_STYLES] =
|
||||
7, // m_iColsPerPlayer
|
||||
{ // m_ColumnInfo[NUM_PLAYERS][MAX_COLS_PER_PLAYER];
|
||||
{ // PLAYER_1
|
||||
{ TRACK_1, INSTRUMENT_1, EZ2_BUTTON_UPLEFT, -EZ2_COL_SPACING*3 }, // CHANGE THESE WHEN WE CAN SEE THE
|
||||
{ TRACK_2, INSTRUMENT_1, EZ2_BUTTON_LRLEFTHAND, -EZ2_COL_SPACING*2 }, // NOTES IN-GAME !!!!!!!!!!
|
||||
{ TRACK_3, INSTRUMENT_1, EZ2_BUTTON_UPLEFTHAND, -EZ2_COL_SPACING*1 },
|
||||
{ TRACK_4, INSTRUMENT_1, EZ2_BUTTON_DOWN, +EZ2_COL_SPACING*0 },
|
||||
{ TRACK_5, INSTRUMENT_1, EZ2_BUTTON_UPRIGHTHAND, +EZ2_COL_SPACING*1 },
|
||||
{ TRACK_6, INSTRUMENT_1, EZ2_BUTTON_LRRIGHTHAND, +EZ2_COL_SPACING*2 },
|
||||
{ TRACK_7, INSTRUMENT_1, EZ2_BUTTON_UPRIGHT, +EZ2_COL_SPACING*3 },
|
||||
{ TRACK_1, GAME_CONTROLLER_1, EZ2_BUTTON_UPLEFT, -EZ2_COL_SPACING*3 }, // CHANGE THESE WHEN WE CAN SEE THE
|
||||
{ TRACK_2, GAME_CONTROLLER_1, EZ2_BUTTON_LRLEFTHAND, -EZ2_COL_SPACING*2 }, // NOTES IN-GAME !!!!!!!!!!
|
||||
{ TRACK_3, GAME_CONTROLLER_1, EZ2_BUTTON_UPLEFTHAND, -EZ2_COL_SPACING*1 },
|
||||
{ TRACK_4, GAME_CONTROLLER_1, EZ2_BUTTON_DOWN, +EZ2_COL_SPACING*0 },
|
||||
{ TRACK_5, GAME_CONTROLLER_1, EZ2_BUTTON_UPRIGHTHAND, +EZ2_COL_SPACING*1 },
|
||||
{ TRACK_6, GAME_CONTROLLER_1, EZ2_BUTTON_LRRIGHTHAND, +EZ2_COL_SPACING*2 },
|
||||
{ TRACK_7, GAME_CONTROLLER_1, EZ2_BUTTON_UPRIGHT, +EZ2_COL_SPACING*3 },
|
||||
},
|
||||
{ // PLAYER_2
|
||||
{ TRACK_1, INSTRUMENT_2, EZ2_BUTTON_UPLEFT, -EZ2_COL_SPACING*3 }, // CHANGE THESE WHEN WE CAN SEE THE
|
||||
{ TRACK_2, INSTRUMENT_2, EZ2_BUTTON_LRLEFTHAND, -EZ2_COL_SPACING*2 }, // NOTES IN-GAME !!!!!!!!!!
|
||||
{ TRACK_3, INSTRUMENT_2, EZ2_BUTTON_UPLEFTHAND, -EZ2_COL_SPACING*1 },
|
||||
{ TRACK_4, INSTRUMENT_2, EZ2_BUTTON_DOWN, +EZ2_COL_SPACING*0 },
|
||||
{ TRACK_5, INSTRUMENT_2, EZ2_BUTTON_UPRIGHTHAND, +EZ2_COL_SPACING*1 },
|
||||
{ TRACK_6, INSTRUMENT_2, EZ2_BUTTON_LRRIGHTHAND, +EZ2_COL_SPACING*2 },
|
||||
{ TRACK_7, INSTRUMENT_2, EZ2_BUTTON_UPRIGHT, +EZ2_COL_SPACING*3 },
|
||||
{ TRACK_1, GAME_CONTROLLER_2, EZ2_BUTTON_UPLEFT, -EZ2_COL_SPACING*3 }, // CHANGE THESE WHEN WE CAN SEE THE
|
||||
{ TRACK_2, GAME_CONTROLLER_2, EZ2_BUTTON_LRLEFTHAND, -EZ2_COL_SPACING*2 }, // NOTES IN-GAME !!!!!!!!!!
|
||||
{ TRACK_3, GAME_CONTROLLER_2, EZ2_BUTTON_UPLEFTHAND, -EZ2_COL_SPACING*1 },
|
||||
{ TRACK_4, GAME_CONTROLLER_2, EZ2_BUTTON_DOWN, +EZ2_COL_SPACING*0 },
|
||||
{ TRACK_5, GAME_CONTROLLER_2, EZ2_BUTTON_UPRIGHTHAND, +EZ2_COL_SPACING*1 },
|
||||
{ TRACK_6, GAME_CONTROLLER_2, EZ2_BUTTON_LRRIGHTHAND, +EZ2_COL_SPACING*2 },
|
||||
{ TRACK_7, GAME_CONTROLLER_2, EZ2_BUTTON_UPRIGHT, +EZ2_COL_SPACING*3 },
|
||||
},
|
||||
},
|
||||
{ // m_iColumnDrawOrder[MAX_COLS_PER_PLAYER];
|
||||
|
||||
@@ -26,7 +26,6 @@ public:
|
||||
|
||||
void GetGameNames( CStringArray &AddTo );
|
||||
bool DoesGameExist( CString sGameName );
|
||||
void SwitchGame( Game newGame );
|
||||
|
||||
void GetNoteSkinNames( CStringArray &AddTo ); // looks up current Game in GAMESTATE
|
||||
bool DoesNoteSkinExist( CString sSkinName ); // looks up current Game in GAMESTATE
|
||||
|
||||
@@ -54,13 +54,6 @@ void GameState::Reset()
|
||||
m_iCurrentStageIndex = 0;
|
||||
}
|
||||
|
||||
void GameState::SwitchGame( Game newGame )
|
||||
{
|
||||
ASSERT( newGame >= 0 && newGame < NUM_GAMES );
|
||||
|
||||
m_CurGame = newGame;
|
||||
}
|
||||
|
||||
int GameState::GetStageIndex()
|
||||
{
|
||||
return m_iCurrentStageIndex;
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
|
||||
#include "GameConstantsAndTypes.h"
|
||||
#include "GameplayStatistics.h"
|
||||
#include "PlayerOptions.h"
|
||||
#include "SongOptions.h"
|
||||
|
||||
|
||||
class Song;
|
||||
@@ -43,11 +45,9 @@ public:
|
||||
CArray<GameplayStatistics,GameplayStatistics> m_aGameplayStatistics; // for passing from Dancing to Results
|
||||
GameplayStatistics& GetLatestGameplayStatistics();
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
Game m_CurGame;
|
||||
public:
|
||||
Game GetCurGame() { return m_CurGame; };
|
||||
void SwitchGame( Game newGame );
|
||||
Style m_CurStyle;
|
||||
PlayerNumber m_MasterPlayerNumber;
|
||||
|
||||
@@ -55,7 +55,7 @@ public:
|
||||
StyleDef* GetCurrentStyleDef();
|
||||
|
||||
bool IsPlayerEnabled( PlayerNumber pn );
|
||||
//bool IsPlayerEnabled( int p ) { return IsPlayerEnabled( (PlayerNumber)p ); }; // for those too lasy to cast all those p's to a PlayerNumber
|
||||
bool IsPlayerEnabled( int p ) { return IsPlayerEnabled( (PlayerNumber)p ); }; // for those too lasy to cast all those p's to a PlayerNumber
|
||||
|
||||
|
||||
CString m_sLoadingMessage;
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
|
||||
float RADAR_VALUE_ROTATION( int iValueIndex ) { return D3DX_PI/2 + D3DX_PI*2 / 5.0f * iValueIndex; }
|
||||
|
||||
const float RADAR_EDGE_WIDTH = 2;
|
||||
|
||||
GrooveRadar::GrooveRadar()
|
||||
{
|
||||
this->AddSubActor( &m_GrooveRadarValueMap );
|
||||
@@ -197,8 +199,8 @@ void GrooveRadar::GrooveRadarValueMap::DrawPrimitives()
|
||||
const int c = i%NUM_RADAR_CATEGORIES;
|
||||
const float fDistFromCenter =
|
||||
( m_fValuesOld[p][c] * (1-m_PercentTowardNew[p]) + m_fValuesNew[p][c] * m_PercentTowardNew[p] + 0.07f ) * fRadius;
|
||||
const float fDistFromCenterInner = fDistFromCenter-2;
|
||||
const float fDistFromCenterOutter = fDistFromCenter+2;
|
||||
const float fDistFromCenterInner = fDistFromCenter-RADAR_EDGE_WIDTH/2;
|
||||
const float fDistFromCenterOutter = fDistFromCenter+RADAR_EDGE_WIDTH/2;
|
||||
const float fRotation = RADAR_VALUE_ROTATION(i);
|
||||
const float fXInner = cosf(fRotation) * fDistFromCenterInner;
|
||||
const float fXOutter = cosf(fRotation) * fDistFromCenterOutter;
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
|
||||
#include "HoldGhostArrow.h"
|
||||
#include "PrefsManager.h"
|
||||
#include "RageException.h"
|
||||
#include "RageTimer.h"
|
||||
|
||||
|
||||
const float HOLD_GHOST_ARROW_TWEEN_TIME = 0.5f;
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
|
||||
#include "RageInput.h"
|
||||
|
||||
const float TIME_BEFORE_SLOW_REPEATS = 0.7f;
|
||||
const float TIME_BEFORE_FAST_REPEATS = 2.0f;
|
||||
const float TIME_BEFORE_SLOW_REPEATS = 0.6f;
|
||||
const float TIME_BEFORE_FAST_REPEATS = 1.5f;
|
||||
|
||||
//const float TIME_BETWEEN_SLOW_REPEATS = 0.25f;
|
||||
const float TIME_BETWEEN_SLOW_REPEATS = 0.125f;
|
||||
|
||||
@@ -76,13 +76,13 @@ void InputMapper::SaveMappingsToDisk()
|
||||
|
||||
|
||||
// iterate over our input map and write all mappings to the ini file
|
||||
for( int i=0; i<MAX_INSTRUMENTS; i++ )
|
||||
for( int i=0; i<MAX_GAME_CONTROLLERS; i++ )
|
||||
{
|
||||
for( int j=0; j<MAX_INSTRUMENT_BUTTONS; j++ )
|
||||
for( int j=0; j<MAX_GAME_BUTTONS; j++ )
|
||||
{
|
||||
CString sNameString, sValueString;
|
||||
|
||||
GameInput GameI( (InstrumentNumber)i, (InstrumentButton)j );
|
||||
GameInput GameI( (GameController)i, (GameButton)j );
|
||||
sNameString = GameI.toString();
|
||||
sValueString = ssprintf( "%s,%s,%s",
|
||||
m_GItoDI[i][j][0].toString(), m_GItoDI[i][j][1].toString(), m_GItoDI[i][j][2].toString() );
|
||||
@@ -105,7 +105,7 @@ void InputMapper::SetInputMap( DeviceInput DeviceI, GameInput GameI, int iSlotIn
|
||||
ClearFromInputMap( DeviceI );
|
||||
ClearFromInputMap( GameI, iSlotIndex );
|
||||
|
||||
m_GItoDI[GameI.number][GameI.button][iSlotIndex] = DeviceI;
|
||||
m_GItoDI[GameI.controller][GameI.button][iSlotIndex] = DeviceI;
|
||||
|
||||
|
||||
UpdateTempDItoGI();
|
||||
@@ -115,9 +115,9 @@ void InputMapper::ClearFromInputMap( DeviceInput DeviceI )
|
||||
{
|
||||
// search for where this DeviceI maps to
|
||||
|
||||
for( int p=0; p<MAX_INSTRUMENTS; p++ )
|
||||
for( int p=0; p<MAX_GAME_CONTROLLERS; p++ )
|
||||
{
|
||||
for( int b=0; b<MAX_INSTRUMENT_BUTTONS; b++ )
|
||||
for( int b=0; b<MAX_GAME_BUTTONS; b++ )
|
||||
{
|
||||
for( int s=0; s<NUM_GAME_TO_DEVICE_SLOTS; s++ )
|
||||
{
|
||||
@@ -135,7 +135,7 @@ void InputMapper::ClearFromInputMap( GameInput GameI, int iSlotIndex )
|
||||
if( GameI.IsBlank() )
|
||||
return;
|
||||
|
||||
m_GItoDI[GameI.number][GameI.button][iSlotIndex].MakeBlank();
|
||||
m_GItoDI[GameI.controller][GameI.button][iSlotIndex].MakeBlank();
|
||||
|
||||
UpdateTempDItoGI();
|
||||
}
|
||||
@@ -153,13 +153,13 @@ void InputMapper::UpdateTempDItoGI()
|
||||
|
||||
|
||||
// repopulate m_tempDItoGI
|
||||
for( int n=0; n<MAX_INSTRUMENTS; n++ )
|
||||
for( int n=0; n<MAX_GAME_CONTROLLERS; n++ )
|
||||
{
|
||||
for( int b=0; b<MAX_INSTRUMENT_BUTTONS; b++ )
|
||||
for( int b=0; b<MAX_GAME_BUTTONS; b++ )
|
||||
{
|
||||
for( int s=0; s<NUM_GAME_TO_DEVICE_SLOTS; s++ )
|
||||
{
|
||||
GameInput GameI( (InstrumentNumber)n, (InstrumentButton)b );
|
||||
GameInput GameI( (GameController)n, (GameButton)b );
|
||||
DeviceInput DeviceI = m_GItoDI[n][b][s];
|
||||
|
||||
if( DeviceI.IsBlank() )
|
||||
@@ -174,12 +174,12 @@ void InputMapper::UpdateTempDItoGI()
|
||||
bool InputMapper::DeviceToGame( DeviceInput DeviceI, GameInput& GameI ) // return true if there is a mapping from device to pad
|
||||
{
|
||||
GameI = m_tempDItoGI[DeviceI.device][DeviceI.button];
|
||||
return GameI.number != PLAYER_INVALID;
|
||||
return GameI.controller != PLAYER_INVALID;
|
||||
}
|
||||
|
||||
bool InputMapper::GameToDevice( GameInput GameI, int iSoltNum, DeviceInput& DeviceI ) // return true if there is a mapping from pad to device
|
||||
{
|
||||
DeviceI = m_GItoDI[GameI.number][GameI.button][iSoltNum];
|
||||
DeviceI = m_GItoDI[GameI.controller][GameI.button][iSoltNum];
|
||||
return DeviceI.device != DEVICE_NONE;
|
||||
}
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ public:
|
||||
|
||||
protected:
|
||||
// all the DeviceInputs that map to a GameInput
|
||||
DeviceInput m_GItoDI[MAX_INSTRUMENTS][MAX_INSTRUMENT_BUTTONS][NUM_GAME_TO_DEVICE_SLOTS];
|
||||
DeviceInput m_GItoDI[MAX_GAME_CONTROLLERS][MAX_GAME_BUTTONS][NUM_GAME_TO_DEVICE_SLOTS];
|
||||
|
||||
// lookup for efficiency from a DeviceInput to a GameInput
|
||||
// This is repopulated every time m_PItoDI changes by calling UpdateTempDItoPI().
|
||||
|
||||
@@ -13,8 +13,48 @@
|
||||
#include "InputQueue.h"
|
||||
#include "IniFile.h"
|
||||
#include "GameManager.h"
|
||||
#include "RageException.h"
|
||||
#include "RageTimer.h"
|
||||
|
||||
|
||||
InputQueue* INPUTQUEUE = NULL; // global and accessable from anywhere in our program
|
||||
|
||||
|
||||
InputQueue::InputQueue()
|
||||
{
|
||||
for( int p=0; p<NUM_PLAYERS; p++ )
|
||||
m_aQueue[p].SetSize( MAX_INPUT_QUEUE_LENGTH );
|
||||
}
|
||||
|
||||
void InputQueue::HandleInput( const PlayerNumber p, const MenuButton b )
|
||||
{
|
||||
if( m_aQueue[p].GetSize() >= MAX_INPUT_QUEUE_LENGTH ) // full
|
||||
m_aQueue[p].RemoveAt( 0, m_aQueue[p].GetSize()-MAX_INPUT_QUEUE_LENGTH+1 );
|
||||
m_aQueue[p].Add( MenuButtonAndTime(b,TIMER->GetTimeSinceStart()) );
|
||||
};
|
||||
|
||||
bool InputQueue::MatchesPattern( const PlayerNumber p, const MenuButton* button_sequence, const int iNumButtons, float fMaxSecondsBack )
|
||||
{
|
||||
if( fMaxSecondsBack == -1 )
|
||||
fMaxSecondsBack = 0.4f + iNumButtons*0.15f;
|
||||
|
||||
float fOldestTimeAllowed = TIMER->GetTimeSinceStart() - fMaxSecondsBack;
|
||||
|
||||
int sequence_index = iNumButtons-1; // count down
|
||||
for( int queue_index=m_aQueue[p].GetSize()-1; queue_index>=0; queue_index-- ) // iterate newest to oldest
|
||||
{
|
||||
MenuButtonAndTime BandT = m_aQueue[p][queue_index];
|
||||
if( BandT.button != button_sequence[sequence_index] ||
|
||||
BandT.fTime < fOldestTimeAllowed )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if( sequence_index == 0 ) // we matched the whole pattern
|
||||
{
|
||||
m_aQueue[p].RemoveAll(); // empty the queue so we don't match on it again
|
||||
return true;
|
||||
}
|
||||
sequence_index--;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -18,43 +18,11 @@ const int MAX_INPUT_QUEUE_LENGTH = 8;
|
||||
class InputQueue
|
||||
{
|
||||
public:
|
||||
InputQueue()
|
||||
{
|
||||
for( int p=0; p<NUM_PLAYERS; p++ )
|
||||
m_aQueue[p].SetSize( MAX_INPUT_QUEUE_LENGTH );
|
||||
}
|
||||
InputQueue();
|
||||
|
||||
void HandleInput( const PlayerNumber p, const MenuButton b )
|
||||
{
|
||||
if( m_aQueue[p].GetSize() >= MAX_INPUT_QUEUE_LENGTH ) // full
|
||||
m_aQueue[p].RemoveAt( 0, m_aQueue[p].GetSize()-MAX_INPUT_QUEUE_LENGTH+1 );
|
||||
m_aQueue[p].Add( MenuButtonAndTime(b,TIMER->GetTimeSinceStart()) );
|
||||
};
|
||||
bool MatchesPattern( const PlayerNumber p, const MenuButton* button_sequence, const int iNumButtons, float fMaxSecondsBack = -1 )
|
||||
{
|
||||
if( fMaxSecondsBack == -1 )
|
||||
fMaxSecondsBack = 0.4f + iNumButtons*0.15f;
|
||||
void HandleInput( const PlayerNumber p, const MenuButton b );
|
||||
bool MatchesPattern( const PlayerNumber p, const MenuButton* button_sequence, const int iNumButtons, float fMaxSecondsBack = -1 );
|
||||
|
||||
float fOldestTimeAllowed = TIMER->GetTimeSinceStart() - fMaxSecondsBack;
|
||||
|
||||
int sequence_index = iNumButtons-1; // count down
|
||||
for( int queue_index=m_aQueue[p].GetSize()-1; queue_index>=0; queue_index-- ) // iterate newest to oldest
|
||||
{
|
||||
MenuButtonAndTime BandT = m_aQueue[p][queue_index];
|
||||
if( BandT.button != button_sequence[sequence_index] ||
|
||||
BandT.fTime < fOldestTimeAllowed )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if( sequence_index == 0 ) // we matched the whole pattern
|
||||
{
|
||||
m_aQueue[p].RemoveAll(); // empty the queue so we don't match on it again
|
||||
return true;
|
||||
}
|
||||
sequence_index--;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
protected:
|
||||
struct MenuButtonAndTime
|
||||
|
||||
@@ -60,7 +60,7 @@ void Judgement::SetJudgement( TapNoteScore score )
|
||||
default: ASSERT( false );
|
||||
}
|
||||
|
||||
if ( GAMESTATE->GetCurGame() == GAME_EZ2 ) // Resize Judgement graphics for Ez2.
|
||||
if ( GAMESTATE->m_CurGame == GAME_EZ2 ) // Resize Judgement graphics for Ez2.
|
||||
{
|
||||
m_sprJudgement.SetHeight( 22.0f * 2.1f );
|
||||
m_sprJudgement.SetWidth( 143.0f * 2.1f );
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
|
||||
#include "GameConstantsAndTypes.h"
|
||||
#include "ActorFrame.h"
|
||||
#include "PlayerOptions.h"
|
||||
|
||||
|
||||
class Song;
|
||||
|
||||
@@ -12,6 +12,9 @@
|
||||
|
||||
#include "LifeMeterBar.h"
|
||||
#include "PrefsManager.h"
|
||||
#include "RageException.h"
|
||||
#include "RageTimer.h"
|
||||
#include "GameState.h"
|
||||
|
||||
const int NUM_LIFE_STREAM_SECTIONS = 3;
|
||||
const float LIFE_STREAM_SECTION_WIDTH = 1.0f/NUM_LIFE_STREAM_SECTIONS;
|
||||
@@ -67,9 +70,9 @@ void LifeMeterBar::ChangeLife( TapNoteScore score )
|
||||
bool bWasHot = IsHot();
|
||||
|
||||
float fDeltaLife;
|
||||
switch( m_PlayerOptions.m_DrainType )
|
||||
switch( GAMESTATE->m_SongOptions.m_DrainType )
|
||||
{
|
||||
case PlayerOptions::DRAIN_NORMAL:
|
||||
case SongOptions::DRAIN_NORMAL:
|
||||
switch( score )
|
||||
{
|
||||
case TNS_PERFECT: fDeltaLife = +0.008f; break;
|
||||
@@ -81,7 +84,7 @@ void LifeMeterBar::ChangeLife( TapNoteScore score )
|
||||
if( IsHot() && score < TNS_GOOD )
|
||||
fDeltaLife = -0.10f; // make it take a while to get back to "doing great"
|
||||
break;
|
||||
case PlayerOptions::DRAIN_NO_RECOVER:
|
||||
case SongOptions::DRAIN_NO_RECOVER:
|
||||
switch( score )
|
||||
{
|
||||
case TNS_PERFECT: fDeltaLife = +0.000f; break;
|
||||
@@ -91,7 +94,7 @@ void LifeMeterBar::ChangeLife( TapNoteScore score )
|
||||
case TNS_MISS: fDeltaLife = -0.080f; break;
|
||||
}
|
||||
break;
|
||||
case PlayerOptions::DRAIN_SUDDEN_DEATH:
|
||||
case SongOptions::DRAIN_SUDDEN_DEATH:
|
||||
fDeltaLife = -1;
|
||||
break;
|
||||
}
|
||||
@@ -181,6 +184,11 @@ void LifeMeterBar::DrawPrimitives()
|
||||
float fPercentRed = IsInDanger() ? sinf( TIMER->GetTimeSinceStart()*D3DX_PI*4 )/2+0.5f : 0;
|
||||
m_quadBlackBackground.SetDiffuseColor( D3DXCOLOR(fPercentRed*0.8f,0,0,1) );
|
||||
|
||||
if( !GAMESTATE->IsPlayerEnabled(m_PlayerNumber) )
|
||||
{
|
||||
m_sprStreamNormal.SetDiffuseColor( D3DXCOLOR(1,1,1,0) );
|
||||
m_sprStreamHot.SetDiffuseColor( D3DXCOLOR(1,1,1,0) );
|
||||
}
|
||||
ActorFrame::DrawPrimitives();
|
||||
}
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ LifeMeterBattery::LifeMeterBattery()
|
||||
m_textPercent.Load( THEME->GetPathTo(FONT_SCORE_NUMBERS) );
|
||||
m_textPercent.TurnShadowOff();
|
||||
m_textPercent.SetZoom( 0.7f );
|
||||
m_textPercent.SetText( "0.00" );
|
||||
m_textPercent.SetText( "00.0" );
|
||||
this->AddSubActor( &m_textPercent );
|
||||
|
||||
m_soundGainLife.Load( THEME->GetPathTo(SOUND_GAMEPLAY_ONI_GAIN_LIFE) );
|
||||
@@ -97,8 +97,12 @@ void LifeMeterBattery::ChangeLife( TapNoteScore score )
|
||||
for( int i=0; i<GAMESTATE->m_aGameplayStatistics.GetSize(); i++ )
|
||||
iActualDancePoints += GAMESTATE->m_aGameplayStatistics[i].iActualDancePoints[m_PlayerNumber];
|
||||
int iPossibleDancePoints = GAMESTATE->m_iCoursePossibleDancePoints;
|
||||
float fPercentDancePoints = iActualDancePoints / (float)iPossibleDancePoints + 0.0001f; // correct for rounding errors
|
||||
m_textPercent.SetText( ssprintf("%1.2f", fPercentDancePoints) );
|
||||
float fPercentDancePoints = iActualDancePoints / (float)iPossibleDancePoints + 0.001f; // correct for rounding errors
|
||||
float fNumToDisplay = fPercentDancePoints*100;
|
||||
CString sNumToDisplay = ssprintf("%03.1f", fNumToDisplay);
|
||||
if( sNumToDisplay.GetLength() == 3 )
|
||||
sNumToDisplay = "0" + sNumToDisplay;
|
||||
m_textPercent.SetText( sNumToDisplay );
|
||||
}
|
||||
|
||||
switch( score )
|
||||
|
||||
@@ -91,6 +91,7 @@ void MenuElements::Load( CString sBackgroundPath, CString sTopEdgePath, CString
|
||||
if( !bTimerEnabled || !PREFSMAN->m_bMenuTimer )
|
||||
{
|
||||
m_MenuTimer.SetTimer( 99 );
|
||||
m_MenuTimer.Update( 0 );
|
||||
m_MenuTimer.StopTimer();
|
||||
}
|
||||
else
|
||||
|
||||
@@ -44,7 +44,16 @@ void MenuTimer::Update( float fDeltaTime )
|
||||
ActorFrame::Update( fDeltaTime );
|
||||
|
||||
if( m_bTimerStopped )
|
||||
{
|
||||
m_textDigit1.SetText( ssprintf("%d", ((int)m_fSecondsLeft)/10) );
|
||||
m_textDigit2.SetText( ssprintf("%d", ((int)m_fSecondsLeft)%10) );
|
||||
|
||||
m_textDigit1.SetZoomX( 1 );
|
||||
m_textDigit2.SetZoomX( 1 );
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if( m_fStallSeconds > 0 )
|
||||
{
|
||||
@@ -105,4 +114,5 @@ void MenuTimer::StallTimer()
|
||||
void MenuTimer::SetTimer( int iSeconds )
|
||||
{
|
||||
m_fSecondsLeft = (float)iSeconds;
|
||||
CLAMP( m_fSecondsLeft, 0, 99 );
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ public:
|
||||
{
|
||||
for(int i=0; i<NUM_BLUR_GHOSTS; i++)
|
||||
{
|
||||
m_sprites[i].BeginTweeningQueued( i*0.1f+0.01f, tt ); // delay
|
||||
m_sprites[i].BeginTweeningQueued( i*0.1f+0.01f, tt ); // sleep
|
||||
m_sprites[i].BeginTweeningQueued( time, tt ); // original tween
|
||||
}
|
||||
};
|
||||
|
||||
@@ -14,8 +14,73 @@
|
||||
#include "GameConstantsAndTypes.h"
|
||||
#include "MusicWheel.h"
|
||||
#include "MusicStatusDisplay.h"
|
||||
#include "RageTimer.h"
|
||||
|
||||
|
||||
|
||||
MusicStatusDisplay::MusicStatusDisplay()
|
||||
{
|
||||
Load( THEME->GetPathTo(GRAPHIC_MUSIC_STATUS_ICONS) );
|
||||
StopAnimating();
|
||||
|
||||
SetType( TYPE_NONE );
|
||||
};
|
||||
|
||||
void MusicStatusDisplay::SetType( MusicStatusDisplayType msdt )
|
||||
{
|
||||
m_MusicStatusDisplayType = msdt;
|
||||
|
||||
switch( m_MusicStatusDisplayType )
|
||||
{
|
||||
case TYPE_NEW:
|
||||
m_MusicStatusDisplayType = TYPE_NEW;
|
||||
SetState( 0 );
|
||||
SetDiffuseColor( D3DXCOLOR(1,1,1,1) );
|
||||
break;
|
||||
case TYPE_CROWN1:
|
||||
m_MusicStatusDisplayType = TYPE_CROWN1;
|
||||
SetState( 1 );
|
||||
SetDiffuseColor( D3DXCOLOR(1,1,1,1) );
|
||||
break;
|
||||
case TYPE_CROWN2:
|
||||
m_MusicStatusDisplayType = TYPE_CROWN2;
|
||||
SetState( 2 );
|
||||
SetDiffuseColor( D3DXCOLOR(1,1,1,1) );
|
||||
break;
|
||||
case TYPE_CROWN3:
|
||||
m_MusicStatusDisplayType = TYPE_CROWN3;
|
||||
SetState( 3 );
|
||||
SetDiffuseColor( D3DXCOLOR(1,1,1,1) );
|
||||
break;
|
||||
case TYPE_NONE:
|
||||
default:
|
||||
m_MusicStatusDisplayType = TYPE_NONE;
|
||||
SetDiffuseColor( D3DXCOLOR(0,0,0,0) );
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
void MusicStatusDisplay::Update( float fDeltaTime )
|
||||
{
|
||||
Sprite::Update( fDeltaTime );
|
||||
|
||||
};
|
||||
|
||||
void MusicStatusDisplay::DrawPrimitives()
|
||||
{
|
||||
switch( m_MusicStatusDisplayType )
|
||||
{
|
||||
case TYPE_CROWN1:
|
||||
case TYPE_CROWN2:
|
||||
case TYPE_CROWN3:
|
||||
// blink
|
||||
if( (TIMER->GetTimeSinceStart() - (int)TIMER->GetTimeSinceStart()) > 0.5f ) // show the new icon
|
||||
return;
|
||||
break;
|
||||
case TYPE_NONE:
|
||||
return;
|
||||
break;
|
||||
}
|
||||
|
||||
Sprite::DrawPrimitives();
|
||||
}
|
||||
@@ -1,22 +1,17 @@
|
||||
#pragma once
|
||||
/*
|
||||
-----------------------------------------------------------------------------
|
||||
File: MusicStatusDisplay.h
|
||||
Class: MusicStatusDisplay
|
||||
|
||||
Desc: A graphic displayed in the MusicStatusDisplay during Dancing.
|
||||
Desc: A little graphic to the left of the song's text banner in the MusicWheel.
|
||||
|
||||
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||
Chris Danford
|
||||
-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
class MusicStatusDisplay;
|
||||
|
||||
|
||||
#ifndef _MusicStatusDisplay_H_
|
||||
#define _MusicStatusDisplay_H_
|
||||
|
||||
|
||||
#include "Sprite.h"
|
||||
#include "PrefsManager.h"
|
||||
|
||||
|
||||
enum MusicStatusDisplayType { TYPE_NEW, TYPE_NONE, TYPE_CROWN1, TYPE_CROWN2, TYPE_CROWN3 };
|
||||
@@ -24,77 +19,14 @@ enum MusicStatusDisplayType { TYPE_NEW, TYPE_NONE, TYPE_CROWN1, TYPE_CROWN2, TYP
|
||||
class MusicStatusDisplay : public Sprite
|
||||
{
|
||||
public:
|
||||
MusicStatusDisplay()
|
||||
{
|
||||
Load( THEME->GetPathTo(GRAPHIC_MUSIC_STATUS_ICONS) );
|
||||
StopAnimating();
|
||||
MusicStatusDisplay();
|
||||
|
||||
SetType( TYPE_NONE );
|
||||
};
|
||||
void SetType( MusicStatusDisplayType msdt );
|
||||
|
||||
void SetType( MusicStatusDisplayType msdt )
|
||||
{
|
||||
m_MusicStatusDisplayType = msdt;
|
||||
|
||||
switch( m_MusicStatusDisplayType )
|
||||
{
|
||||
case TYPE_NEW:
|
||||
m_MusicStatusDisplayType = TYPE_NEW;
|
||||
SetState( 0 );
|
||||
SetDiffuseColor( D3DXCOLOR(1,1,1,1) );
|
||||
break;
|
||||
case TYPE_CROWN1:
|
||||
m_MusicStatusDisplayType = TYPE_CROWN1;
|
||||
SetState( 1 );
|
||||
SetDiffuseColor( D3DXCOLOR(1,1,1,1) );
|
||||
break;
|
||||
case TYPE_CROWN2:
|
||||
m_MusicStatusDisplayType = TYPE_CROWN2;
|
||||
SetState( 2 );
|
||||
SetDiffuseColor( D3DXCOLOR(1,1,1,1) );
|
||||
break;
|
||||
case TYPE_CROWN3:
|
||||
m_MusicStatusDisplayType = TYPE_CROWN3;
|
||||
SetState( 3 );
|
||||
SetDiffuseColor( D3DXCOLOR(1,1,1,1) );
|
||||
break;
|
||||
case TYPE_NONE:
|
||||
default:
|
||||
m_MusicStatusDisplayType = TYPE_NONE;
|
||||
SetDiffuseColor( D3DXCOLOR(0,0,0,0) );
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
virtual void Update( float fDeltaTime )
|
||||
{
|
||||
Sprite::Update( fDeltaTime );
|
||||
|
||||
};
|
||||
|
||||
virtual void DrawPrimitives()
|
||||
{
|
||||
switch( m_MusicStatusDisplayType )
|
||||
{
|
||||
case TYPE_CROWN1:
|
||||
case TYPE_CROWN2:
|
||||
case TYPE_CROWN3:
|
||||
// blink
|
||||
if( (TIMER->GetTimeSinceStart() - (int)TIMER->GetTimeSinceStart()) > 0.5f ) // show the new icon
|
||||
return;
|
||||
break;
|
||||
case TYPE_NONE:
|
||||
return;
|
||||
break;
|
||||
}
|
||||
|
||||
Sprite::DrawPrimitives();
|
||||
}
|
||||
virtual void Update( float fDeltaTime );
|
||||
virtual void DrawPrimitives();
|
||||
|
||||
protected:
|
||||
|
||||
enum MusicStatusDisplayType m_MusicStatusDisplayType;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
@@ -66,13 +66,8 @@ inline D3DXCOLOR GetNextSectionColor()
|
||||
return SECTION_COLORS[i++];
|
||||
}
|
||||
|
||||
WheelItemData::WheelItemData()
|
||||
{
|
||||
m_pSong = NULL;
|
||||
m_MusicStatusDisplayType = TYPE_NONE;
|
||||
}
|
||||
|
||||
void WheelItemData::Load( WheelItemType wit, Song* pSong, const CString &sSectionName, Course* pCourse, const D3DXCOLOR color )
|
||||
WheelItemData::WheelItemData( WheelItemType wit, Song* pSong, const CString &sSectionName, Course* pCourse, const D3DXCOLOR color )
|
||||
{
|
||||
m_WheelItemType = wit;
|
||||
m_pSong = pSong;
|
||||
@@ -81,6 +76,7 @@ void WheelItemData::Load( WheelItemType wit, Song* pSong, const CString &sSectio
|
||||
m_color = color;
|
||||
}
|
||||
|
||||
|
||||
WheelItemDisplay::WheelItemDisplay()
|
||||
{
|
||||
m_fPercentGray = 0;
|
||||
@@ -442,7 +438,7 @@ void MusicWheel::BuildWheelItemDatas( CArray<WheelItemData, WheelItemData&> &arr
|
||||
}
|
||||
|
||||
|
||||
// sort the SONGMAN
|
||||
// sort the songs
|
||||
switch( so )
|
||||
{
|
||||
case SORT_GROUP:
|
||||
@@ -467,11 +463,9 @@ void MusicWheel::BuildWheelItemDatas( CArray<WheelItemData, WheelItemData&> &arr
|
||||
|
||||
|
||||
///////////////////////////////////
|
||||
// Build an array of WheelItemDatas from the sorted list of Song*
|
||||
// Build an array of WheelItemDatas from the sorted list of Song*s
|
||||
///////////////////////////////////
|
||||
arrayWheelItemDatas.RemoveAll(); // clear out the previous wheel items...
|
||||
|
||||
// ...and load new ones
|
||||
arrayWheelItemDatas.SetSize( 0, 300 ); // clear out the previous wheel items and set large capacity jumps
|
||||
|
||||
bool bUseSections;
|
||||
switch( so )
|
||||
@@ -489,8 +483,6 @@ void MusicWheel::BuildWheelItemDatas( CArray<WheelItemData, WheelItemData&> &arr
|
||||
if( bUseSections )
|
||||
{
|
||||
// make WheelItemDatas with sections
|
||||
arrayWheelItemDatas.SetSize( arraySongs.GetSize()*2 ); // make sure we have enough room for all music and section items
|
||||
|
||||
CString sLastSection = "";
|
||||
D3DXCOLOR colorSection;
|
||||
int iCurWheelItem = 0;
|
||||
@@ -501,41 +493,39 @@ void MusicWheel::BuildWheelItemDatas( CArray<WheelItemData, WheelItemData&> &arr
|
||||
int iSectionColorIndex = 0;
|
||||
if( sThisSection != sLastSection ) // new section, make a section item
|
||||
{
|
||||
WheelItemData &WID = arrayWheelItemDatas[iCurWheelItem++];
|
||||
colorSection = (so==SORT_GROUP) ? SONGMAN->GetGroupColor(pSong->m_sGroupName) : SECTION_COLORS[iSectionColorIndex];
|
||||
iSectionColorIndex = (iSectionColorIndex+1) % NUM_SECTION_COLORS;
|
||||
WID.Load( TYPE_SECTION, NULL, sThisSection, NULL, colorSection );
|
||||
arrayWheelItemDatas.Add( WheelItemData(TYPE_SECTION, NULL, sThisSection, NULL, colorSection) );
|
||||
sLastSection = sThisSection;
|
||||
}
|
||||
|
||||
WheelItemData &WID = arrayWheelItemDatas[iCurWheelItem++];
|
||||
WID.Load( TYPE_SONG, pSong, sThisSection, NULL, SONGMAN->GetGroupColor(pSong->m_sGroupName) );
|
||||
arrayWheelItemDatas.Add( WheelItemData( TYPE_SONG, pSong, sThisSection, NULL, SONGMAN->GetGroupColor(pSong->m_sGroupName)) );
|
||||
}
|
||||
arrayWheelItemDatas.SetSize( iCurWheelItem ); // make sure we have enough room for all music and section items
|
||||
}
|
||||
else
|
||||
{
|
||||
arrayWheelItemDatas.SetSize( arraySongs.GetSize() );
|
||||
for( int i=0; i<arraySongs.GetSize(); i++ )
|
||||
{
|
||||
for( int i=0; i<arraySongs.GetSize(); i++ )
|
||||
{
|
||||
Song* pSong = arraySongs[i];
|
||||
WheelItemData &WID = arrayWheelItemDatas[i];
|
||||
WID.Load( TYPE_SONG, pSong, "", NULL, SONGMAN->GetGroupColor(pSong->m_sGroupName) );
|
||||
}
|
||||
Song* pSong = arraySongs[i];
|
||||
if( bRoulette && GAMESTATE->m_sPreferredGroup != "ALL MUSIC" && pSong->m_sGroupName != GAMESTATE->m_sPreferredGroup )
|
||||
continue; // skip
|
||||
arrayWheelItemDatas.Add( WheelItemData(TYPE_SONG, pSong, "", NULL, SONGMAN->GetGroupColor(pSong->m_sGroupName)) );
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case PLAY_MODE_ONI:
|
||||
{
|
||||
arrayWheelItemDatas.SetSize( 0, 20 ); // clear out the previous wheel items...
|
||||
for( int c=0; c<SONGMAN->m_aCourses.GetSize(); c++ ) // foreach course
|
||||
CArray<Course*,Course*> apCourses;
|
||||
for( int i=0; i<SONGMAN->m_aCourses.GetSize(); i++ )
|
||||
apCourses.Add( &SONGMAN->m_aCourses[i] );
|
||||
|
||||
SortCoursePointerArrayByDifficulty( apCourses );
|
||||
|
||||
for( int c=0; c<apCourses.GetSize(); c++ ) // foreach course
|
||||
{
|
||||
Course* pCourse = &SONGMAN->m_aCourses[c];
|
||||
arrayWheelItemDatas.Add( WheelItemData() );
|
||||
WheelItemData &WID = arrayWheelItemDatas[arrayWheelItemDatas.GetSize()-1];
|
||||
WID.Load( TYPE_COURSE, NULL, "", pCourse, D3DXCOLOR(1,1,1,1) );
|
||||
Course* pCourse = apCourses[c];
|
||||
arrayWheelItemDatas.Add( WheelItemData(TYPE_COURSE, NULL, "", pCourse, pCourse->GetColor()) );
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -566,13 +556,11 @@ void MusicWheel::BuildWheelItemDatas( CArray<WheelItemData, WheelItemData&> &arr
|
||||
|
||||
if( arrayWheelItemDatas.GetSize() == 0 )
|
||||
{
|
||||
arrayWheelItemDatas.SetSize( 1 );
|
||||
arrayWheelItemDatas[0].Load( TYPE_SECTION, NULL, "NO SONGS", NULL, D3DXCOLOR(1,0,0,1) );
|
||||
arrayWheelItemDatas.Add( WheelItemData(TYPE_SECTION, NULL, "EMPTY", NULL, D3DXCOLOR(1,0,0,1)) );
|
||||
}
|
||||
else if( GAMESTATE->m_PlayMode == PLAY_MODE_ARCADE && !bRoulette )
|
||||
{
|
||||
arrayWheelItemDatas.SetSize( arrayWheelItemDatas.GetSize()+1 );
|
||||
arrayWheelItemDatas[arrayWheelItemDatas.GetSize()-1].Load( TYPE_ROULETTE, NULL, "", NULL, D3DXCOLOR(1,0,0,1) );
|
||||
arrayWheelItemDatas.Add( WheelItemData(TYPE_ROULETTE, NULL, "", NULL, D3DXCOLOR(1,0,0,1)) );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -937,8 +925,6 @@ void MusicWheel::PrevMusic( bool bSendSongChangedMessage )
|
||||
return; // don't fall through
|
||||
}
|
||||
|
||||
MUSIC->Stop();
|
||||
|
||||
// decrement m_iSelection
|
||||
do
|
||||
{
|
||||
@@ -985,7 +971,6 @@ void MusicWheel::NextMusic( bool bSendSongChangedMessage )
|
||||
return; // don't continue
|
||||
}
|
||||
|
||||
MUSIC->Stop();
|
||||
|
||||
// increment m_iSelection
|
||||
do
|
||||
@@ -1024,8 +1009,6 @@ void MusicWheel::NextSort()
|
||||
return; // don't continue
|
||||
}
|
||||
|
||||
MUSIC->Stop();
|
||||
|
||||
m_soundChangeSort.Play();
|
||||
m_MusicSortDisplay.BeginTweening( FADE_TIME, TWEEN_BIAS_END );
|
||||
m_MusicSortDisplay.SetTweenXY( SORT_ICON_OFF_SCREEN_X, SORT_ICON_OFF_SCREEN_Y );
|
||||
|
||||
@@ -41,9 +41,8 @@ enum WheelItemType { TYPE_SECTION, TYPE_SONG, TYPE_ROULETTE, TYPE_COURSE };
|
||||
struct WheelItemData
|
||||
{
|
||||
public:
|
||||
WheelItemData();
|
||||
|
||||
void Load( WheelItemType wit, Song* pSong, const CString &sSectionName, Course* pCourse, const D3DXCOLOR color );
|
||||
WheelItemData() {}; // this is needed to use a CArray of these
|
||||
WheelItemData( WheelItemType wit, Song* pSong, const CString &sSectionName, Course* pCourse, const D3DXCOLOR color );
|
||||
|
||||
WheelItemType m_WheelItemType;
|
||||
CString m_sSectionName;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#include "stdafx.h"
|
||||
/*
|
||||
-----------------------------------------------------------------------------
|
||||
File: NoteData.cpp
|
||||
Class: NoteData
|
||||
|
||||
Desc: See header.
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include "ArrowEffects.h"
|
||||
#include "PrefsManager.h"
|
||||
#include "GameConstantsAndTypes.h"
|
||||
#include "RageException.h"
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
*/
|
||||
|
||||
#include "GameConstantsAndTypes.h"
|
||||
#include "PlayerOptions.h"
|
||||
|
||||
// '1' = tap note
|
||||
// '2' = hold note begin
|
||||
|
||||
@@ -18,6 +18,9 @@
|
||||
#include "PrefsManager.h"
|
||||
#include "GameManager.h"
|
||||
#include "GameState.h"
|
||||
#include "RageException.h"
|
||||
#include "RageTimer.h"
|
||||
|
||||
|
||||
const float HOLD_NOTE_BITS_PER_BEAT = 6;
|
||||
const float HOLD_NOTE_BITS_PER_ROW = HOLD_NOTE_BITS_PER_BEAT / ELEMENTS_PER_BEAT;
|
||||
@@ -41,11 +44,11 @@ NoteField::NoteField()
|
||||
}
|
||||
|
||||
|
||||
void NoteField::Load( NoteData* pNoteData, PlayerNumber p, StyleDef* pStyleDef, PlayerOptions po, float fNumBeatsToDrawBehind, float fNumBeatsToDrawAhead, NoteFieldMode mode )
|
||||
void NoteField::Load( NoteData* pNoteData, PlayerNumber p, StyleDef* pStyleDef, PlayerOptions po, int iPixelsToDrawBehind, int iPixelsToDrawAhead, NoteFieldMode mode )
|
||||
{
|
||||
m_PlayerOptions = po;
|
||||
m_fNumBeatsToDrawBehind = fNumBeatsToDrawBehind;
|
||||
m_fNumBeatsToDrawAhead = fNumBeatsToDrawAhead;
|
||||
m_iPixelsToDrawBehind = iPixelsToDrawBehind;
|
||||
m_iPixelsToDrawAhead = iPixelsToDrawAhead;
|
||||
m_Mode = mode;
|
||||
|
||||
this->CopyAll( pNoteData );
|
||||
@@ -56,8 +59,7 @@ void NoteField::Load( NoteData* pNoteData, PlayerNumber p, StyleDef* pStyleDef,
|
||||
CArray<D3DXCOLOR,D3DXCOLOR> arrayTweenColors;
|
||||
GAMEMAN->GetTweenColors( c, arrayTweenColors );
|
||||
|
||||
m_ColorNote[c].m_sprColorPart.Load( GAMEMAN->GetPathTo(c, GRAPHIC_NOTE_COLOR_PART) );
|
||||
m_ColorNote[c].m_sprGrayPart.Load( GAMEMAN->GetPathTo(c, GRAPHIC_NOTE_GRAY_PART) );
|
||||
m_ColorNote[c].Load( c, p );
|
||||
}
|
||||
|
||||
|
||||
@@ -194,9 +196,10 @@ void NoteField::DrawPrimitives()
|
||||
|
||||
int iBaseFrameNo = (int)(m_fSongBeat*2.5) % NUM_FRAMES_IN_COLOR_ARROW_SPRITE; // 2.5 is a "fudge number" :-) This should be based on BPM
|
||||
|
||||
int iIndexFirstArrowToDraw = BeatToNoteRow( m_fSongBeat - m_fNumBeatsToDrawBehind ); // 2 beats earlier
|
||||
if( iIndexFirstArrowToDraw < 0 ) iIndexFirstArrowToDraw = 0;
|
||||
int iIndexLastArrowToDraw = BeatToNoteRow( m_fSongBeat + m_fNumBeatsToDrawAhead ); // 7 beats later
|
||||
const float fBeatsToDrawBehind = m_iPixelsToDrawBehind * (1/(float)ARROW_SIZE) * (1/m_PlayerOptions.m_fArrowScrollSpeed);
|
||||
const float fBeatsToDrawAhead = m_iPixelsToDrawAhead * (1/(float)ARROW_SIZE) * (1/m_PlayerOptions.m_fArrowScrollSpeed);
|
||||
const int iIndexFirstArrowToDraw = max( 0, BeatToNoteRow( m_fSongBeat - fBeatsToDrawBehind ) );
|
||||
const int iIndexLastArrowToDraw = BeatToNoteRow( m_fSongBeat + fBeatsToDrawAhead );
|
||||
|
||||
//LOG->WriteLine( "Drawing elements %d through %d", iIndexFirstArrowToDraw, iIndexLastArrowToDraw );
|
||||
|
||||
@@ -290,7 +293,7 @@ void NoteField::DrawPrimitives()
|
||||
const bool bActive = NoteRowToBeat(hn.m_iStartIndex-1) <= m_fSongBeat && m_fSongBeat <= NoteRowToBeat(hn.m_iEndIndex); // hack: added -1 because hn.m_iStartIndex changes as note is held
|
||||
|
||||
// parts of the hold
|
||||
const float fStartDrawingAtBeat = froundf( (float)hn.m_iStartIndex, ROWS_BETWEEN_HOLD_BITS );
|
||||
const float fStartDrawingAtBeat = froundf( (float)hn.m_iStartIndex, ROWS_BETWEEN_HOLD_BITS/m_PlayerOptions.m_fArrowScrollSpeed );
|
||||
for( float j=fStartDrawingAtBeat;
|
||||
j<=hn.m_iEndIndex;
|
||||
j+=ROWS_BETWEEN_HOLD_BITS/m_PlayerOptions.m_fArrowScrollSpeed ) // for each bit of the hold
|
||||
|
||||
@@ -37,7 +37,7 @@ public:
|
||||
MODE_EDITING,
|
||||
};
|
||||
|
||||
void Load( NoteData* pNoteData, PlayerNumber p, StyleDef* pStyleDef, PlayerOptions po, float fNumArrowsToDrawBehind, float fNumArrowsToDrawAhead, NoteFieldMode mode );
|
||||
void Load( NoteData* pNoteData, PlayerNumber p, StyleDef* pStyleDef, PlayerOptions po, int iPixelsToDrawBehind, int iPixelsToDrawAhead, NoteFieldMode mode );
|
||||
void RemoveTapNoteRow( int iIndex );
|
||||
void SetHoldNoteLife( int iIndex, float fLife );
|
||||
|
||||
@@ -57,8 +57,8 @@ protected:
|
||||
|
||||
PlayerOptions m_PlayerOptions;
|
||||
|
||||
float m_fNumBeatsToDrawBehind;
|
||||
float m_fNumBeatsToDrawAhead;
|
||||
int m_iPixelsToDrawBehind;
|
||||
int m_iPixelsToDrawAhead;
|
||||
|
||||
float m_fSongBeat;
|
||||
|
||||
|
||||
+11
-9
@@ -3,10 +3,10 @@
|
||||
-----------------------------------------------------------------------------
|
||||
Class: Notes
|
||||
|
||||
Desc: Hold Notes data and metadata. Does not hold gameplay-time information,
|
||||
like keeping track of which Notes have been stepped on (PlayerSteps does that).
|
||||
Desc: See header.
|
||||
|
||||
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||
Chris Danford
|
||||
-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include "NoteData.h"
|
||||
|
||||
#include "GameInput.h"
|
||||
#include "RageException.h"
|
||||
|
||||
|
||||
typedef int DanceNote;
|
||||
@@ -305,7 +306,7 @@ bool Notes::LoadFromBMSFile( const CString &sPath )
|
||||
|
||||
|
||||
|
||||
void DWIcharToNote( char c, InstrumentNumber i, DanceNote ¬e1Out, DanceNote ¬e2Out )
|
||||
void DWIcharToNote( char c, GameController i, DanceNote ¬e1Out, DanceNote ¬e2Out )
|
||||
{
|
||||
switch( c )
|
||||
{
|
||||
@@ -337,9 +338,9 @@ void DWIcharToNote( char c, InstrumentNumber i, DanceNote ¬e1Out, DanceNote &
|
||||
|
||||
switch( i )
|
||||
{
|
||||
case INSTRUMENT_1:
|
||||
case GAME_CONTROLLER_1:
|
||||
break;
|
||||
case INSTRUMENT_2:
|
||||
case GAME_CONTROLLER_2:
|
||||
if( note1Out != DANCE_NOTE_NONE )
|
||||
note1Out += 6;
|
||||
if( note2Out != DANCE_NOTE_NONE )
|
||||
@@ -474,7 +475,7 @@ bool Notes::LoadFromDWITokens(
|
||||
char holdChar = sStepData[i++];
|
||||
|
||||
DanceNote note1, note2;
|
||||
DWIcharToNote( holdChar, (InstrumentNumber)pad, note1, note2 );
|
||||
DWIcharToNote( holdChar, (GameController)pad, note1, note2 );
|
||||
|
||||
if( note1 != DANCE_NOTE_NONE )
|
||||
{
|
||||
@@ -493,7 +494,7 @@ bool Notes::LoadFromDWITokens(
|
||||
int iIndex = BeatToNoteRow( (float)fCurrentBeat );
|
||||
|
||||
DanceNote note1, note2;
|
||||
DWIcharToNote( c, (InstrumentNumber)pad, note1, note2 );
|
||||
DWIcharToNote( c, (GameController)pad, note1, note2 );
|
||||
|
||||
if( note1 != DANCE_NOTE_NONE )
|
||||
{
|
||||
@@ -610,7 +611,8 @@ DifficultyClass Notes::DifficultyClassFromDescriptionAndMeter( CString sDescript
|
||||
{
|
||||
sDescription.MakeLower();
|
||||
|
||||
const CString sDescriptionParts[NUM_DIFFICULTY_CLASSES][4] = {
|
||||
const int DESCRIPTIONS_PER_CLASS = 4;
|
||||
const CString sDescriptionParts[NUM_DIFFICULTY_CLASSES][DESCRIPTIONS_PER_CLASS] = {
|
||||
{
|
||||
"easy",
|
||||
"basic",
|
||||
@@ -632,7 +634,7 @@ DifficultyClass Notes::DifficultyClassFromDescriptionAndMeter( CString sDescript
|
||||
};
|
||||
|
||||
for( int i=0; i<NUM_DIFFICULTY_CLASSES; i++ )
|
||||
for( int j=0; j<3; j++ )
|
||||
for( int j=0; j<DESCRIPTIONS_PER_CLASS; j++ )
|
||||
if( sDescription.Find(sDescriptionParts[i][j]) != -1 )
|
||||
return DifficultyClass(i);
|
||||
|
||||
|
||||
+32
-13
@@ -82,7 +82,15 @@ void Player::Load( PlayerNumber player_no, StyleDef* pStyleDef, NoteData* pNoteD
|
||||
if( po.m_bLittle )
|
||||
this->MakeLittle();
|
||||
|
||||
m_NoteField.Load( (NoteData*)this, player_no, pStyleDef, po, 1.5f, 5.5f, NoteField::MODE_DANCING );
|
||||
int iPixelsToDrawBefore = 64;
|
||||
int iPixelsToDrawAfter = 320;
|
||||
switch( po.m_EffectType )
|
||||
{
|
||||
case PlayerOptions::EFFECT_MINI: iPixelsToDrawBefore *= 2; iPixelsToDrawAfter *= 2; break;
|
||||
case PlayerOptions::EFFECT_SPACE: iPixelsToDrawBefore *= 2; iPixelsToDrawAfter *= 2; break;
|
||||
}
|
||||
|
||||
m_NoteField.Load( (NoteData*)this, player_no, pStyleDef, po, iPixelsToDrawBefore, iPixelsToDrawAfter, NoteField::MODE_DANCING );
|
||||
|
||||
m_GrayArrowRow.Load( player_no, pStyleDef, po );
|
||||
m_GhostArrowRow.Load( player_no, pStyleDef, po );
|
||||
@@ -100,6 +108,13 @@ void Player::Load( PlayerNumber player_no, StyleDef* pStyleDef, NoteData* pNoteD
|
||||
m_NoteField.SetY( po.m_bReverseScroll ? SCREEN_HEIGHT - ARROWS_Y : ARROWS_Y );
|
||||
m_GrayArrowRow.SetY( po.m_bReverseScroll ? SCREEN_HEIGHT - ARROWS_Y : ARROWS_Y );
|
||||
m_GhostArrowRow.SetY( po.m_bReverseScroll ? SCREEN_HEIGHT - ARROWS_Y : ARROWS_Y );
|
||||
|
||||
if( po.m_EffectType == PlayerOptions::EFFECT_MINI )
|
||||
{
|
||||
m_NoteField.SetZoom( 0.5f );
|
||||
m_GrayArrowRow.SetZoom( 0.5f );
|
||||
m_GhostArrowRow.SetZoom( 0.5f );
|
||||
}
|
||||
}
|
||||
|
||||
void Player::Update( float fDeltaTime, float fSongBeat, float fMaxBeatDifference )
|
||||
@@ -205,10 +220,6 @@ void Player::DrawPrimitives()
|
||||
|
||||
if( m_PlayerOptions.m_EffectType == PlayerOptions::EFFECT_SPACE )
|
||||
{
|
||||
// turn off Z Buffering
|
||||
DISPLAY->GetDevice()->SetRenderState( D3DRS_ZENABLE, FALSE );
|
||||
DISPLAY->GetDevice()->SetRenderState( D3DRS_ZWRITEENABLE, FALSE );
|
||||
|
||||
// save old view and projection
|
||||
DISPLAY->GetDevice()->GetTransform( D3DTS_VIEW, &matOldView );
|
||||
DISPLAY->GetDevice()->GetTransform( D3DTS_PROJECTION, &matOldProj );
|
||||
@@ -216,10 +227,21 @@ void Player::DrawPrimitives()
|
||||
|
||||
// construct view and project matrix
|
||||
D3DXMATRIX matNewView;
|
||||
D3DXMatrixLookAtLH( &matNewView, &D3DXVECTOR3( CENTER_X, GetY()+800.0f, 300.0f ),
|
||||
&D3DXVECTOR3( CENTER_X
|
||||
, GetY()+400.0f, 0.0f ),
|
||||
&D3DXVECTOR3( 0.0f, -1.0f, 0.0f ) );
|
||||
if( m_PlayerOptions.m_bReverseScroll )
|
||||
D3DXMatrixLookAtLH(
|
||||
&matNewView,
|
||||
&D3DXVECTOR3( CENTER_X, GetY()-300.0f, 400.0f ),
|
||||
&D3DXVECTOR3( CENTER_X, GetY()+100.0f, 0.0f ),
|
||||
&D3DXVECTOR3( 0.0f, -1.0f, 0.0f )
|
||||
);
|
||||
else
|
||||
D3DXMatrixLookAtLH(
|
||||
&matNewView,
|
||||
&D3DXVECTOR3( CENTER_X, GetY()+800.0f, 400.0f ),
|
||||
&D3DXVECTOR3( CENTER_X, GetY()+400.0f, 0.0f ),
|
||||
&D3DXVECTOR3( 0.0f, -1.0f, 0.0f )
|
||||
);
|
||||
|
||||
DISPLAY->GetDevice()->SetTransform( D3DTS_VIEW, &matNewView );
|
||||
|
||||
D3DXMATRIX matNewProj;
|
||||
@@ -238,10 +260,6 @@ void Player::DrawPrimitives()
|
||||
// restire old view and projection
|
||||
DISPLAY->GetDevice()->SetTransform( D3DTS_VIEW, &matOldView );
|
||||
DISPLAY->GetDevice()->SetTransform( D3DTS_PROJECTION, &matOldProj );
|
||||
|
||||
// turn Z Buffering back on
|
||||
DISPLAY->GetDevice()->SetRenderState( D3DRS_ZENABLE, TRUE );
|
||||
DISPLAY->GetDevice()->SetRenderState( D3DRS_ZWRITEENABLE, TRUE );
|
||||
}
|
||||
|
||||
m_frameJudgement.Draw();
|
||||
@@ -367,6 +385,7 @@ void Player::OnRowDestroyed( float fSongBeat, int col, float fMaxBeatDiff, int i
|
||||
m_pScore->AddToScore( score, m_Combo.GetCurrentCombo() ); // update score - called once per note in this row
|
||||
|
||||
// update dance points for Oni lifemeter
|
||||
if( GAMESTATE->m_aGameplayStatistics.GetSize() > 0 )
|
||||
GAMESTATE->GetLatestGameplayStatistics().iActualDancePoints[m_PlayerNumber] += TapNoteScoreToDancePoints( score );
|
||||
|
||||
// update combo - called once per note in this row
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
#include "stdafx.h"
|
||||
/*
|
||||
-----------------------------------------------------------------------------
|
||||
Class: PlayerOptions
|
||||
|
||||
Desc: See header.
|
||||
|
||||
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||
Chris Danford
|
||||
-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#include "PlayerOptions.h"
|
||||
#include "RageUtil.h"
|
||||
|
||||
|
||||
CString PlayerOptions::GetString()
|
||||
{
|
||||
CString sReturn;
|
||||
if( m_fArrowScrollSpeed != 1 )
|
||||
sReturn += ssprintf( "%2.1fX, ", m_fArrowScrollSpeed );
|
||||
switch( m_EffectType )
|
||||
{
|
||||
case EFFECT_NONE: break;
|
||||
case EFFECT_BOOST: sReturn += "Boost, "; break;
|
||||
case EFFECT_WAVE: sReturn += "Wave, "; break;
|
||||
case EFFECT_DRUNK: sReturn += "Drunk, "; break;
|
||||
case EFFECT_DIZZY: sReturn += "Dizzy, "; break;
|
||||
case EFFECT_SPACE: sReturn += "Space, "; break;
|
||||
case EFFECT_MINI: sReturn += "Mini, "; break;
|
||||
default: ASSERT(0); // invalid EFFECT
|
||||
}
|
||||
switch( m_AppearanceType )
|
||||
{
|
||||
case APPEARANCE_VISIBLE: break;
|
||||
case APPEARANCE_HIDDEN: sReturn += "Hidden, "; break;
|
||||
case APPEARANCE_SUDDEN: sReturn += "Sudden, "; break;
|
||||
case APPEARANCE_STEALTH: sReturn += "Stealth, "; break;
|
||||
default: ASSERT(0); // invalid EFFECT
|
||||
}
|
||||
switch( m_TurnType )
|
||||
{
|
||||
case TURN_NONE: break;
|
||||
case TURN_MIRROR: sReturn += "Mirror, "; break;
|
||||
case TURN_LEFT: sReturn += "Left, "; break;
|
||||
case TURN_RIGHT: sReturn += "Right, "; break;
|
||||
case TURN_SHUFFLE: sReturn += "Shuffle, "; break;
|
||||
default: ASSERT(0); // invalid EFFECT
|
||||
}
|
||||
if( m_bLittle )
|
||||
sReturn += "Little, ";
|
||||
if( m_bReverseScroll )
|
||||
sReturn += "Reverse, ";
|
||||
|
||||
if( sReturn.GetLength() > 2 )
|
||||
sReturn.Delete( sReturn.GetLength()-2, 2 ); // delete the trailing ", "
|
||||
return sReturn;
|
||||
}
|
||||
|
||||
void PlayerOptions::FromString( CString sOptions )
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
#pragma once
|
||||
/*
|
||||
-----------------------------------------------------------------------------
|
||||
Class: PlayerOptions
|
||||
|
||||
Desc: Per-player options that are not saved between sessions.
|
||||
|
||||
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||
Chris Danford
|
||||
-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
struct PlayerOptions
|
||||
{
|
||||
float m_fArrowScrollSpeed;
|
||||
enum EffectType { EFFECT_NONE=0, EFFECT_BOOST, EFFECT_WAVE, EFFECT_DRUNK, EFFECT_DIZZY, EFFECT_SPACE, EFFECT_MINI };
|
||||
EffectType m_EffectType;
|
||||
enum AppearanceType { APPEARANCE_VISIBLE=0, APPEARANCE_HIDDEN, APPEARANCE_SUDDEN, APPEARANCE_STEALTH };
|
||||
AppearanceType m_AppearanceType;
|
||||
enum TurnType { TURN_NONE=0, TURN_MIRROR, TURN_LEFT, TURN_RIGHT, TURN_SHUFFLE };
|
||||
TurnType m_TurnType;
|
||||
bool m_bLittle;
|
||||
bool m_bReverseScroll;
|
||||
enum ColorType { COLOR_ARCADE=0, COLOR_NOTE, COLOR_FLAT, COLOR_PLAIN };
|
||||
ColorType m_ColorType;
|
||||
bool m_bHoldNotes;
|
||||
bool m_bDark;
|
||||
|
||||
PlayerOptions()
|
||||
{
|
||||
m_fArrowScrollSpeed = 1.0f;
|
||||
m_EffectType = EFFECT_NONE;
|
||||
m_AppearanceType = APPEARANCE_VISIBLE;
|
||||
m_TurnType = TURN_NONE;
|
||||
m_bLittle = false;
|
||||
m_bReverseScroll = false;
|
||||
m_ColorType = COLOR_ARCADE;
|
||||
m_bHoldNotes = true;
|
||||
m_bDark = false;
|
||||
};
|
||||
CString GetString();
|
||||
void FromString( CString sOptions );
|
||||
};
|
||||
@@ -14,6 +14,7 @@
|
||||
#include "IniFile.h"
|
||||
#include "GameManager.h"
|
||||
#include "GameState.h"
|
||||
#include "RageException.h"
|
||||
|
||||
|
||||
PrefsManager* PREFSMAN = NULL; // global and accessable from anywhere in our program
|
||||
@@ -24,7 +25,7 @@ PrefsManager::PrefsManager()
|
||||
m_bWindowed = false;
|
||||
m_iDisplayResolution = 640;
|
||||
m_iTextureResolution = 512;
|
||||
m_iRefreshRate = 60;
|
||||
m_iRefreshRate = 0;
|
||||
m_bIgnoreJoyAxes = false;
|
||||
m_bShowFPS = false;
|
||||
m_BackgroundMode = BGMODE_ANIMATIONS;
|
||||
@@ -73,7 +74,7 @@ void PrefsManager::ReadGlobalPrefsFromDisk( bool bSwitchToLastPlayedGame )
|
||||
{
|
||||
Game game;
|
||||
if( ini.GetValueI("Options", "Game", (int&)game) )
|
||||
GAMESTATE->SwitchGame( game );
|
||||
GAMESTATE->m_CurGame = game;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -99,7 +100,7 @@ void PrefsManager::SaveGlobalPrefsToDisk()
|
||||
|
||||
ini.SetValue( "Options", "SongFolders", join(",", m_asSongFolders) );
|
||||
|
||||
ini.SetValueI( "Options", "Game", GAMESTATE->GetCurGame() );
|
||||
ini.SetValueI( "Options", "Game", GAMESTATE->m_CurGame );
|
||||
|
||||
ini.WriteFile();
|
||||
}
|
||||
@@ -142,3 +143,19 @@ void PrefsManager::SaveGamePrefsToDisk()
|
||||
|
||||
ini.WriteFile();
|
||||
}
|
||||
|
||||
|
||||
int PrefsManager::GetDisplayHeight()
|
||||
{
|
||||
switch( m_iDisplayResolution )
|
||||
{
|
||||
case 1280: return 1024; break;
|
||||
case 1024: return 768; break;
|
||||
case 800: return 600; break;
|
||||
case 640: return 480; break;
|
||||
case 512: return 384; break;
|
||||
case 400: return 300; break;
|
||||
case 320: return 240; break;
|
||||
default: throw RageException( "Invalid DisplayWidth '%d'", m_iDisplayResolution ); return 480;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ public:
|
||||
bool m_bWindowed;
|
||||
int m_iDisplayResolution;
|
||||
int m_iTextureResolution;
|
||||
int m_iRefreshRate;
|
||||
int m_iRefreshRate; // 0 means 'default'
|
||||
bool m_bIgnoreJoyAxes;
|
||||
bool m_bShowFPS;
|
||||
BackgroundMode m_BackgroundMode;
|
||||
@@ -43,20 +43,7 @@ public:
|
||||
|
||||
CStringArray m_asSongFolders;
|
||||
|
||||
int GetDisplayHeight()
|
||||
{
|
||||
switch( m_iDisplayResolution )
|
||||
{
|
||||
case 1280: return 1024; break;
|
||||
case 1024: return 768; break;
|
||||
case 800: return 600; break;
|
||||
case 640: return 480; break;
|
||||
case 512: return 384; break;
|
||||
case 400: return 300; break;
|
||||
case 320: return 240; break;
|
||||
default: throw RageException( "Invalid DisplayWidth '%d'", m_iDisplayResolution ); return 480;
|
||||
}
|
||||
}
|
||||
int GetDisplayHeight();
|
||||
|
||||
void ReadGlobalPrefsFromDisk( bool bSwitchToLastPlayedGame );
|
||||
void SaveGlobalPrefsToDisk();
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
#include "DXUtil.h"
|
||||
#include "RageUtil.h"
|
||||
#include "RageLog.h"
|
||||
#include "RageException.h"
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
|
||||
#include "RageUtil.h"
|
||||
#include "RageLog.h"
|
||||
#include "RageTimer.h"
|
||||
#include "RageException.h"
|
||||
|
||||
|
||||
RageDisplay* DISPLAY = NULL;
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
#include <dinput.h>
|
||||
#include "RageUtil.h"
|
||||
#include "RageLog.h"
|
||||
#include "RageException.h"
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
#include "DXUtil.h"
|
||||
#include "RageUtil.h"
|
||||
#include "RageLog.h"
|
||||
#include "RageException.h"
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#include "RageSound.h"
|
||||
#include "RageUtil.h"
|
||||
#include "RageLog.h"
|
||||
#include "RageException.h"
|
||||
|
||||
|
||||
#include "bass/bass.h"
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#include "RageMovieTexture.h"
|
||||
#include "RageUtil.h"
|
||||
#include "RageLog.h"
|
||||
#include "RageException.h"
|
||||
|
||||
|
||||
RageTextureManager* TEXTUREMAN = NULL;
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include "Song.h"
|
||||
#include "ActorFrame.h"
|
||||
#include "BitmapText.h"
|
||||
#include "PlayerOptions.h"
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ public:
|
||||
virtual void MenuLeft( const PlayerNumber p, const InputEventType type ) { if( type==IET_FIRST_PRESS) MenuLeft(p); };
|
||||
virtual void MenuRight( const PlayerNumber p, const InputEventType type ) { if( type==IET_FIRST_PRESS) MenuRight(p); };
|
||||
virtual void MenuStart( const PlayerNumber p, const InputEventType type ) { if( type==IET_FIRST_PRESS) MenuStart(p); };
|
||||
virtual void MenuBack( const PlayerNumber p, const InputEventType type ) { if( type==IET_FIRST_PRESS) MenuBack(p); };
|
||||
virtual void MenuBack( const PlayerNumber p, const InputEventType type ) { if( type==IET_SLOW_REPEAT) MenuBack(p); };
|
||||
|
||||
virtual void MenuUp( const PlayerNumber p ) {};
|
||||
virtual void MenuDown( const PlayerNumber p ) {};
|
||||
|
||||
@@ -95,12 +95,12 @@ void ScreenAppearanceOptions::ImportOptions()
|
||||
m_OptionLineData[AO_THEME].iNumOptions = arrayThemeNames.GetSize() + 1;
|
||||
|
||||
for( i=0; i<arrayThemeNames.GetSize(); i++ )
|
||||
strcpy( m_OptionLineData[AO_THEME].szOptionsText[i+1], arrayThemeNames[i] );
|
||||
strcpy( m_OptionLineData[AO_THEME].szOptionsText[i], arrayThemeNames[i] );
|
||||
|
||||
|
||||
// highlight currently selected theme
|
||||
m_iSelectedOption[0][AO_THEME] = -1;
|
||||
for( i=1; i<m_OptionLineData[AO_THEME].iNumOptions; i++ )
|
||||
for( i=0; i<m_OptionLineData[AO_THEME].iNumOptions; i++ )
|
||||
{
|
||||
if( 0==stricmp(m_OptionLineData[AO_THEME].szOptionsText[i], THEME->GetCurThemeName()) )
|
||||
{
|
||||
@@ -161,8 +161,8 @@ void ScreenAppearanceOptions::GoToPrevState()
|
||||
|
||||
void ScreenAppearanceOptions::GoToNextState()
|
||||
{
|
||||
PREFSMAN->SaveGamePrefsToDisk();
|
||||
SCREENMAN->SetNewScreen( new ScreenTitleMenu );
|
||||
PREFSMAN->SaveGlobalPrefsToDisk();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -440,6 +440,7 @@ void ScreenEdit::InputEdit( const DeviceInput& DeviceI, const InputEventType typ
|
||||
|
||||
pNotes->SetNoteData( (NoteData*)&m_NoteFieldEdit );
|
||||
GAMESTATE->m_pCurSong->SaveToSMFile();
|
||||
SOUND->PlayOnceStreamed( THEME->GetPathTo(SOUND_EDIT_SAVE) );
|
||||
}
|
||||
break;
|
||||
case DIK_UP:
|
||||
|
||||
@@ -113,8 +113,8 @@ ScreenEditMenu::ScreenEditMenu()
|
||||
m_Menu.Load(
|
||||
THEME->GetPathTo(GRAPHIC_EDIT_BACKGROUND),
|
||||
THEME->GetPathTo(GRAPHIC_EDIT_TOP_EDGE),
|
||||
ssprintf("%s %s change music START to continue", CString(char(1)), CString(char(2)) ),
|
||||
false, true, 40
|
||||
ssprintf("%c %c change line %c %c change value START to continue", char(3), char(4), char(1), char(2) ),
|
||||
false, false, 40
|
||||
);
|
||||
this->AddSubActor( &m_Menu );
|
||||
|
||||
@@ -173,7 +173,9 @@ void ScreenEditMenu::HandleScreenMessage( const ScreenMessage SM )
|
||||
// Set the current Style, then let ScreenEdit infer the desired
|
||||
// NotesType from that Style.
|
||||
NotesType nt = GetSelectedNotesType();
|
||||
GAMESTATE->m_CurStyle = GAMEMAN->GetStyleThatPlaysNotesType( nt );
|
||||
Style style = GAMEMAN->GetStyleThatPlaysNotesType( nt );
|
||||
GAMESTATE->m_CurStyle = style;
|
||||
GAMESTATE->m_CurGame = StyleToGame(style);
|
||||
|
||||
SCREENMAN->SetNewScreen( new ScreenEdit );
|
||||
break;
|
||||
|
||||
@@ -131,7 +131,7 @@ ScreenEvaluation::ScreenEvaluation( bool bSummary )
|
||||
|
||||
// Andy:
|
||||
// Fake COOL! / GOOD / OOPS for Ez2dancer using the DDR Rankings.
|
||||
if( GAMESTATE->GetCurGame() == GAME_EZ2 )
|
||||
if( GAMESTATE->m_CurGame == GAME_EZ2 )
|
||||
{
|
||||
for( int p=0; p<NUM_PLAYERS; p++ )
|
||||
{
|
||||
@@ -145,7 +145,7 @@ ScreenEvaluation::ScreenEvaluation( bool bSummary )
|
||||
///////////////////////////
|
||||
// Init the song banners depending on m_ResultMode
|
||||
///////////////////////////
|
||||
if( GAMESTATE->GetCurGame() != GAME_EZ2 )
|
||||
if( GAMESTATE->m_CurGame != GAME_EZ2 )
|
||||
{
|
||||
switch( m_ResultMode )
|
||||
{
|
||||
@@ -178,7 +178,7 @@ ScreenEvaluation::ScreenEvaluation( bool bSummary )
|
||||
}
|
||||
break;
|
||||
case RM_ONI:
|
||||
m_BannerWithFrame[0].LoadFromGroup( GAMESTATE->m_sPreferredGroup );
|
||||
m_BannerWithFrame[0].LoadFromCourse( GAMESTATE->m_pCurCourse );
|
||||
m_BannerWithFrame[0].SetXY( BANNER_X, BANNER_Y );
|
||||
this->AddSubActor( &m_BannerWithFrame[0] );
|
||||
break;
|
||||
@@ -201,7 +201,7 @@ ScreenEvaluation::ScreenEvaluation( bool bSummary )
|
||||
|
||||
for( l=0; l<NUM_JUDGE_LINES; l++ )
|
||||
{
|
||||
if (GAMESTATE->GetCurGame() != GAME_EZ2)
|
||||
if (GAMESTATE->m_CurGame != GAME_EZ2)
|
||||
{
|
||||
m_sprJudgeLabels[l].Load( THEME->GetPathTo(GRAPHIC_EVALUATION_JUDGE_LABELS) );
|
||||
m_sprJudgeLabels[l].StopAnimating();
|
||||
@@ -222,23 +222,23 @@ ScreenEvaluation::ScreenEvaluation( bool bSummary )
|
||||
|
||||
// RE-ARRANGE the scoreboard for EZ2Dancer Scoring
|
||||
|
||||
if (l == 0 && GAMESTATE->GetCurGame() == GAME_EZ2) // Change Position For Ez2dancer
|
||||
if (l == 0 && GAMESTATE->m_CurGame == GAME_EZ2) // Change Position For Ez2dancer
|
||||
{
|
||||
m_textJudgeNumbers[l][p].SetXY( JUDGE_NUMBERS_X_EZ2[p], JUDGE_EZ2_COOL_Y);
|
||||
}
|
||||
else if (l == 2 && GAMESTATE->GetCurGame() == GAME_EZ2)
|
||||
else if (l == 2 && GAMESTATE->m_CurGame == GAME_EZ2)
|
||||
{
|
||||
m_textJudgeNumbers[l][p].SetXY( JUDGE_NUMBERS_X_EZ2[p], JUDGE_EZ2_COOL_Y + 55);
|
||||
}
|
||||
else if (l == 4 && GAMESTATE->GetCurGame() == GAME_EZ2)
|
||||
else if (l == 4 && GAMESTATE->m_CurGame == GAME_EZ2)
|
||||
{
|
||||
m_textJudgeNumbers[l][p].SetXY( JUDGE_NUMBERS_X_EZ2[p], JUDGE_EZ2_COOL_Y + 120);
|
||||
}
|
||||
else if ((l == 1 || l == 3 ) && GAMESTATE->GetCurGame() == GAME_EZ2)
|
||||
else if ((l == 1 || l == 3 ) && GAMESTATE->m_CurGame == GAME_EZ2)
|
||||
{
|
||||
m_textJudgeNumbers[l][p].SetZoomX(0); // Hide These Ones
|
||||
}
|
||||
else if (l == 5 && GAMESTATE->GetCurGame() == GAME_EZ2 ) // sneakily use this one for the max combo.
|
||||
else if (l == 5 && GAMESTATE->m_CurGame == GAME_EZ2 ) // sneakily use this one for the max combo.
|
||||
{
|
||||
if (p == PLAYER_1 )
|
||||
{
|
||||
@@ -254,7 +254,7 @@ ScreenEvaluation::ScreenEvaluation( bool bSummary )
|
||||
}
|
||||
}
|
||||
|
||||
if (GAMESTATE->GetCurGame() != GAME_EZ2)
|
||||
if (GAMESTATE->m_CurGame != GAME_EZ2)
|
||||
{
|
||||
m_sprScoreLabel.Load( THEME->GetPathTo(GRAPHIC_EVALUATION_SCORE_LABELS) );
|
||||
m_sprScoreLabel.StopAnimating();
|
||||
@@ -265,7 +265,7 @@ ScreenEvaluation::ScreenEvaluation( bool bSummary )
|
||||
|
||||
for( p=0; p<NUM_PLAYERS; p++ )
|
||||
{
|
||||
if( !GAMESTATE->IsPlayerEnabled( (PlayerNumber)p ) || GAMESTATE->GetCurGame() == GAME_EZ2 )
|
||||
if( !GAMESTATE->IsPlayerEnabled( (PlayerNumber)p ) || GAMESTATE->m_CurGame == GAME_EZ2 )
|
||||
continue; // skip
|
||||
|
||||
m_ScoreDisplay[p].SetXY( SCORE_DISPLAY_X[p], SCORE_Y );
|
||||
@@ -309,7 +309,7 @@ ScreenEvaluation::ScreenEvaluation( bool bSummary )
|
||||
|
||||
// SNEAKY! We take the max combo, and put it into element 5, because Ez2dancer
|
||||
// doesn't care for OK's and plus this text element is already nicely aligned =)
|
||||
if (GAMESTATE->GetCurGame() == GAME_EZ2)
|
||||
if (GAMESTATE->m_CurGame == GAME_EZ2)
|
||||
{
|
||||
m_textJudgeNumbers[5][p].SetText( ssprintf("%4d", totalGS.max_combo[p]) );
|
||||
}
|
||||
@@ -370,7 +370,7 @@ ScreenEvaluation::ScreenEvaluation( bool bSummary )
|
||||
if( !GAMESTATE->IsPlayerEnabled( (PlayerNumber)p ) )
|
||||
continue; // skip
|
||||
|
||||
if ( GAMESTATE->GetCurGame() != GAME_EZ2)
|
||||
if ( GAMESTATE->m_CurGame != GAME_EZ2)
|
||||
{
|
||||
m_sprGradeFrame[p].Load( THEME->GetPathTo(GRAPHIC_EVALUATION_GRADE_FRAME) );
|
||||
m_sprGradeFrame[p].StopAnimating();
|
||||
@@ -401,7 +401,7 @@ ScreenEvaluation::ScreenEvaluation( bool bSummary )
|
||||
break;
|
||||
case RM_ARCADE_STAGE:
|
||||
case RM_ARCADE_SUMMARY:
|
||||
if (GAMESTATE->GetCurGame() != GAME_EZ2 )
|
||||
if (GAMESTATE->m_CurGame != GAME_EZ2 )
|
||||
{
|
||||
m_Grades[p].SetXY( GRADE_X[p], GRADE_Y );
|
||||
m_Grades[p].SetZ( -2 );
|
||||
@@ -430,7 +430,7 @@ ScreenEvaluation::ScreenEvaluation( bool bSummary )
|
||||
break;
|
||||
}
|
||||
|
||||
if ( GAMESTATE->GetCurGame() == GAME_EZ2)
|
||||
if ( GAMESTATE->m_CurGame == GAME_EZ2)
|
||||
continue;
|
||||
|
||||
m_BonusInfoFrame[p].SetXY( BONUS_FRAME_X[p], BONUS_FRAME_Y );
|
||||
@@ -529,7 +529,7 @@ void ScreenEvaluation::TweenOnScreen()
|
||||
|
||||
for( i=0; i<NUM_JUDGE_LINES; i++ )
|
||||
{
|
||||
if (GAMESTATE->GetCurGame() != GAME_EZ2)
|
||||
if (GAMESTATE->m_CurGame != GAME_EZ2)
|
||||
{
|
||||
fOriginalY = m_sprJudgeLabels[i].GetY();
|
||||
m_sprJudgeLabels[i].SetY( fOriginalY + SCREEN_HEIGHT );
|
||||
@@ -548,7 +548,7 @@ void ScreenEvaluation::TweenOnScreen()
|
||||
}
|
||||
}
|
||||
|
||||
if (GAMESTATE->GetCurGame() != GAME_EZ2)
|
||||
if (GAMESTATE->m_CurGame != GAME_EZ2)
|
||||
{
|
||||
|
||||
fOriginalY = m_sprScoreLabel.GetY();
|
||||
@@ -604,7 +604,7 @@ void ScreenEvaluation::TweenOffScreen()
|
||||
|
||||
for( i=0; i<NUM_JUDGE_LINES; i++ )
|
||||
{
|
||||
if (GAMESTATE->GetCurGame() != GAME_EZ2)
|
||||
if (GAMESTATE->m_CurGame != GAME_EZ2)
|
||||
{
|
||||
m_sprJudgeLabels[i].BeginTweeningQueued( MENU_ELEMENTS_TWEEN_TIME, Actor::TWEEN_BIAS_END );
|
||||
m_sprJudgeLabels[i].SetTweenZoomY( 0 );
|
||||
@@ -617,7 +617,7 @@ void ScreenEvaluation::TweenOffScreen()
|
||||
}
|
||||
}
|
||||
|
||||
if (GAMESTATE->GetCurGame() != GAME_EZ2)
|
||||
if (GAMESTATE->m_CurGame != GAME_EZ2)
|
||||
{
|
||||
m_sprScoreLabel.BeginTweeningQueued( MENU_ELEMENTS_TWEEN_TIME, Actor::TWEEN_BIAS_END );
|
||||
m_sprScoreLabel.SetTweenZoomY( 0 );
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
|
||||
#include "Screen.h"
|
||||
#include "Sprite.h"
|
||||
#include "Score.h"
|
||||
#include "RandomStream.h"
|
||||
#include "BitmapText.h"
|
||||
#include "GradeDisplay.h"
|
||||
|
||||
@@ -23,6 +23,8 @@ Andrew Livy
|
||||
#include "AnnouncerManager.h"
|
||||
#include "ScreenEz2SelectStyle.h"
|
||||
#include "GameState.h"
|
||||
#include "RageException.h"
|
||||
#include "RageTimer.h"
|
||||
|
||||
/* Constants */
|
||||
|
||||
|
||||
@@ -28,6 +28,8 @@ and sloppy and err needs cleaning up ;)
|
||||
#include "Background.h"
|
||||
#include "ScreenSelectGroup.h"
|
||||
#include "GameState.h"
|
||||
#include "RageException.h"
|
||||
#include "RageTimer.h"
|
||||
|
||||
/* Constants */
|
||||
|
||||
|
||||
+205
-121
@@ -15,6 +15,7 @@
|
||||
#include "ScreenManager.h"
|
||||
|
||||
#include "ScreenSelectMusic.h"
|
||||
#include "ScreenSelectCourse.h"
|
||||
#include "ScreenEvaluation.h"
|
||||
#include "GameConstantsAndTypes.h"
|
||||
#include "PrefsManager.h"
|
||||
@@ -28,6 +29,7 @@
|
||||
#include "GameState.h"
|
||||
#include "ScoreDisplayNormal.h"
|
||||
#include "ScoreDisplayOni.h"
|
||||
#include "ScreenPrompt.h"
|
||||
|
||||
//
|
||||
// Defines
|
||||
@@ -61,19 +63,19 @@ const float TIME_BETWEEN_DANCING_COMMENTS = 13;
|
||||
// received while STATE_DANCING
|
||||
const ScreenMessage SM_NotesEnded = ScreenMessage(SM_User+102);
|
||||
const ScreenMessage SM_LastNotesEnded = ScreenMessage(SM_User+103);
|
||||
const ScreenMessage SM_LifeIs0 = ScreenMessage(SM_User+104);
|
||||
|
||||
|
||||
// received while STATE_OUTRO
|
||||
const ScreenMessage SM_ShowCleared = ScreenMessage(SM_User+111);
|
||||
const ScreenMessage SM_HideCleared = ScreenMessage(SM_User+112);
|
||||
const ScreenMessage SM_GoToResults = ScreenMessage(SM_User+113);
|
||||
const ScreenMessage SM_GoToScreenAfterBack = ScreenMessage(SM_User+113);
|
||||
const ScreenMessage SM_GoToStateAfterCleared= ScreenMessage(SM_User+114);
|
||||
|
||||
const ScreenMessage SM_BeginFailed = ScreenMessage(SM_User+121);
|
||||
const ScreenMessage SM_ShowFailed = ScreenMessage(SM_User+122);
|
||||
const ScreenMessage SM_PlayFailComment = ScreenMessage(SM_User+123);
|
||||
const ScreenMessage SM_HideFailed = ScreenMessage(SM_User+124);
|
||||
const ScreenMessage SM_GoToScreenAfterFail = ScreenMessage(SM_User+125);
|
||||
const ScreenMessage SM_GoToScreenAfterFail = ScreenMessage(SM_User+125);
|
||||
|
||||
|
||||
|
||||
@@ -81,6 +83,9 @@ ScreenGameplay::ScreenGameplay()
|
||||
{
|
||||
LOG->WriteLine( "ScreenGameplay::ScreenGameplay()" );
|
||||
|
||||
m_bAutoPlayerWasOn = PREFSMAN->m_bAutoPlay;
|
||||
m_bChangedOffsetOrBPM = false;
|
||||
|
||||
switch( GAMESTATE->m_PlayMode )
|
||||
{
|
||||
case PLAY_MODE_ARCADE:
|
||||
@@ -116,7 +121,6 @@ ScreenGameplay::ScreenGameplay()
|
||||
|
||||
m_DancingState = STATE_INTRO;
|
||||
m_fTimeLeftBeforeDancingComment = TIME_BETWEEN_DANCING_COMMENTS;
|
||||
m_bBothHaveFailed = false;
|
||||
|
||||
|
||||
m_Background.SetDiffuseColor( D3DXCOLOR(0.4f,0.4f,0.4f,1) );
|
||||
@@ -157,7 +161,7 @@ ScreenGameplay::ScreenGameplay()
|
||||
m_pLifeMeter[p]->SetXY( LIFE_LOCAL_X[p], LIFE_LOCAL_Y[p] );
|
||||
m_frameTop.AddSubActor( m_pLifeMeter[p] );
|
||||
|
||||
if( GAMESTATE->GetCurGame() == GAME_EZ2 )
|
||||
if( GAMESTATE->m_CurGame == GAME_EZ2 )
|
||||
{
|
||||
m_pScoreDisplay[p]->SetXY( SCORE_LOCALEZ2_X[p], SCORE_LOCALEZ2_Y[p] );
|
||||
m_pScoreDisplay[p]->SetZoom( 0.5f );
|
||||
@@ -178,7 +182,7 @@ ScreenGameplay::ScreenGameplay()
|
||||
m_textStageNumber.SetText( GAMESTATE->GetStageText() );
|
||||
m_textStageNumber.SetDiffuseColor( GAMESTATE->GetStageColor() );
|
||||
|
||||
if( GAMESTATE->GetCurGame() == GAME_EZ2 )
|
||||
if( GAMESTATE->m_CurGame == GAME_EZ2 )
|
||||
{
|
||||
m_textStageNumber.SetXY( STAGE_NUMBER_LOCAL_X, STAGE_NUMBER_LOCALEZ2_Y );
|
||||
}
|
||||
@@ -202,7 +206,7 @@ ScreenGameplay::ScreenGameplay()
|
||||
|
||||
m_frameBottom.SetXY( CENTER_X, SCREEN_BOTTOM - m_sprBottomFrame.GetZoomedHeight()/2 );
|
||||
|
||||
if( GAMESTATE->GetCurGame() != GAME_EZ2 )
|
||||
if( GAMESTATE->m_CurGame != GAME_EZ2 )
|
||||
{
|
||||
m_sprBottomFrame.Load( THEME->GetPathTo(GRAPHIC_GAMEPLAY_BOTTOM_FRAME) );
|
||||
m_frameBottom.AddSubActor( &m_sprBottomFrame );
|
||||
@@ -235,7 +239,7 @@ ScreenGameplay::ScreenGameplay()
|
||||
|
||||
if( !GAMESTATE->IsPlayerEnabled(PlayerNumber(p)) )
|
||||
continue;
|
||||
if( GAMESTATE->GetCurGame() != GAME_EZ2 )
|
||||
if( GAMESTATE->m_CurGame != GAME_EZ2 )
|
||||
{
|
||||
m_pScoreDisplay[p]->SetXY( SCORE_LOCAL_X[p], SCORE_LOCAL_Y[p] );
|
||||
m_pScoreDisplay[p]->SetZoom( 0.8f );
|
||||
@@ -269,7 +273,7 @@ ScreenGameplay::ScreenGameplay()
|
||||
m_DifficultyBanner[p].SetXY( DIFFICULTY_X[p], fDifficultyY );
|
||||
this->AddSubActor( &m_DifficultyBanner[p] );
|
||||
|
||||
if( GAMESTATE->GetCurGame() != GAME_EZ2 )
|
||||
if( GAMESTATE->m_CurGame != GAME_EZ2 )
|
||||
{
|
||||
float fDifficultyY = DIFFICULTY_Y[p];
|
||||
if( GAMESTATE->m_PlayerOptions[p].m_bReverseScroll )
|
||||
@@ -287,8 +291,6 @@ ScreenGameplay::ScreenGameplay()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
m_StarWipe.SetClosed();
|
||||
this->AddSubActor( &m_StarWipe );
|
||||
|
||||
@@ -312,6 +314,10 @@ ScreenGameplay::ScreenGameplay()
|
||||
m_sprFailed.SetDiffuseColor( D3DXCOLOR(1,1,1,0) );
|
||||
this->AddSubActor( &m_sprFailed );
|
||||
|
||||
m_Fade.SetClosed();
|
||||
m_Fade.SetOpened();
|
||||
this->AddSubActor( &m_Fade );
|
||||
|
||||
|
||||
|
||||
m_soundFail.Load( THEME->GetPathTo(SOUND_GAMEPLAY_FAILED) );
|
||||
@@ -445,6 +451,42 @@ void ScreenGameplay::LoadNextSong( bool bPlayMusic )
|
||||
m_pLifeMeter[p]->NextSong( NULL );
|
||||
}
|
||||
|
||||
bool ScreenGameplay::OneIsHot()
|
||||
{
|
||||
for( int p=0; p<NUM_PLAYERS; p++ )
|
||||
if( GAMESTATE->IsPlayerEnabled(PlayerNumber(p)) )
|
||||
if( !m_pLifeMeter[p]->IsHot() )
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ScreenGameplay::AllAreInDanger()
|
||||
{
|
||||
for( int p=0; p<NUM_PLAYERS; p++ )
|
||||
if( GAMESTATE->IsPlayerEnabled(PlayerNumber(p)) )
|
||||
if( !m_pLifeMeter[p]->IsInDanger() )
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ScreenGameplay::AllAreFailing()
|
||||
{
|
||||
for( int p=0; p<NUM_PLAYERS; p++ )
|
||||
if( GAMESTATE->IsPlayerEnabled(PlayerNumber(p)) )
|
||||
if( !m_pLifeMeter[p]->IsFailing() )
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ScreenGameplay::AllFailedEarlier()
|
||||
{
|
||||
for( int p=0; p<NUM_PLAYERS; p++ )
|
||||
if( GAMESTATE->IsPlayerEnabled(p) )
|
||||
if( !m_pLifeMeter[p]->FailedEarlier() )
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void ScreenGameplay::Update( float fDeltaTime )
|
||||
{
|
||||
@@ -484,45 +526,6 @@ void ScreenGameplay::Update( float fDeltaTime )
|
||||
m_Player[p].Update( fDeltaTime, fSongBeat, fMaxBeatDifference );
|
||||
}
|
||||
|
||||
// check for fail
|
||||
switch( GAMESTATE->m_SongOptions.m_FailType )
|
||||
{
|
||||
case SongOptions::FAIL_ARCADE:
|
||||
case SongOptions::FAIL_END_OF_SONG:
|
||||
{
|
||||
|
||||
if( m_bBothHaveFailed )
|
||||
break; // if they have already failed, don't bother checking again
|
||||
|
||||
// check for both players fail
|
||||
bool bAllInDanger = true;
|
||||
bool bAllAreFailing = true;
|
||||
for( int p=0; p<NUM_PLAYERS; p++ )
|
||||
{
|
||||
if( !GAMESTATE->IsPlayerEnabled(PlayerNumber(p)) )
|
||||
continue;
|
||||
|
||||
if( !m_pLifeMeter[p]->IsInDanger() )
|
||||
bAllInDanger = false;
|
||||
|
||||
if( !m_pLifeMeter[p]->IsFailing() )
|
||||
bAllAreFailing = false;
|
||||
}
|
||||
|
||||
if( bAllInDanger ) m_Background.TurnDangerOn();
|
||||
else m_Background.TurnDangerOff();
|
||||
|
||||
if( bAllAreFailing )
|
||||
{
|
||||
m_bBothHaveFailed = true;
|
||||
SCREENMAN->SendMessageToTopScreen( SM_LifeIs0, 0 );
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SongOptions::FAIL_OFF:
|
||||
break;
|
||||
}
|
||||
|
||||
// update seconds into play
|
||||
for( p=0; p<NUM_PLAYERS; p++ )
|
||||
if( GAMESTATE->IsPlayerEnabled((PlayerNumber)p) && !m_pLifeMeter[p]->FailedEarlier() )
|
||||
@@ -533,29 +536,44 @@ void ScreenGameplay::Update( float fDeltaTime )
|
||||
{
|
||||
case STATE_DANCING:
|
||||
|
||||
//
|
||||
// Check for end of song
|
||||
//
|
||||
if( fSongBeat > GAMESTATE->m_pCurSong->m_fLastBeat+4 )
|
||||
this->SendScreenMessage( SM_NotesEnded, 0 );
|
||||
|
||||
//
|
||||
// check for fail
|
||||
//
|
||||
switch( GAMESTATE->m_SongOptions.m_FailType )
|
||||
{
|
||||
case SongOptions::FAIL_ARCADE:
|
||||
if( AllAreFailing() )
|
||||
SCREENMAN->SendMessageToTopScreen( SM_BeginFailed, 0 );
|
||||
|
||||
if( AllAreInDanger() )
|
||||
m_Background.TurnDangerOn();
|
||||
else
|
||||
m_Background.TurnDangerOff();
|
||||
break;
|
||||
case SongOptions::FAIL_END_OF_SONG:
|
||||
case SongOptions::FAIL_OFF:
|
||||
break; // don't check for fail
|
||||
default:
|
||||
ASSERT(0);
|
||||
}
|
||||
|
||||
//
|
||||
// Check to see if it's time to play a gameplay comment
|
||||
//
|
||||
m_fTimeLeftBeforeDancingComment -= fDeltaTime;
|
||||
if( m_fTimeLeftBeforeDancingComment <= 0 )
|
||||
{
|
||||
m_fTimeLeftBeforeDancingComment = TIME_BETWEEN_DANCING_COMMENTS; // reset for the next comment
|
||||
|
||||
bool bAllInDanger = true;
|
||||
for( int p=0; p<NUM_PLAYERS; p++ )
|
||||
if( !m_pLifeMeter[p]->IsInDanger() )
|
||||
bAllInDanger = false;
|
||||
|
||||
bool bOneIsHot = false;
|
||||
for( p=0; p<NUM_PLAYERS; p++ )
|
||||
if( m_pLifeMeter[p]->IsHot() )
|
||||
bOneIsHot = true;
|
||||
|
||||
if( bOneIsHot )
|
||||
if( OneIsHot() )
|
||||
m_announcerHot.PlayRandom();
|
||||
else if( bAllInDanger )
|
||||
else if( AllAreInDanger() )
|
||||
m_announcerDanger.PlayRandom();
|
||||
else
|
||||
m_announcerGood.PlayRandom();
|
||||
@@ -620,28 +638,6 @@ void ScreenGameplay::Update( float fDeltaTime )
|
||||
|
||||
iRowLastCrossed = iRowNow;
|
||||
}
|
||||
|
||||
//
|
||||
if( m_bBothHaveFailed )
|
||||
{
|
||||
for( int p=0; p<NUM_PLAYERS; p++ )
|
||||
{
|
||||
if( !GAMESTATE->IsPlayerEnabled((PlayerNumber)p) )
|
||||
continue;
|
||||
|
||||
float fOverrideAdd = m_Player[p].GetOverrideAdd();
|
||||
if( fOverrideAdd == -1 )
|
||||
{
|
||||
m_Player[p].SetOverrideAdd( 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
float fNewAdd = min( 1, fOverrideAdd + fDeltaTime );
|
||||
m_Player[p].SetOverrideAdd( fNewAdd );
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -665,14 +661,52 @@ void ScreenGameplay::Input( const DeviceInput& DeviceI, const InputEventType typ
|
||||
{
|
||||
switch( DeviceI.button )
|
||||
{
|
||||
case DIK_F11:
|
||||
case DIK_F12:
|
||||
case DIK_F8:
|
||||
PREFSMAN->m_bAutoPlay = !PREFSMAN->m_bAutoPlay;
|
||||
m_bAutoPlayerWasOn &= PREFSMAN->m_bAutoPlay;
|
||||
m_textDebug.SetText( ssprintf("Autoplayer %s.", (PREFSMAN->m_bAutoPlay ? "ON" : "OFF")) );
|
||||
m_textDebug.SetDiffuseColor( D3DXCOLOR(1,1,1,1) );
|
||||
m_textDebug.StopTweening();
|
||||
m_textDebug.BeginTweeningQueued( 3 ); // sleep
|
||||
m_textDebug.BeginTweeningQueued( 0.5f ); // fade out
|
||||
m_textDebug.SetTweenDiffuseColor( D3DXCOLOR(1,1,1,0) );
|
||||
break;
|
||||
case DIK_F9:
|
||||
case DIK_F10:
|
||||
{
|
||||
m_bChangedOffsetOrBPM = true;
|
||||
|
||||
float fOffsetDelta;
|
||||
switch( DeviceI.button )
|
||||
{
|
||||
case DIK_F11: fOffsetDelta = -0.025f; break;
|
||||
case DIK_F12: fOffsetDelta = +0.025f; break;
|
||||
case DIK_F9: fOffsetDelta = -0.025f; break;
|
||||
case DIK_F10: fOffsetDelta = +0.025f; break;
|
||||
default: ASSERT(0);
|
||||
}
|
||||
if( type == IET_FAST_REPEAT )
|
||||
fOffsetDelta *= 40;
|
||||
BPMSegment& seg = GAMESTATE->m_pCurSong->GetBPMSegmentAtBeat( fSongBeat );
|
||||
|
||||
seg.m_fBPM += fOffsetDelta;
|
||||
|
||||
m_textDebug.SetText( ssprintf("Cur BPM = %f.", GAMESTATE->m_pCurSong->m_fBeat0OffsetInSeconds) );
|
||||
m_textDebug.SetDiffuseColor( D3DXCOLOR(1,1,1,1) );
|
||||
m_textDebug.StopTweening();
|
||||
m_textDebug.BeginTweeningQueued( 3 ); // sleep
|
||||
m_textDebug.BeginTweeningQueued( 0.5f ); // fade out
|
||||
m_textDebug.SetTweenDiffuseColor( D3DXCOLOR(1,1,1,0) );
|
||||
}
|
||||
break;
|
||||
case DIK_F11:
|
||||
case DIK_F12:
|
||||
{
|
||||
m_bChangedOffsetOrBPM = true;
|
||||
|
||||
float fOffsetDelta;
|
||||
switch( DeviceI.button )
|
||||
{
|
||||
case DIK_F11: fOffsetDelta = -0.02f; break;
|
||||
case DIK_F12: fOffsetDelta = +0.02f; break;
|
||||
default: ASSERT(0);
|
||||
}
|
||||
if( type == IET_FAST_REPEAT )
|
||||
@@ -691,26 +725,60 @@ void ScreenGameplay::Input( const DeviceInput& DeviceI, const InputEventType typ
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if( MenuI.IsValid() && MenuI.button == MENU_BUTTON_BACK && type == IET_SLOW_REPEAT && m_DancingState == STATE_DANCING && !m_bBothHaveFailed )
|
||||
if( MenuI.IsValid() && MenuI.button == MENU_BUTTON_BACK && type == IET_SLOW_REPEAT )
|
||||
{
|
||||
m_bBothHaveFailed = true;
|
||||
SCREENMAN->SendMessageToTopScreen( SM_BeginFailed, 0 );
|
||||
m_soundMusic.Stop();
|
||||
this->ClearMessageQueue();
|
||||
m_Fade.CloseWipingLeft( SM_GoToScreenAfterBack );
|
||||
}
|
||||
|
||||
const float fMaxBeatDifference = fBPS * PREFSMAN->m_fJudgeWindow * GAMESTATE->m_SongOptions.m_fMusicRate;
|
||||
|
||||
if( type == IET_FIRST_PRESS )
|
||||
//
|
||||
// handle a step
|
||||
//
|
||||
if( m_DancingState == STATE_DANCING )
|
||||
{
|
||||
if( StyleI.IsValid() )
|
||||
const float fMaxBeatDifference = fBPS * PREFSMAN->m_fJudgeWindow * GAMESTATE->m_SongOptions.m_fMusicRate;
|
||||
|
||||
if( type == IET_FIRST_PRESS )
|
||||
{
|
||||
if( GAMESTATE->IsPlayerEnabled( StyleI.player ) )
|
||||
m_Player[StyleI.player].HandlePlayerStep( fSongBeat, StyleI.col, fMaxBeatDifference );
|
||||
if( StyleI.IsValid() )
|
||||
{
|
||||
if( GAMESTATE->IsPlayerEnabled( StyleI.player ) )
|
||||
m_Player[StyleI.player].HandlePlayerStep( fSongBeat, StyleI.col, fMaxBeatDifference );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SaveChanges( void* pContext )
|
||||
{
|
||||
GAMESTATE->m_pCurSong->SaveToSMFile();
|
||||
}
|
||||
|
||||
void DontSaveChanges( void* pContext )
|
||||
{
|
||||
GAMESTATE->m_pCurSong->LoadFromSMFile( GAMESTATE->m_pCurSong->GetCacheFilePath() );
|
||||
}
|
||||
|
||||
void ShowSavePrompt( ScreenMessage SM_SendWhenDone )
|
||||
{
|
||||
SCREENMAN->AddScreenToTop( new ScreenPrompt(
|
||||
SM_SendWhenDone,
|
||||
ssprintf(
|
||||
"You have changed the offset or BPM of\n"
|
||||
"%s.\n"
|
||||
"Would you like to save these changes back\n"
|
||||
"to the song file?\n"
|
||||
"Choosing NO will disgard your changes.",
|
||||
GAMESTATE->m_pCurSong->GetFullTitle() ),
|
||||
PROMPT_YES_NO,
|
||||
true,
|
||||
SaveChanges,
|
||||
DontSaveChanges
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM )
|
||||
{
|
||||
switch( SM )
|
||||
@@ -750,33 +818,32 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM )
|
||||
break;
|
||||
|
||||
// received while STATE_DANCING
|
||||
case SM_LifeIs0:
|
||||
if( GAMESTATE->m_SongOptions.m_FailType == SongOptions::FAIL_ARCADE ) // fail them now!
|
||||
this->SendScreenMessage( SM_BeginFailed, 0 );
|
||||
m_DancingState = STATE_OUTRO;
|
||||
break;
|
||||
case SM_NotesEnded:
|
||||
{
|
||||
for( int p=0; p<NUM_PLAYERS; p++ )
|
||||
if( GAMESTATE->IsPlayerEnabled( (PlayerNumber)p ) )
|
||||
m_Player[p].SaveGameplayStatistics();
|
||||
GAMESTATE->GetLatestGameplayStatistics().bAutoPlayerWasOn = m_bAutoPlayerWasOn;
|
||||
LoadNextSong( true );
|
||||
}
|
||||
break;
|
||||
case SM_LastNotesEnded:
|
||||
if( m_DancingState == STATE_OUTRO ) // gameplay already ended
|
||||
return; // ignore
|
||||
{
|
||||
if( m_DancingState == STATE_OUTRO ) // gameplay already ended
|
||||
return; // ignore
|
||||
|
||||
if( m_bBothHaveFailed ) // fail them
|
||||
{
|
||||
this->SendScreenMessage( SM_BeginFailed, 0 );
|
||||
m_DancingState = STATE_OUTRO;
|
||||
|
||||
if( GAMESTATE->m_SongOptions.m_FailType == SongOptions::FAIL_END_OF_SONG && AllFailedEarlier() )
|
||||
{
|
||||
this->SendScreenMessage( SM_BeginFailed, 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
m_StarWipe.CloseWipingRight( SM_ShowCleared );
|
||||
m_announcerCleared.PlayRandom(); // crowd cheer
|
||||
}
|
||||
}
|
||||
else // cleared
|
||||
{
|
||||
m_StarWipe.CloseWipingRight( SM_ShowCleared );
|
||||
m_announcerCleared.PlayRandom(); // crowd cheer
|
||||
}
|
||||
m_DancingState = STATE_OUTRO;
|
||||
break;
|
||||
|
||||
case SM_100Combo:
|
||||
@@ -865,9 +932,23 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM )
|
||||
break;
|
||||
case SM_HideCleared:
|
||||
m_sprCleared.StartBlurring();
|
||||
SCREENMAN->SendMessageToTopScreen( SM_GoToResults, 1 );
|
||||
SCREENMAN->SendMessageToTopScreen( SM_GoToStateAfterCleared, 1 );
|
||||
break;
|
||||
case SM_GoToResults:
|
||||
case SM_GoToScreenAfterBack:
|
||||
switch( GAMESTATE->m_PlayMode )
|
||||
{
|
||||
case PLAY_MODE_ARCADE: SCREENMAN->SetNewScreen( new ScreenSelectMusic ); break;
|
||||
case PLAY_MODE_ONI: SCREENMAN->SetNewScreen( new ScreenSelectCourse ); break;
|
||||
default: ASSERT(0);
|
||||
}
|
||||
break;
|
||||
case SM_GoToStateAfterCleared:
|
||||
if( m_bChangedOffsetOrBPM )
|
||||
{
|
||||
m_bChangedOffsetOrBPM = false;
|
||||
ShowSavePrompt( SM_GoToStateAfterCleared );
|
||||
break;
|
||||
}
|
||||
SCREENMAN->SetNewScreen( new ScreenEvaluation(false) );
|
||||
break;
|
||||
|
||||
@@ -896,9 +977,6 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM )
|
||||
m_sprFailed.SetTweenZoom( 1.0f ); // come to rest
|
||||
m_sprFailed.SetTweenDiffuseColor( D3DXCOLOR(1,1,1,0.7f) ); // and fade in
|
||||
|
||||
// BUGFIX by ANDY: Stage will now reset back to 0 when game ends.
|
||||
GAMESTATE->m_iCurrentStageIndex = 0;
|
||||
|
||||
SCREENMAN->SendMessageToTopScreen( SM_PlayFailComment, 1.5f );
|
||||
SCREENMAN->SendMessageToTopScreen( SM_HideFailed, 3.0f );
|
||||
break;
|
||||
@@ -913,8 +991,14 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM )
|
||||
SCREENMAN->SendMessageToTopScreen( SM_GoToScreenAfterFail, 1.5f );
|
||||
break;
|
||||
case SM_GoToScreenAfterFail:
|
||||
if( m_bChangedOffsetOrBPM )
|
||||
{
|
||||
m_bChangedOffsetOrBPM = false;
|
||||
ShowSavePrompt( SM_GoToScreenAfterFail );
|
||||
break;
|
||||
}
|
||||
if( PREFSMAN->m_bEventMode )
|
||||
SCREENMAN->SetNewScreen( new ScreenSelectMusic );
|
||||
this->SendScreenMessage( SM_GoToScreenAfterBack, 0 );
|
||||
else
|
||||
SCREENMAN->SetNewScreen( new ScreenGameOver );
|
||||
break;
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
#include "LifeMeter.h"
|
||||
#include "ScoreDisplay.h"
|
||||
#include "DifficultyBanner.h"
|
||||
#include "TransitionFadeWipe.h"
|
||||
|
||||
|
||||
// messages sent by Combo
|
||||
@@ -50,13 +51,6 @@ public:
|
||||
virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI );
|
||||
virtual void HandleScreenMessage( const ScreenMessage SM );
|
||||
|
||||
enum DancingState {
|
||||
STATE_INTRO = 0, // not allowed to press Back
|
||||
STATE_DANCING,
|
||||
STATE_OUTRO, // not allowed to press Back
|
||||
NUM_DANCING_STATES
|
||||
};
|
||||
|
||||
|
||||
private:
|
||||
void TweenOnScreen();
|
||||
@@ -64,12 +58,23 @@ private:
|
||||
|
||||
void LoadNextSong( bool bPlayMusic );
|
||||
|
||||
bool OneIsHot();
|
||||
bool AllAreInDanger();
|
||||
bool AllAreFailing();
|
||||
bool AllFailedEarlier();
|
||||
|
||||
enum DancingState {
|
||||
STATE_INTRO = 0, // not allowed to press Back
|
||||
STATE_DANCING,
|
||||
STATE_OUTRO, // not allowed to press Back
|
||||
NUM_DANCING_STATES
|
||||
};
|
||||
DancingState m_DancingState;
|
||||
bool m_bAutoPlayerWasOn;
|
||||
bool m_bChangedOffsetOrBPM;
|
||||
|
||||
CArray<Song*,Song*> m_apSongQueue; // nearest songs are on back of queue
|
||||
CArray<Notes*,Notes*> m_apNotesQueue[NUM_PLAYERS]; // nearest notes are on back of queue
|
||||
bool m_bBothHaveFailed;
|
||||
|
||||
float m_fTimeLeftBeforeDancingComment; // this counter is only running while STATE_DANCING
|
||||
|
||||
@@ -89,6 +94,7 @@ private:
|
||||
BitmapText m_textDebug;
|
||||
|
||||
|
||||
TransitionFadeWipe m_Fade;
|
||||
TransitionStarWipe m_StarWipe;
|
||||
|
||||
FocusingSprite m_sprReady;
|
||||
|
||||
@@ -105,7 +105,7 @@ void ScreenManager::Draw()
|
||||
void ScreenManager::Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI )
|
||||
{
|
||||
LOG->WriteLine( "ScreenManager::Input( %d-%d, %d-%d, %d-%d, %d-%d )",
|
||||
DeviceI.device, DeviceI.button, GameI.number, GameI.button, MenuI.player, MenuI.button, StyleI.player, StyleI.col );
|
||||
DeviceI.device, DeviceI.button, GameI.controller, GameI.button, MenuI.player, MenuI.button, StyleI.player, StyleI.col );
|
||||
|
||||
// pass input only to topmost state
|
||||
if( m_ScreenStack.GetSize() > 0 )
|
||||
@@ -124,13 +124,13 @@ void ScreenManager::SetNewScreen( Screen *pNewScreen )
|
||||
void ScreenManager::AddScreenToTop( Screen *pNewScreen )
|
||||
{
|
||||
// our responsibility to tell the old state that it's losing focus
|
||||
m_ScreenStack[m_ScreenStack.GetSize()-1]->HandleScreenMessage( SM_LosingInputFocus );
|
||||
// m_ScreenStack[m_ScreenStack.GetSize()-1]->HandleScreenMessage( SM_LosingInputFocus );
|
||||
|
||||
// add the new state onto the back of the array
|
||||
m_ScreenStack.Add( pNewScreen );
|
||||
}
|
||||
|
||||
void ScreenManager::PopTopScreen()
|
||||
void ScreenManager::PopTopScreen( ScreenMessage SM )
|
||||
{
|
||||
Screen* pScreenToPop = m_ScreenStack[m_ScreenStack.GetSize()-1]; // top menu
|
||||
//pScreenToPop->HandleScreenMessage( SM_LosingInputFocus );
|
||||
@@ -138,7 +138,7 @@ void ScreenManager::PopTopScreen()
|
||||
m_ScreensToDelete.Add( pScreenToPop );
|
||||
|
||||
Screen* pNewTopScreen = m_ScreenStack[m_ScreenStack.GetSize()-1];
|
||||
pNewTopScreen->HandleScreenMessage( SM_RegainingInputFocus );
|
||||
pNewTopScreen->HandleScreenMessage( SM );
|
||||
}
|
||||
|
||||
void ScreenManager::SendMessageToTopScreen( ScreenMessage SM, float fDelay )
|
||||
|
||||
@@ -34,7 +34,7 @@ public:
|
||||
|
||||
void SetNewScreen( Screen *pNewScreen );
|
||||
void AddScreenToTop( Screen *pNewScreen );
|
||||
void PopTopScreen();
|
||||
void PopTopScreen( ScreenMessage SM_SendToNewTopScreen );
|
||||
|
||||
void SystemMessage( CString sMessage );
|
||||
|
||||
|
||||
@@ -18,8 +18,6 @@ enum ScreenMessage {
|
||||
SM_DoneClosingWipingRight,
|
||||
SM_DoneOpeningWipingLeft,
|
||||
SM_DoneOpeningWipingRight,
|
||||
SM_LosingInputFocus,
|
||||
SM_RegainingInputFocus,
|
||||
SM_MenuTimer,
|
||||
SM_User = 100
|
||||
};
|
||||
|
||||
@@ -169,7 +169,7 @@ ScreenMusicScroll::ScreenMusicScroll()
|
||||
|
||||
this->AddSubActor( &m_Fade );
|
||||
|
||||
if ( GAMESTATE->GetCurGame() != GAME_EZ2 )
|
||||
if ( GAMESTATE->m_CurGame != GAME_EZ2 )
|
||||
{
|
||||
m_soundMusic.Load( THEME->GetPathTo(SOUND_MUSIC_SCROLL_MUSIC) );
|
||||
}
|
||||
@@ -179,7 +179,7 @@ ScreenMusicScroll::ScreenMusicScroll()
|
||||
}
|
||||
|
||||
m_Fade.OpenWipingRight();
|
||||
if ( GAMESTATE->GetCurGame() != GAME_EZ2 )
|
||||
if ( GAMESTATE->m_CurGame != GAME_EZ2 )
|
||||
{
|
||||
m_soundMusic.Play( true );
|
||||
}
|
||||
|
||||
@@ -35,12 +35,11 @@ enum {
|
||||
PO_COLOR,
|
||||
PO_HOLD_NOTES,
|
||||
PO_DARK,
|
||||
PO_DRAIN,
|
||||
NUM_PLAYER_OPTIONS_LINES
|
||||
};
|
||||
OptionLineData g_PlayerOptionsLines[NUM_PLAYER_OPTIONS_LINES] = {
|
||||
{ "Speed", 8, {"x0.5","x0.75","x1","x1.5","x2","x3","x5","x8"} },
|
||||
{ "Effect", 6, {"OFF","BOOST","WAVE", "DRUNK", "DIZZY", "SPACE"} },
|
||||
{ "Effect", 7, {"OFF","BOOST","WAVE", "DRUNK", "DIZZY","SPACE","MINI"} },
|
||||
{ "Appear", 4, {"VISIBLE","HIDDEN","SUDDEN","STEALTH"} },
|
||||
{ "Turn", 5, {"OFF","MIRROR","LEFT","RIGHT","SHUFFLE"} },
|
||||
{ "Little", 2, {"OFF","ON"} },
|
||||
@@ -48,11 +47,9 @@ OptionLineData g_PlayerOptionsLines[NUM_PLAYER_OPTIONS_LINES] = {
|
||||
{ "Color", 4, {"ARCADE","NOTE","FLAT","PLAIN"} },
|
||||
{ "Holds", 2, {"OFF","ON"} },
|
||||
{ "Dark", 2, {"OFF","ON"} },
|
||||
{ "Drain", 3, {"NORMAL", "NO-RECOVER", "SUDDEN-DEATH"} },
|
||||
};
|
||||
|
||||
|
||||
|
||||
ScreenPlayerOptions::ScreenPlayerOptions() :
|
||||
ScreenOptions(
|
||||
THEME->GetPathTo(GRAPHIC_PLAYER_OPTIONS_BACKGROUND),
|
||||
@@ -93,7 +90,6 @@ void ScreenPlayerOptions::ImportOptions()
|
||||
m_iSelectedOption[p][PO_COLOR] = po.m_ColorType;
|
||||
m_iSelectedOption[p][PO_HOLD_NOTES] = po.m_bHoldNotes ? 1 : 0;
|
||||
m_iSelectedOption[p][PO_DARK] = po.m_bDark ? 1 : 0;
|
||||
m_iSelectedOption[p][PO_DRAIN] = po.m_DrainType;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -124,7 +120,6 @@ void ScreenPlayerOptions::ExportOptions()
|
||||
po.m_ColorType = (PlayerOptions::ColorType)m_iSelectedOption[p][PO_COLOR];
|
||||
po.m_bHoldNotes = (m_iSelectedOption[p][PO_HOLD_NOTES] == 1);
|
||||
po.m_bDark = (m_iSelectedOption[p][PO_DARK] == 1);
|
||||
po.m_DrainType = (PlayerOptions::DrainType)m_iSelectedOption[p][PO_DRAIN];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
#include "stdafx.h"
|
||||
/*
|
||||
-----------------------------------------------------------------------------
|
||||
File: ScreenPrompt.h
|
||||
Class: ScreenPrompt
|
||||
|
||||
Desc: Area for testing.
|
||||
Desc: See header.
|
||||
|
||||
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||
Chris Danford
|
||||
-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
@@ -18,51 +19,40 @@
|
||||
#include "GameConstantsAndTypes.h"
|
||||
#include "PrefsManager.h"
|
||||
|
||||
ScreenPrompt::ScreenPrompt( CString sText, PromptType pt, bool* pbAnswer )
|
||||
const float QUESTION_X = CENTER_X;
|
||||
const float QUESTION_Y = CENTER_Y - 60;
|
||||
|
||||
const float PROMPT_X = CENTER_X;
|
||||
const float PROMPT_Y = CENTER_Y + 120;
|
||||
|
||||
|
||||
ScreenPrompt::ScreenPrompt( ScreenMessage SM_SendWhenDone, CString sText, PromptType pt, bool bDefaultAnswer, void(*OnYes)(void* pContext), void(*OnNo)(void* pContext) )
|
||||
{
|
||||
|
||||
static bool bThrowAway;
|
||||
|
||||
if( pbAnswer == NULL )
|
||||
pbAnswer = &bThrowAway;
|
||||
|
||||
m_SMSendWhenDone = SM_SendWhenDone;
|
||||
m_pOnYes = OnYes;
|
||||
m_pOnNo = OnNo;
|
||||
|
||||
m_PromptType = pt;
|
||||
m_pbAnswer = pbAnswer;
|
||||
|
||||
ASSERT( !(pt == PROMPT_YES_NO && pt == NULL) );
|
||||
m_bAnswer = bDefaultAnswer;
|
||||
|
||||
m_Fade.SetTransitionTime( 0.5f );
|
||||
m_Fade.SetColor( D3DXCOLOR(0,0,0,0.7f) );
|
||||
m_Fade.SetOpened();
|
||||
m_Fade.CloseWipingRight();
|
||||
m_Fade.SetZ(-2);
|
||||
this->AddSubActor( &m_Fade );
|
||||
|
||||
CStringArray arrayTextLines;
|
||||
split( sText, "\n", arrayTextLines );
|
||||
for( int i=0; i<arrayTextLines.GetSize(); i++ )
|
||||
{
|
||||
m_textQuestion[i].Load( THEME->GetPathTo(FONT_HEADER1) );
|
||||
m_textQuestion[i].SetText( arrayTextLines[i] );
|
||||
m_textQuestion[i].SetXY( CENTER_X, CENTER_Y-50 + i*27 - arrayTextLines.GetSize()*27/2 );
|
||||
m_textQuestion[i].SetZ(-2);
|
||||
this->AddSubActor( &m_textQuestion[i] );
|
||||
}
|
||||
m_textQuestion.Load( THEME->GetPathTo(FONT_NORMAL) );
|
||||
m_textQuestion.SetText( sText );
|
||||
m_textQuestion.SetXY( QUESTION_X, QUESTION_Y );
|
||||
this->AddSubActor( &m_textQuestion );
|
||||
|
||||
m_rectAnswerBox.SetDiffuseColor( D3DXCOLOR(0.5f,0.5f,1.0f,0.7f) );
|
||||
m_rectAnswerBox.SetXY( m_textAnswer[*m_pbAnswer].GetX(), m_textAnswer[*m_pbAnswer].GetY() );
|
||||
m_rectAnswerBox.SetZoomX( m_textAnswer[*m_pbAnswer].GetWidestLineWidthInSourcePixels()+10.0f );
|
||||
m_rectAnswerBox.SetZoomY( 30 );
|
||||
m_rectAnswerBox.SetZ(-2);
|
||||
this->AddSubActor( &m_rectAnswerBox );
|
||||
|
||||
m_textAnswer[0].Load( THEME->GetPathTo(FONT_HEADER1) );
|
||||
m_textAnswer[1].Load( THEME->GetPathTo(FONT_HEADER1) );
|
||||
m_textAnswer[0].SetY( CENTER_Y+120 );
|
||||
m_textAnswer[1].SetY( CENTER_Y+120 );
|
||||
m_textAnswer[0].SetZ(-2);
|
||||
m_textAnswer[1].SetZ(-2);
|
||||
m_textAnswer[0].SetY( PROMPT_Y );
|
||||
m_textAnswer[1].SetY( PROMPT_Y );
|
||||
this->AddSubActor( &m_textAnswer[0] );
|
||||
this->AddSubActor( &m_textAnswer[1] );
|
||||
|
||||
@@ -72,23 +62,21 @@ ScreenPrompt::ScreenPrompt( CString sText, PromptType pt, bool* pbAnswer )
|
||||
{
|
||||
case PROMPT_OK:
|
||||
m_textAnswer[0].SetText( "OK" );
|
||||
m_textAnswer[0].SetX( CENTER_X );
|
||||
m_textAnswer[0].SetX( PROMPT_X );
|
||||
break;
|
||||
case PROMPT_YES_NO:
|
||||
m_textAnswer[0].SetText( "NO" );
|
||||
m_textAnswer[1].SetText( "YES" );
|
||||
m_textAnswer[0].SetX( CENTER_X+50 );
|
||||
m_textAnswer[1].SetX( CENTER_X-50 );
|
||||
m_textAnswer[0].SetX( PROMPT_X+50 );
|
||||
m_textAnswer[1].SetX( PROMPT_X-50 );
|
||||
break;
|
||||
}
|
||||
|
||||
m_rectAnswerBox.SetXY( m_textAnswer[*m_pbAnswer].GetX(), m_textAnswer[*m_pbAnswer].GetY() );
|
||||
m_rectAnswerBox.SetZoomX( m_textAnswer[*m_pbAnswer].GetWidestLineWidthInSourcePixels()+10.0f );
|
||||
m_rectAnswerBox.SetXY( m_textAnswer[m_bAnswer].GetX(), m_textAnswer[m_bAnswer].GetY() );
|
||||
m_rectAnswerBox.SetZoomX( m_textAnswer[m_bAnswer].GetWidestLineWidthInSourcePixels()+10.0f );
|
||||
m_rectAnswerBox.SetZoomY( 30 );
|
||||
|
||||
m_textAnswer[*m_pbAnswer].SetEffectGlowing();
|
||||
|
||||
|
||||
m_soundSelect.Load( THEME->GetPathTo(SOUND_MENU_START) );
|
||||
m_textAnswer[m_bAnswer].SetEffectGlowing();
|
||||
}
|
||||
|
||||
void ScreenPrompt::Update( float fDeltaTime )
|
||||
@@ -120,7 +108,7 @@ void ScreenPrompt::HandleScreenMessage( const ScreenMessage SM )
|
||||
case SM_DoneOpeningWipingLeft:
|
||||
break;
|
||||
case SM_DoneOpeningWipingRight:
|
||||
SCREENMAN->PopTopScreen();
|
||||
SCREENMAN->PopTopScreen( m_SMSendWhenDone );
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -138,33 +126,28 @@ void ScreenPrompt::MenuRight( const PlayerNumber p )
|
||||
if( m_PromptType == PROMPT_OK )
|
||||
return;
|
||||
|
||||
m_textAnswer[*m_pbAnswer].SetEffectNone();
|
||||
*m_pbAnswer = !*m_pbAnswer;
|
||||
m_textAnswer[*m_pbAnswer].SetEffectGlowing();
|
||||
m_textAnswer[m_bAnswer].SetEffectNone();
|
||||
m_bAnswer = !m_bAnswer;
|
||||
m_textAnswer[m_bAnswer].SetEffectGlowing();
|
||||
|
||||
m_rectAnswerBox.BeginTweening( 0.2f );
|
||||
m_rectAnswerBox.SetTweenXY( m_textAnswer[*m_pbAnswer].GetX(), m_textAnswer[*m_pbAnswer].GetY() );
|
||||
m_rectAnswerBox.SetTweenZoomX( m_textAnswer[*m_pbAnswer].GetWidestLineWidthInSourcePixels()+10.0f );
|
||||
m_rectAnswerBox.SetTweenXY( m_textAnswer[m_bAnswer].GetX(), m_textAnswer[m_bAnswer].GetY() );
|
||||
m_rectAnswerBox.SetTweenZoomX( m_textAnswer[m_bAnswer].GetWidestLineWidthInSourcePixels()+10.0f );
|
||||
|
||||
SOUND->PlayOnceStreamed( THEME->GetPathTo(SOUND_EDIT_CHANGE_LINE) );
|
||||
}
|
||||
|
||||
void ScreenPrompt::MenuStart( const PlayerNumber p )
|
||||
{
|
||||
m_Fade.OpenWipingRight( SM_DoneOpeningWipingRight );
|
||||
|
||||
m_textTitle.BeginTweening( 0.2f );
|
||||
m_textTitle.SetTweenDiffuseColor( D3DXCOLOR(1,1,1,0) );
|
||||
|
||||
for( int i=0; i<NUM_QUESTION_LINES; i++ )
|
||||
{
|
||||
m_textQuestion[i].BeginTweening( 0.2f );
|
||||
m_textQuestion[i].SetTweenDiffuseColor( D3DXCOLOR(1,1,1,0) );
|
||||
}
|
||||
m_textQuestion.BeginTweening( 0.2f );
|
||||
m_textQuestion.SetTweenDiffuseColor( D3DXCOLOR(1,1,1,0) );
|
||||
|
||||
m_rectAnswerBox.BeginTweening( 0.2f );
|
||||
m_rectAnswerBox.SetTweenDiffuseColor( D3DXCOLOR(1,1,1,0) );
|
||||
|
||||
m_textAnswer[*m_pbAnswer].SetEffectNone();
|
||||
m_textAnswer[m_bAnswer].SetEffectNone();
|
||||
|
||||
m_textAnswer[0].BeginTweening( 0.2f );
|
||||
m_textAnswer[0].SetTweenDiffuseColor( D3DXCOLOR(1,1,1,0) );
|
||||
@@ -172,7 +155,7 @@ void ScreenPrompt::MenuStart( const PlayerNumber p )
|
||||
m_textAnswer[1].SetTweenDiffuseColor( D3DXCOLOR(1,1,1,0) );
|
||||
|
||||
|
||||
m_soundSelect.PlayRandom();
|
||||
SOUND->PlayOnceStreamed( THEME->GetPathTo(SOUND_MENU_START) );
|
||||
}
|
||||
|
||||
void ScreenPrompt::MenuBack( const PlayerNumber p )
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
/*
|
||||
-----------------------------------------------------------------------------
|
||||
File: ScreenPrompt.h
|
||||
Class: ScreenPrompt
|
||||
|
||||
Desc: Area for testing.
|
||||
Desc: Displays a prompt over the top of another screen. Must use by calling
|
||||
SCREENMAN->AddScreenToTop( new ScreenPrompt(...) );
|
||||
|
||||
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||
Chris Danford
|
||||
-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
@@ -18,13 +20,13 @@
|
||||
enum PromptType{ PROMPT_OK, PROMPT_YES_NO };
|
||||
|
||||
|
||||
const int NUM_QUESTION_LINES = 10;
|
||||
|
||||
|
||||
class ScreenPrompt : public Screen
|
||||
{
|
||||
public:
|
||||
ScreenPrompt( CString sText, PromptType pt, bool* pbAnswer = NULL );
|
||||
ScreenPrompt();
|
||||
ScreenPrompt( ScreenMessage SM_SendWhenDone, CString sText, PromptType pt, bool bDefaultAnswer = false, void(*OnYes)(void*) = NULL, void(*OnNo)(void*) = NULL );
|
||||
|
||||
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 );
|
||||
@@ -37,14 +39,14 @@ protected:
|
||||
void MenuStart( const PlayerNumber p );
|
||||
|
||||
|
||||
TransitionFade m_Fade;
|
||||
BitmapText m_textTitle;
|
||||
BitmapText m_textQuestion[NUM_QUESTION_LINES];
|
||||
Quad m_rectAnswerBox;
|
||||
TransitionFade m_Fade;
|
||||
BitmapText m_textQuestion;
|
||||
Quad m_rectAnswerBox;
|
||||
BitmapText m_textAnswer[2]; // "YES" or "NO"
|
||||
PromptType m_PromptType;
|
||||
bool* m_pbAnswer; // true = "YES", false = "NO";
|
||||
|
||||
RandomSample m_soundSelect;
|
||||
bool m_bAnswer; // true = "YES", false = "NO";
|
||||
ScreenMessage m_SMSendWhenDone;
|
||||
void(*m_pOnYes)(void* pContext);
|
||||
void(*m_pOnNo)(void* pContext);
|
||||
};
|
||||
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
#pragma once
|
||||
/*
|
||||
-----------------------------------------------------------------------------
|
||||
File: ScreenSandbox.h
|
||||
Class: ScreenSandbox
|
||||
|
||||
Desc: Area for testing.
|
||||
|
||||
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||
Chris Danford
|
||||
-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
@@ -16,6 +17,7 @@
|
||||
#include "TransitionStarWipe.h"
|
||||
#include "MenuElements.h"
|
||||
#include "TipDisplay.h"
|
||||
#include "RageSoundStream.h"
|
||||
|
||||
|
||||
class ScreenSandbox : public Screen
|
||||
|
||||
@@ -54,15 +54,13 @@ ScreenSelectCourse::ScreenSelectCourse()
|
||||
{
|
||||
LOG->WriteLine( "ScreenSelectCourse::ScreenSelectCourse()" );
|
||||
|
||||
// for debugging
|
||||
if( GAMESTATE->m_CurStyle == STYLE_NONE )
|
||||
GAMESTATE->m_CurStyle = STYLE_DANCE_SINGLE;
|
||||
m_bMadeChoice = false;
|
||||
m_bGoToOptions = false;
|
||||
|
||||
m_Menu.Load(
|
||||
THEME->GetPathTo(GRAPHIC_SELECT_COURSE_BACKGROUND),
|
||||
THEME->GetPathTo(GRAPHIC_SELECT_COURSE_TOP_EDGE),
|
||||
ssprintf("%c or %c change course then press START",
|
||||
char(1), char(2), char(3), char(3), char(4), char(4), char(3), char(4), char(3), char(4) ),
|
||||
ssprintf("%c or %c change course then press START", char(1), char(2)),
|
||||
false, true, 60
|
||||
);
|
||||
this->AddSubActor( &m_Menu );
|
||||
@@ -78,11 +76,10 @@ ScreenSelectCourse::ScreenSelectCourse()
|
||||
|
||||
m_textHoldForOptions.Load( THEME->GetPathTo(FONT_STAGE) );
|
||||
m_textHoldForOptions.SetXY( CENTER_X, CENTER_Y );
|
||||
m_textHoldForOptions.SetText( "hold START for options" );
|
||||
m_textHoldForOptions.SetText( "press START again for options" );
|
||||
m_textHoldForOptions.SetZoom( 1 );
|
||||
m_textHoldForOptions.SetZoomY( 0 );
|
||||
m_textHoldForOptions.SetDiffuseColor( D3DXCOLOR(1,1,1,0) );
|
||||
m_textHoldForOptions.SetZ( -2 );
|
||||
this->AddSubActor( &m_textHoldForOptions );
|
||||
|
||||
|
||||
@@ -117,6 +114,10 @@ void ScreenSelectCourse::TweenOnScreen()
|
||||
m_CourseInfoFrame.BeginTweening( TWEEN_TIME, Actor::TWEEN_BIAS_END );
|
||||
m_CourseInfoFrame.SetTweenXY( COURSE_INFO_FRAME_X, COURSE_INFO_FRAME_Y );
|
||||
|
||||
m_CourseContentsFrame.SetXY( COURSE_CONTENTS_FRAME_X - 400, COURSE_CONTENTS_FRAME_Y );
|
||||
m_CourseContentsFrame.BeginTweeningQueued( TWEEN_TIME, Actor::TWEEN_BIAS_END );
|
||||
m_CourseContentsFrame.SetTweenXY( COURSE_CONTENTS_FRAME_X, COURSE_CONTENTS_FRAME_Y );
|
||||
|
||||
m_MusicWheel.TweenOnScreen();
|
||||
}
|
||||
|
||||
@@ -125,6 +126,9 @@ void ScreenSelectCourse::TweenOffScreen()
|
||||
m_CourseInfoFrame.BeginTweening( TWEEN_TIME, Actor::TWEEN_BOUNCE_END );
|
||||
m_CourseInfoFrame.SetTweenXY( COURSE_INFO_FRAME_X - 400, COURSE_INFO_FRAME_Y );
|
||||
|
||||
m_CourseContentsFrame.BeginTweeningQueued( TWEEN_TIME, Actor::TWEEN_BOUNCE_END );
|
||||
m_CourseContentsFrame.SetTweenXY( COURSE_CONTENTS_FRAME_X - 400, COURSE_CONTENTS_FRAME_Y );
|
||||
|
||||
m_MusicWheel.TweenOffScreen();
|
||||
}
|
||||
|
||||
@@ -139,6 +143,14 @@ void ScreenSelectCourse::Input( const DeviceInput& DeviceI, const InputEventType
|
||||
if( MenuI.player == PLAYER_INVALID )
|
||||
return;
|
||||
|
||||
if( m_bMadeChoice && !m_bGoToOptions && MenuI.button == MENU_BUTTON_START )
|
||||
{
|
||||
m_bGoToOptions = true;
|
||||
m_textHoldForOptions.SetText( "Entering Options..." );
|
||||
SOUND->PlayOnceStreamed( THEME->GetPathTo(SOUND_MENU_START) );
|
||||
return;
|
||||
}
|
||||
|
||||
Screen::Input( DeviceI, type, GameI, MenuI, StyleI ); // default input handler
|
||||
}
|
||||
|
||||
@@ -168,14 +180,12 @@ void ScreenSelectCourse::HandleScreenMessage( const ScreenMessage SM )
|
||||
bIsHoldingNext = true;
|
||||
}
|
||||
|
||||
if( bIsHoldingNext )
|
||||
if( bIsHoldingNext || m_bGoToOptions )
|
||||
{
|
||||
SCREENMAN->SetNewScreen( new ScreenPlayerOptions );
|
||||
}
|
||||
else
|
||||
{
|
||||
MUSIC->Stop();
|
||||
|
||||
SCREENMAN->SetNewScreen( new ScreenStage );
|
||||
}
|
||||
break;
|
||||
@@ -211,6 +221,8 @@ void ScreenSelectCourse::MenuStart( const PlayerNumber p )
|
||||
|
||||
m_soundSelect.PlayRandom();
|
||||
|
||||
m_bMadeChoice = true;
|
||||
|
||||
// show "hold START for options"
|
||||
m_textHoldForOptions.SetDiffuseColor( D3DXCOLOR(1,1,1,0) );
|
||||
m_textHoldForOptions.BeginTweeningQueued( 0.25f ); // fade in
|
||||
@@ -251,6 +263,8 @@ void ScreenSelectCourse::AfterCourseChange()
|
||||
m_CourseContentsFrame.SetFromCourse( pCourse );
|
||||
}
|
||||
break;
|
||||
case TYPE_SECTION: // this probably means "no courses"
|
||||
break;
|
||||
default:
|
||||
ASSERT(0);
|
||||
}
|
||||
|
||||
@@ -48,6 +48,8 @@ protected:
|
||||
CourseContentsFrame m_CourseContentsFrame;
|
||||
MusicWheel m_MusicWheel;
|
||||
|
||||
bool m_bMadeChoice;
|
||||
bool m_bGoToOptions;
|
||||
BitmapText m_textHoldForOptions;
|
||||
|
||||
RandomSample m_soundSelect;
|
||||
|
||||
@@ -35,7 +35,8 @@ const float DIFFICULTY_ITEM_X[NUM_DIFFICULTY_ITEMS] = {
|
||||
CENTER_X-200, // easy
|
||||
CENTER_X, // medium
|
||||
CENTER_X+200, // hard
|
||||
SCREEN_WIDTH+CENTER_X, // Oni, page 2
|
||||
SCREEN_WIDTH+CENTER_X-100, // Oni, page 2
|
||||
SCREEN_WIDTH+CENTER_X+100, // Endless, page 2
|
||||
};
|
||||
// these sprites are bottom aligned!
|
||||
const float DIFFICULTY_ITEM_Y[NUM_DIFFICULTY_ITEMS] = {
|
||||
@@ -43,6 +44,7 @@ const float DIFFICULTY_ITEM_Y[NUM_DIFFICULTY_ITEMS] = {
|
||||
CENTER_Y-60,
|
||||
CENTER_Y-40,
|
||||
CENTER_Y-60,
|
||||
CENTER_Y-60,
|
||||
};
|
||||
|
||||
const float DIFFICULTY_ARROW_Y[NUM_DIFFICULTY_ITEMS] = {
|
||||
@@ -50,12 +52,14 @@ const float DIFFICULTY_ARROW_Y[NUM_DIFFICULTY_ITEMS] = {
|
||||
DIFFICULTY_ITEM_Y[1]+205,
|
||||
DIFFICULTY_ITEM_Y[2]+205,
|
||||
DIFFICULTY_ITEM_Y[3]+205,
|
||||
DIFFICULTY_ITEM_Y[4]+205,
|
||||
};
|
||||
const float DIFFICULTY_ARROW_X[NUM_DIFFICULTY_ITEMS][NUM_PLAYERS] = {
|
||||
{ DIFFICULTY_ITEM_X[0]-40, DIFFICULTY_ITEM_X[0]+40 },
|
||||
{ DIFFICULTY_ITEM_X[1]-40, DIFFICULTY_ITEM_X[1]+40 },
|
||||
{ DIFFICULTY_ITEM_X[2]-40, DIFFICULTY_ITEM_X[2]+40 },
|
||||
{ DIFFICULTY_ITEM_X[3]-40, DIFFICULTY_ITEM_X[3]+40 },
|
||||
{ DIFFICULTY_ITEM_X[4]-40, DIFFICULTY_ITEM_X[4]+40 },
|
||||
};
|
||||
|
||||
|
||||
@@ -232,10 +236,13 @@ void ScreenSelectDifficulty::HandleScreenMessage( const ScreenMessage SM )
|
||||
SCREENMAN->SetNewScreen( new ScreenSelectGroup );
|
||||
break;
|
||||
case 3:
|
||||
case 4:
|
||||
GAMESTATE->m_PlayMode = PLAY_MODE_ONI;
|
||||
SCREENMAN->SetNewScreen( new ScreenSelectCourse );
|
||||
break;
|
||||
case 4:
|
||||
GAMESTATE->m_PlayMode = PLAY_MODE_ENDLESS;
|
||||
SCREENMAN->SetNewScreen( new ScreenSelectGroup );
|
||||
break;
|
||||
default:
|
||||
ASSERT(0); // bad selection
|
||||
}
|
||||
@@ -271,6 +278,23 @@ void ScreenSelectDifficulty::MenuRight( const PlayerNumber p )
|
||||
ChangeTo( p, m_iSelection[p], m_iSelection[p]+1 );
|
||||
}
|
||||
|
||||
bool ScreenSelectDifficulty::IsItemOnPage2( int iItemIndex )
|
||||
{
|
||||
ASSERT( iItemIndex >= 0 && iItemIndex < NUM_DIFFICULTY_ITEMS );
|
||||
|
||||
return iItemIndex >= NUM_DIFFICULTY_CLASSES;
|
||||
}
|
||||
|
||||
bool ScreenSelectDifficulty::SelectedSomethingOnPage2()
|
||||
{
|
||||
for( int p=0; p<NUM_PLAYERS; p++ )
|
||||
{
|
||||
if( GAMESTATE->IsPlayerEnabled(p) && IsItemOnPage2(m_iSelection[p]) )
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void ScreenSelectDifficulty::ChangeTo( const PlayerNumber pn, int iSelectionWas, int iSelectionIs )
|
||||
{
|
||||
bool bChangedPagesFrom1To2 = iSelectionWas < 3 && iSelectionIs >= 3;
|
||||
@@ -421,7 +445,7 @@ void ScreenSelectDifficulty::TweenOffScreen()
|
||||
|
||||
for( int d=0; d<NUM_DIFFICULTY_ITEMS; d++ )
|
||||
{
|
||||
if( d >= 3 ) // this item is on page 2
|
||||
if( SelectedSomethingOnPage2() != IsItemOnPage2(d) ) // item isn't on selected page
|
||||
continue; // don't tween
|
||||
|
||||
const float fPauseTime = d*0.2f;
|
||||
@@ -490,9 +514,7 @@ void ScreenSelectDifficulty::TweenOnScreen()
|
||||
{
|
||||
const float fPauseTime = d*0.2f;
|
||||
|
||||
bool bIsOnPage1 = m_iSelection[PLAYER_1] >= 3;
|
||||
|
||||
if( bIsOnPage1 && d >= 3 ) // they are on page 1, but this item is on page 2
|
||||
if( SelectedSomethingOnPage2() != IsItemOnPage2(d) ) // item isn't on the current page
|
||||
continue; // don't tween
|
||||
|
||||
// set off screen
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
#include "MenuElements.h"
|
||||
|
||||
|
||||
const int NUM_DIFFICULTY_ITEMS = NUM_DIFFICULTY_CLASSES + 1; // easy, medium, hard, Oni
|
||||
const int NUM_DIFFICULTY_ITEMS = NUM_DIFFICULTY_CLASSES + 2; // easy, medium, hard, Oni, Endless
|
||||
const int NUM_PAGES = 2; // easy-medium-hard, Oni
|
||||
|
||||
class ScreenSelectDifficulty : public Screen
|
||||
@@ -41,6 +41,9 @@ public:
|
||||
private:
|
||||
void ChangeTo( const PlayerNumber pn, int iSelectionWas, int iSelectionIs );
|
||||
|
||||
bool IsItemOnPage2( int iItemIndex );
|
||||
bool SelectedSomethingOnPage2(); // checks selection of players
|
||||
|
||||
MenuElements m_Menu;
|
||||
|
||||
ActorFrame m_framePages; // 2 pages
|
||||
|
||||
@@ -67,7 +67,7 @@ ScreenSelectGame::ScreenSelectGame() :
|
||||
|
||||
void ScreenSelectGame::ImportOptions()
|
||||
{
|
||||
m_iSelectedOption[0][SG_GAME] = GAMESTATE->GetCurGame();
|
||||
m_iSelectedOption[0][SG_GAME] = GAMESTATE->m_CurGame;
|
||||
}
|
||||
|
||||
void ScreenSelectGame::ExportOptions()
|
||||
@@ -79,7 +79,7 @@ void ScreenSelectGame::ExportOptions()
|
||||
|
||||
// Switch the current style to the frist style of the selected game
|
||||
Game game = (Game)m_iSelectedOption[0][SG_GAME];
|
||||
GAMESTATE->SwitchGame( game );
|
||||
GAMESTATE->m_CurGame = game;
|
||||
PREFSMAN->ReadGamePrefsFromDisk();
|
||||
INPUTMAPPER->ReadMappingsFromDisk();
|
||||
}
|
||||
|
||||
@@ -372,7 +372,7 @@ void ScreenSelectMusic::MenuStart( const PlayerNumber p )
|
||||
{
|
||||
if( !m_MusicWheel.GetSelectedSong()->HasMusic() )
|
||||
{
|
||||
SCREENMAN->AddScreenToTop( new ScreenPrompt( "ERROR:\n \nThis song does not have a music file\n and cannot be played.", PROMPT_OK) );
|
||||
SCREENMAN->AddScreenToTop( new ScreenPrompt( SM_None, "ERROR:\n \nThis song does not have a music file\n and cannot be played.", PROMPT_OK) );
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ ScreenSelectStyle::ScreenSelectStyle()
|
||||
for( int s=0; s<NUM_STYLES; s++ )
|
||||
{
|
||||
Style style = (Style)s;
|
||||
if( StyleToGame(style) == GAMESTATE->GetCurGame() ) // games match
|
||||
if( StyleToGame(style) == GAMESTATE->m_CurGame ) // games match
|
||||
m_aPossibleStyles.Add( style );
|
||||
}
|
||||
|
||||
|
||||
@@ -25,15 +25,21 @@
|
||||
|
||||
|
||||
OptionLineData g_SongOptionsLines[] = {
|
||||
{ "Fail", 3, {"ARCADE","END OF SONG","OFF"} },
|
||||
{ "Assist", 2, {"OFF","TICK"} },
|
||||
{ "Rate", 9, {"x0.5","x0.7","x0.8","x0.9","x1.0","x1.1","x1.2","x1.3","x1.5"} },
|
||||
{ "Bars", 2, {"OFF","ON"} },
|
||||
{ "Life", 2, {"BAR","BATTERY"} },
|
||||
{ "Bar Drain", 3, {"NORMAL","NO RECOVER","SUDDEN DEATH"} },
|
||||
{ "Bat.Lives", 10, {"1","2","3","4","5","6","7","8","9","10"} },
|
||||
{ "Fail", 3, {"ARCADE","END OF SONG","OFF"} },
|
||||
{ "Assist", 2, {"OFF","TICK"} },
|
||||
{ "Rate", 9, {"x0.7","x0.8","x0.9","x1.0","x1.1","x1.2","x1.3","x1.4","x1.5"} },
|
||||
{ "Bars", 2, {"OFF","ON"} },
|
||||
};
|
||||
const int NUM_SONG_OPTIONS_LINES = sizeof(g_SongOptionsLines)/sizeof(OptionLineData);
|
||||
|
||||
enum {
|
||||
SO_FAIL = 0,
|
||||
SO_LIFE = 0,
|
||||
SO_DRAIN,
|
||||
SO_BAT_LIVES,
|
||||
SO_FAIL,
|
||||
SO_ASSIST,
|
||||
SO_RATE,
|
||||
SO_BARS
|
||||
@@ -59,38 +65,43 @@ void ScreenSongOptions::ImportOptions()
|
||||
{
|
||||
SongOptions &so = GAMESTATE->m_SongOptions;
|
||||
|
||||
m_iSelectedOption[0][SO_LIFE] = so.m_LifeType;
|
||||
m_iSelectedOption[0][SO_BAT_LIVES] = so.m_iBatteryLives-1;
|
||||
m_iSelectedOption[0][SO_FAIL] = so.m_FailType;
|
||||
m_iSelectedOption[0][SO_ASSIST] = so.m_AssistType;
|
||||
|
||||
if( so.m_fMusicRate == 0.5f ) m_iSelectedOption[0][SO_RATE] = 0;
|
||||
else if( so.m_fMusicRate == 0.7f ) m_iSelectedOption[0][SO_RATE] = 1;
|
||||
else if( so.m_fMusicRate == 0.8f ) m_iSelectedOption[0][SO_RATE] = 2;
|
||||
else if( so.m_fMusicRate == 0.9f ) m_iSelectedOption[0][SO_RATE] = 3;
|
||||
else if( so.m_fMusicRate == 1.0f ) m_iSelectedOption[0][SO_RATE] = 4;
|
||||
else if( so.m_fMusicRate == 1.1f ) m_iSelectedOption[0][SO_RATE] = 5;
|
||||
else if( so.m_fMusicRate == 1.2f ) m_iSelectedOption[0][SO_RATE] = 6;
|
||||
else if( so.m_fMusicRate == 1.3f ) m_iSelectedOption[0][SO_RATE] = 7;
|
||||
if( so.m_fMusicRate == 0.7f ) m_iSelectedOption[0][SO_RATE] = 0;
|
||||
else if( so.m_fMusicRate == 0.8f ) m_iSelectedOption[0][SO_RATE] = 1;
|
||||
else if( so.m_fMusicRate == 0.9f ) m_iSelectedOption[0][SO_RATE] = 2;
|
||||
else if( so.m_fMusicRate == 1.0f ) m_iSelectedOption[0][SO_RATE] = 3;
|
||||
else if( so.m_fMusicRate == 1.1f ) m_iSelectedOption[0][SO_RATE] = 4;
|
||||
else if( so.m_fMusicRate == 1.2f ) m_iSelectedOption[0][SO_RATE] = 5;
|
||||
else if( so.m_fMusicRate == 1.3f ) m_iSelectedOption[0][SO_RATE] = 6;
|
||||
else if( so.m_fMusicRate == 1.4f ) m_iSelectedOption[0][SO_RATE] = 7;
|
||||
else if( so.m_fMusicRate == 1.5f ) m_iSelectedOption[0][SO_RATE] = 8;
|
||||
else m_iSelectedOption[0][SO_RATE] = 4;
|
||||
else m_iSelectedOption[0][SO_RATE] = 3;
|
||||
}
|
||||
|
||||
void ScreenSongOptions::ExportOptions()
|
||||
{
|
||||
SongOptions &so = GAMESTATE->m_SongOptions;
|
||||
|
||||
so.m_LifeType = (SongOptions::LifeType)m_iSelectedOption[0][SO_LIFE];
|
||||
so.m_DrainType = (SongOptions::DrainType)m_iSelectedOption[0][SO_DRAIN];
|
||||
so.m_iBatteryLives = m_iSelectedOption[0][SO_BAT_LIVES]+1;
|
||||
so.m_FailType = (SongOptions::FailType)m_iSelectedOption[0][SO_FAIL];
|
||||
so.m_AssistType = (SongOptions::AssistType)m_iSelectedOption[0][SO_ASSIST];
|
||||
|
||||
switch( m_iSelectedOption[0][SO_RATE] )
|
||||
{
|
||||
case 0: so.m_fMusicRate = 0.5f; break;
|
||||
case 1: so.m_fMusicRate = 0.7f; break;
|
||||
case 2: so.m_fMusicRate = 0.8f; break;
|
||||
case 3: so.m_fMusicRate = 0.9f; break;
|
||||
case 4: so.m_fMusicRate = 1.0f; break;
|
||||
case 5: so.m_fMusicRate = 1.1f; break;
|
||||
case 6: so.m_fMusicRate = 1.2f; break;
|
||||
case 7: so.m_fMusicRate = 1.3f; break;
|
||||
case 0: so.m_fMusicRate = 0.7f; break;
|
||||
case 1: so.m_fMusicRate = 0.8f; break;
|
||||
case 2: so.m_fMusicRate = 0.9f; break;
|
||||
case 3: so.m_fMusicRate = 1.0f; break;
|
||||
case 4: so.m_fMusicRate = 1.1f; break;
|
||||
case 5: so.m_fMusicRate = 1.2f; break;
|
||||
case 6: so.m_fMusicRate = 1.3f; break;
|
||||
case 7: so.m_fMusicRate = 1.4f; break;
|
||||
case 8: so.m_fMusicRate = 1.5f; break;
|
||||
default: ASSERT( false );
|
||||
}
|
||||
|
||||
@@ -71,7 +71,6 @@ ScreenTitleMenu::ScreenTitleMenu()
|
||||
|
||||
|
||||
// reset game info
|
||||
GAMESTATE->SwitchGame( GAMESTATE->GetCurGame() );
|
||||
GAMESTATE->Reset();
|
||||
PREFSMAN->ReadGamePrefsFromDisk();
|
||||
INPUTMAPPER->ReadMappingsFromDisk();
|
||||
@@ -105,7 +104,7 @@ ScreenTitleMenu::ScreenTitleMenu()
|
||||
|
||||
m_textVersion.Load( THEME->GetPathTo(FONT_NORMAL) );
|
||||
m_textVersion.SetHorizAlign( Actor::align_right );
|
||||
m_textVersion.SetText( "v3.0 beta 4" );
|
||||
m_textVersion.SetText( "v3.0 beta 5" );
|
||||
m_textVersion.SetDiffuseColor( D3DXCOLOR(0.6f,0.6f,0.6f,1) ); // light gray
|
||||
m_textVersion.SetXY( SCREEN_RIGHT-16, SCREEN_BOTTOM-20 );
|
||||
m_textVersion.SetZoom( 0.5f );
|
||||
@@ -148,7 +147,7 @@ ScreenTitleMenu::ScreenTitleMenu()
|
||||
// I don't wanna fix this a 3rd TIME!!
|
||||
// - Andy.
|
||||
|
||||
if( GAMESTATE->GetCurGame() != GAME_EZ2 )
|
||||
if( GAMESTATE->m_CurGame != GAME_EZ2 )
|
||||
PREFSMAN->m_sAnnouncer = "";
|
||||
|
||||
|
||||
@@ -185,7 +184,7 @@ ScreenTitleMenu::ScreenTitleMenu()
|
||||
|
||||
static int announcercheck=0;
|
||||
|
||||
if( GAMESTATE->GetCurGame() != GAME_EZ2 && PREFSMAN->m_sAnnouncer == "ez2" && announcercheck == 0)
|
||||
if( GAMESTATE->m_CurGame != GAME_EZ2 && PREFSMAN->m_sAnnouncer == "ez2" && announcercheck == 0)
|
||||
{
|
||||
ANNOUNCER->SwitchAnnouncer( "default" );
|
||||
announcercheck = 1;
|
||||
@@ -321,7 +320,7 @@ void ScreenTitleMenu::MenuStart( const PlayerNumber p )
|
||||
switch( m_TitleMenuChoice )
|
||||
{
|
||||
case CHOICE_GAME_START:
|
||||
if( GAMESTATE->GetCurGame() == GAME_EZ2 )
|
||||
if( GAMESTATE->m_CurGame == GAME_EZ2 )
|
||||
{
|
||||
m_soundSelect.PlayRandom();
|
||||
m_Fade.CloseWipingRight( SM_GoToEz2 );
|
||||
|
||||
+13
-3
@@ -18,6 +18,8 @@
|
||||
#include "Song.h"
|
||||
#include "NoteData.h"
|
||||
#include "MsdFile.h"
|
||||
#include "RageSoundStream.h"
|
||||
#include "RageException.h"
|
||||
|
||||
|
||||
const int FILE_CACHE_VERSION = 45; // increment this to force a cache reload (useful when the SM file format changes)
|
||||
@@ -574,7 +576,7 @@ bool Song::LoadFromBMSDir( CString sDir )
|
||||
file.Close();
|
||||
}
|
||||
break;
|
||||
case 9: // freeze
|
||||
case 9: // stop
|
||||
{
|
||||
// This is a very inefficient way to parse, but it doesn't
|
||||
// matter much because this is only parsed on the first run after the song is installed.
|
||||
@@ -616,7 +618,7 @@ bool Song::LoadFromBMSDir( CString sDir )
|
||||
value_name = line;
|
||||
}
|
||||
|
||||
if( 0==stricmp(value_name, sTagToLookFor) == 0 )
|
||||
if( 0==stricmp(value_name, sTagToLookFor) )
|
||||
{
|
||||
// find the BPM at the time of this freeze
|
||||
float fBPM = -1;
|
||||
@@ -787,7 +789,10 @@ bool Song::LoadFromDWIFile( CString sPath )
|
||||
}
|
||||
}
|
||||
|
||||
else if( 0==stricmp(sValueName,"#SINGLE") || 0==stricmp(sValueName,"#DOUBLE") || 0==stricmp(sValueName,"#COUPLE") )
|
||||
else if( 0==stricmp(sValueName,"#SINGLE") ||
|
||||
0==stricmp(sValueName,"#DOUBLE") ||
|
||||
0==stricmp(sValueName,"#COUPLE") ||
|
||||
0==stricmp(sValueName,"#SOLO"))
|
||||
{
|
||||
Notes* pNewNotes = new Notes;
|
||||
pNewNotes->LoadFromDWITokens(
|
||||
@@ -1012,6 +1017,7 @@ void Song::TidyUpData()
|
||||
GetDirListing( m_sSongDir + CString("*banner*.png"), arrayPossibleBanners );
|
||||
GetDirListing( m_sSongDir + CString("*banner*.jpg"), arrayPossibleBanners );
|
||||
GetDirListing( m_sSongDir + CString("*banner*.bmp"), arrayPossibleBanners );
|
||||
GetDirListing( m_sSongDir + CString("*banner*.gif"), arrayPossibleBanners );
|
||||
if( arrayPossibleBanners.GetSize() > 0 )
|
||||
m_sBannerFile = arrayPossibleBanners[0];
|
||||
}
|
||||
@@ -1025,9 +1031,11 @@ void Song::TidyUpData()
|
||||
GetDirListing( m_sSongDir + CString("*bg*.png"), arrayPossibleBGs );
|
||||
GetDirListing( m_sSongDir + CString("*bg*.jpg"), arrayPossibleBGs );
|
||||
GetDirListing( m_sSongDir + CString("*bg*.bmp"), arrayPossibleBGs );
|
||||
GetDirListing( m_sSongDir + CString("*bg*.gif"), arrayPossibleBGs );
|
||||
GetDirListing( m_sSongDir + CString("*background*.png"), arrayPossibleBGs );
|
||||
GetDirListing( m_sSongDir + CString("*background*.jpg"), arrayPossibleBGs );
|
||||
GetDirListing( m_sSongDir + CString("*background*.bmp"), arrayPossibleBGs );
|
||||
GetDirListing( m_sSongDir + CString("*background*.gif"), arrayPossibleBGs );
|
||||
if( arrayPossibleBGs.GetSize() > 0 )
|
||||
m_sBackgroundFile = arrayPossibleBGs[0];
|
||||
}
|
||||
@@ -1041,6 +1049,7 @@ void Song::TidyUpData()
|
||||
GetDirListing( m_sSongDir + CString("*cdtitle*.png"), arrayPossibleCDTitles );
|
||||
GetDirListing( m_sSongDir + CString("*cdtitle*.jpg"), arrayPossibleCDTitles );
|
||||
GetDirListing( m_sSongDir + CString("*cdtitle*.bmp"), arrayPossibleCDTitles );
|
||||
GetDirListing( m_sSongDir + CString("*cdtitle*.gif"), arrayPossibleCDTitles );
|
||||
if( arrayPossibleCDTitles.GetSize() > 0 )
|
||||
m_sCDTitleFile = arrayPossibleCDTitles[0];
|
||||
}
|
||||
@@ -1053,6 +1062,7 @@ void Song::TidyUpData()
|
||||
GetDirListing( m_sSongDir + CString("*.png"), arrayImages );
|
||||
GetDirListing( m_sSongDir + CString("*.jpg"), arrayImages );
|
||||
GetDirListing( m_sSongDir + CString("*.bmp"), arrayImages );
|
||||
GetDirListing( m_sSongDir + CString("*.gif"), arrayImages );
|
||||
|
||||
for( int i=0; i<arrayImages.GetSize(); i++ ) // foreach image
|
||||
{
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
|
||||
#include "GameState.h"
|
||||
#include "PrefsManager.h"
|
||||
#include "RageException.h"
|
||||
#include "RageTimer.h"
|
||||
|
||||
SongManager* SONGMAN = NULL; // global and accessable from anywhere in our program
|
||||
|
||||
@@ -393,9 +395,12 @@ void SongManager::InitCoursesFromDisk()
|
||||
{
|
||||
Course course;
|
||||
course.LoadFromCRSFile( "Courses\\" + saCourseFiles[i], m_pSongs );
|
||||
m_aCourses.Add( course );
|
||||
if( course.m_iStages > 0 )
|
||||
m_aCourses.Add( course );
|
||||
}
|
||||
|
||||
/*
|
||||
Chris: Default courses were a bad idea. Get rid of them.
|
||||
|
||||
//
|
||||
// Create default courses
|
||||
@@ -417,6 +422,7 @@ void SongManager::InitCoursesFromDisk()
|
||||
m_aCourses.Add( course );
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
void SongManager::ReloadCourses()
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
#include "stdafx.h"
|
||||
/*
|
||||
-----------------------------------------------------------------------------
|
||||
Class: SongOptions
|
||||
|
||||
Desc: See header.
|
||||
|
||||
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||
Chris Danford
|
||||
-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
#pragma once
|
||||
/*
|
||||
-----------------------------------------------------------------------------
|
||||
Course: SongOptions
|
||||
|
||||
Desc: Per-song options that are not saved between sessions. These are options
|
||||
that should probably be disabled in a coin-operated machine.
|
||||
|
||||
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||
Chris Danford
|
||||
-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
|
||||
struct SongOptions
|
||||
{
|
||||
enum LifeType { LIFE_BAR_NORMAL=0, LIFE_BATTERY };
|
||||
LifeType m_LifeType;
|
||||
enum DrainType { DRAIN_NORMAL, DRAIN_NO_RECOVER, DRAIN_SUDDEN_DEATH };
|
||||
DrainType m_DrainType; // only used with LifeBar
|
||||
int m_iBatteryLives;
|
||||
enum FailType { FAIL_ARCADE=0, FAIL_END_OF_SONG, FAIL_OFF };
|
||||
FailType m_FailType;
|
||||
enum AssistType { ASSIST_NONE=0, ASSIST_TICK };
|
||||
AssistType m_AssistType;
|
||||
float m_fMusicRate;
|
||||
|
||||
SongOptions() {
|
||||
m_LifeType = LIFE_BAR_NORMAL;
|
||||
m_iBatteryLives = 4;
|
||||
m_FailType = FAIL_ARCADE;
|
||||
m_AssistType = ASSIST_NONE;
|
||||
m_fMusicRate = 1.0f;
|
||||
};
|
||||
CString GetString() { return ""; };
|
||||
void FromString( CString sOptions ) {};
|
||||
};
|
||||
@@ -16,7 +16,7 @@
|
||||
#include "IniFile.h"
|
||||
#include <math.h>
|
||||
#include "RageLog.h"
|
||||
|
||||
#include "RageException.h"
|
||||
#include "PrefsManager.h"
|
||||
|
||||
|
||||
|
||||
@@ -16,19 +16,20 @@
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
#define VC_EXTRALEAN // Exclude rarely-used stuff from Screens headers
|
||||
#define VC_EXTRALEAN // Exclude rarely-used stuff
|
||||
|
||||
#include <afxwin.h> // MFC core and standard components
|
||||
#include <afxext.h> // MFC extensions
|
||||
#include <afxtempl.h> // MFC templated collections
|
||||
#ifndef _AFX_NO_AFXCMN_SUPPORT
|
||||
#include <afxcmn.h> // MFC support for Screens Common Controls
|
||||
#include <afxcmn.h> // MFC support for Common Controls
|
||||
#endif // _AFX_NO_AFXCMN_SUPPORT
|
||||
|
||||
|
||||
//
|
||||
// Rage global classes
|
||||
//
|
||||
/*
|
||||
#include "RageLog.h"
|
||||
#include "RageDisplay.h"
|
||||
#include "RageTextureManager.h"
|
||||
@@ -37,7 +38,7 @@
|
||||
#include "RageInput.h"
|
||||
#include "RageTimer.h"
|
||||
#include "RageException.h"
|
||||
|
||||
*/
|
||||
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
|
||||
@@ -15,6 +15,18 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
#include "resource.h"
|
||||
|
||||
//
|
||||
// Rage global classes
|
||||
//
|
||||
#include "RageLog.h"
|
||||
#include "RageDisplay.h"
|
||||
#include "RageTextureManager.h"
|
||||
#include "RageSound.h"
|
||||
#include "RageMusic.h"
|
||||
#include "RageInput.h"
|
||||
#include "RageTimer.h"
|
||||
#include "RageException.h"
|
||||
|
||||
//
|
||||
// StepMania global classes
|
||||
//
|
||||
@@ -578,6 +590,8 @@ HRESULT CreateObjects( HWND hWnd )
|
||||
|
||||
TEXTUREMAN = new RageTextureManager( DISPLAY );
|
||||
|
||||
PREFSMAN->ReadGlobalPrefsFromDisk( true );
|
||||
|
||||
// These things depend on the TextureManager, so do them after!
|
||||
FONT = new FontManager;
|
||||
SCREENMAN = new ScreenManager;
|
||||
@@ -614,6 +628,7 @@ HRESULT CreateObjects( HWND hWnd )
|
||||
//-----------------------------------------------------------------------------
|
||||
void DestroyObjects()
|
||||
{
|
||||
SAFE_DELETE( SCREENMAN );
|
||||
SAFE_DELETE( INPUTQUEUE );
|
||||
SAFE_DELETE( INPUTMAPPER );
|
||||
SAFE_DELETE( INPUTFILTER );
|
||||
@@ -627,7 +642,6 @@ void DestroyObjects()
|
||||
SAFE_DELETE( MUSIC );
|
||||
SAFE_DELETE( SOUND );
|
||||
SAFE_DELETE( TIMER );
|
||||
SAFE_DELETE( SCREENMAN );
|
||||
SAFE_DELETE( FONT );
|
||||
SAFE_DELETE( TEXTUREMAN );
|
||||
SAFE_DELETE( DISPLAY );
|
||||
@@ -875,8 +889,8 @@ void ApplyGraphicOptions()
|
||||
if( DISPLAY->SwitchDisplayMode(bWindowed, iDisplayWidth, iDisplayHeight, iDisplayBPP, iRefreshRate) )
|
||||
goto success;
|
||||
|
||||
// We failed. Try full screen with same params.
|
||||
iRefreshRate = 60;
|
||||
// We failed. Using default refresh rate.
|
||||
iRefreshRate = 0;
|
||||
if( DISPLAY->SwitchDisplayMode(bWindowed, iDisplayWidth, iDisplayHeight, iDisplayBPP, iRefreshRate) )
|
||||
goto success;
|
||||
|
||||
|
||||
@@ -224,6 +224,10 @@ SOURCE=.\Font.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\GameConstantsAndTypes.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\GameConstantsAndTypes.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
@@ -236,6 +240,10 @@ SOURCE=.\GameDef.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\GameInput.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\GameInput.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
@@ -300,6 +308,14 @@ SOURCE=.\PlayerInput.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\PlayerOptions.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\PlayerOptions.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\RandomSample.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
@@ -324,6 +340,14 @@ SOURCE=.\song.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\SongOptions.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\SongOptions.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\StyleDef.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
@@ -336,6 +336,9 @@
|
||||
<File
|
||||
RelativePath=".\Font.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="GameConstantsAndTypes.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="GameConstantsAndTypes.h">
|
||||
</File>
|
||||
@@ -345,6 +348,9 @@
|
||||
<File
|
||||
RelativePath="GameDef.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="GameInput.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="GameInput.h">
|
||||
</File>
|
||||
@@ -390,6 +396,12 @@
|
||||
<File
|
||||
RelativePath=".\Player.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="PlayerOptions.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="PlayerOptions.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\RandomSample.cpp">
|
||||
</File>
|
||||
@@ -408,6 +420,12 @@
|
||||
<File
|
||||
RelativePath="Song.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="SongOptions.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="SongOptions.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\StyleDef.cpp">
|
||||
</File>
|
||||
@@ -458,6 +476,9 @@
|
||||
<File
|
||||
RelativePath=".\dxutil.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="dxutil.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\resource.h">
|
||||
</File>
|
||||
|
||||
@@ -49,8 +49,8 @@ public:
|
||||
struct ColumnInfo
|
||||
{
|
||||
int track; // take note data from this track
|
||||
InstrumentNumber number; // use this instrument to hit a note on this track
|
||||
InstrumentButton button; // use this button to hit a note on this track
|
||||
GameController number; // use this instrument to hit a note on this track
|
||||
GameButton button; // use this button to hit a note on this track
|
||||
float fXOffset; // x position of the column relative to player center
|
||||
};
|
||||
ColumnInfo m_ColumnInfo[NUM_PLAYERS][MAX_COLS_PER_PLAYER]; // maps each players' column to a track in the NoteData
|
||||
@@ -58,8 +58,8 @@ public:
|
||||
|
||||
inline GameInput StyleInputToGameInput( const StyleInput StyleI )
|
||||
{
|
||||
InstrumentNumber n = m_ColumnInfo[StyleI.player][StyleI.col].number;
|
||||
InstrumentButton b = m_ColumnInfo[StyleI.player][StyleI.col].button;
|
||||
GameController n = m_ColumnInfo[StyleI.player][StyleI.col].number;
|
||||
GameButton b = m_ColumnInfo[StyleI.player][StyleI.col].button;
|
||||
return GameInput( n, b );
|
||||
};
|
||||
|
||||
@@ -69,7 +69,7 @@ public:
|
||||
{
|
||||
for( int t=0; t<MAX_NOTE_TRACKS; t++ )
|
||||
{
|
||||
if( m_ColumnInfo[p][t].number == GameI.number &&
|
||||
if( m_ColumnInfo[p][t].number == GameI.controller &&
|
||||
m_ColumnInfo[p][t].button == GameI.button )
|
||||
{
|
||||
return StyleInput( (PlayerNumber)p, t );
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#include "ThemeManager.h"
|
||||
#include "RageLog.h"
|
||||
#include "PrefsManager.h"
|
||||
#include "RageException.h"
|
||||
|
||||
|
||||
|
||||
@@ -50,8 +51,10 @@ bool ThemeManager::DoesThemeExist( CString sThemeName )
|
||||
CStringArray asThemeNames;
|
||||
GetThemeNames( asThemeNames );
|
||||
for( int i=0; i<asThemeNames.GetSize(); i++ )
|
||||
{
|
||||
if( 0==stricmp(sThemeName, asThemeNames[i]) )
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -66,7 +69,7 @@ void ThemeManager::SwitchTheme( CString sThemeName )
|
||||
{
|
||||
if( m_sCurThemeName == "" )
|
||||
m_sCurThemeName = BASE_THEME_NAME;
|
||||
if( !DoesThemeExist(sThemeName) )
|
||||
else if( !DoesThemeExist(sThemeName) )
|
||||
m_sCurThemeName = BASE_THEME_NAME;
|
||||
else
|
||||
m_sCurThemeName = sThemeName;
|
||||
@@ -124,6 +127,7 @@ CString ThemeManager::GetPathTo( ThemeElement te, CString sThemeName )
|
||||
case GRAPHIC_GAMEPLAY_LIFEMETER_BATTERY: sAssetPrefix = "Graphics\\gameplay lifemeter battery 1x4"; break;
|
||||
case GRAPHIC_GAMEPLAY_LIFEMETER_STREAM_NORMAL: sAssetPrefix = "Graphics\\gameplay lifemeter stream normal";break;
|
||||
case GRAPHIC_GAMEPLAY_LIFEMETER_STREAM_HOT: sAssetPrefix = "Graphics\\gameplay lifemeter stream hot"; break;
|
||||
case GRAPHIC_GAMEPLAY_ONI_GAMEOVER: sAssetPrefix = "Graphics\\gameplay oni gameover"; break;
|
||||
case GRAPHIC_LOADING: sAssetPrefix = "Graphics\\loading"; break;
|
||||
case GRAPHIC_KEEP_ALIVE: sAssetPrefix = "Graphics\\keep alive"; break;
|
||||
case GRAPHIC_MENU_BOTTOM_EDGE: sAssetPrefix = "Graphics\\menu bottom edge"; break;
|
||||
@@ -189,6 +193,8 @@ CString ThemeManager::GetPathTo( ThemeElement te, CString sThemeName )
|
||||
case GRAPHIC_SELECT_MUSIC_SONG_BAR: sAssetPrefix = "Graphics\\select music song bar"; break;
|
||||
case GRAPHIC_SELECT_MUSIC_SONG_HIGHLIGHT: sAssetPrefix = "Graphics\\select music song highlight"; break;
|
||||
case GRAPHIC_SELECT_MUSIC_TOP_EDGE: sAssetPrefix = "Graphics\\select music top edge"; break;
|
||||
case GRAPHIC_SELECT_MUSIC_LONG_BALLOON: sAssetPrefix = "Graphics\\select music long balloon"; break;
|
||||
case GRAPHIC_SELECT_MUSIC_MARATHON_BALLOON: sAssetPrefix = "Graphics\\select music marathon balloon"; break;
|
||||
case GRAPHIC_SELECT_STYLE_BACKGROUND: sAssetPrefix = "Graphics\\select Style background"; break;
|
||||
case GRAPHIC_SELECT_STYLE_EXPLANATION: sAssetPrefix = "Graphics\\select Style explanation"; break;
|
||||
case GRAPHIC_SELECT_STYLE_TOP_EDGE: sAssetPrefix = "Graphics\\select Style top edge"; break;
|
||||
@@ -198,17 +204,17 @@ CString ThemeManager::GetPathTo( ThemeElement te, CString sThemeName )
|
||||
case GRAPHIC_SELECT_STYLE_INFO_GAME_0_STYLE_2: sAssetPrefix = "Graphics\\select style info game 0 style 2"; break;
|
||||
case GRAPHIC_SELECT_STYLE_INFO_GAME_0_STYLE_3: sAssetPrefix = "Graphics\\select style info game 0 style 3"; break;
|
||||
case GRAPHIC_SELECT_STYLE_INFO_GAME_0_STYLE_4: sAssetPrefix = "Graphics\\select style info game 0 style 4"; break;
|
||||
// case GRAPHIC_SELECT_STYLE_INFO_GAME_1_STYLE_0: sAssetPrefix = "Graphics\\select style info game 1 style 0"; break;
|
||||
// case GRAPHIC_SELECT_STYLE_INFO_GAME_1_STYLE_1: sAssetPrefix = "Graphics\\select style info game 1 style 1"; break;
|
||||
// case GRAPHIC_SELECT_STYLE_INFO_GAME_1_STYLE_2: sAssetPrefix = "Graphics\\select style info game 1 style 2"; break;
|
||||
// case GRAPHIC_SELECT_STYLE_INFO_GAME_CONTROLLER_1_STYLE_0: sAssetPrefix = "Graphics\\select style info game 1 style 0"; break;
|
||||
// case GRAPHIC_SELECT_STYLE_INFO_GAME_CONTROLLER_1_STYLE_1: sAssetPrefix = "Graphics\\select style info game 1 style 1"; break;
|
||||
// case GRAPHIC_SELECT_STYLE_INFO_GAME_CONTROLLER_1_STYLE_2: sAssetPrefix = "Graphics\\select style info game 1 style 2"; break;
|
||||
case GRAPHIC_SELECT_STYLE_PREVIEW_GAME_0_STYLE_0: sAssetPrefix = "Graphics\\select style preview game 0 style 0"; break;
|
||||
case GRAPHIC_SELECT_STYLE_PREVIEW_GAME_0_STYLE_1: sAssetPrefix = "Graphics\\select style preview game 0 style 1"; break;
|
||||
case GRAPHIC_SELECT_STYLE_PREVIEW_GAME_0_STYLE_2: sAssetPrefix = "Graphics\\select style preview game 0 style 2"; break;
|
||||
case GRAPHIC_SELECT_STYLE_PREVIEW_GAME_0_STYLE_3: sAssetPrefix = "Graphics\\select style preview game 0 style 3"; break;
|
||||
case GRAPHIC_SELECT_STYLE_PREVIEW_GAME_0_STYLE_4: sAssetPrefix = "Graphics\\select style preview game 0 style 4"; break;
|
||||
// case GRAPHIC_SELECT_STYLE_PREVIEW_GAME_1_STYLE_0: sAssetPrefix = "Graphics\\select style preview game 1 style 0"; break;
|
||||
// case GRAPHIC_SELECT_STYLE_PREVIEW_GAME_1_STYLE_1: sAssetPrefix = "Graphics\\select style preview game 1 style 1"; break;
|
||||
// case GRAPHIC_SELECT_STYLE_PREVIEW_GAME_1_STYLE_2: sAssetPrefix = "Graphics\\select style preview game 1 style 2"; break;
|
||||
// case GRAPHIC_SELECT_STYLE_PREVIEW_GAME_CONTROLLER_1_STYLE_0: sAssetPrefix = "Graphics\\select style preview game 1 style 0"; break;
|
||||
// case GRAPHIC_SELECT_STYLE_PREVIEW_GAME_CONTROLLER_1_STYLE_1: sAssetPrefix = "Graphics\\select style preview game 1 style 1"; break;
|
||||
// case GRAPHIC_SELECT_STYLE_PREVIEW_GAME_CONTROLLER_1_STYLE_2: sAssetPrefix = "Graphics\\select style preview game 1 style 2"; break;
|
||||
case GRAPHIC_SONG_OPTIONS_BACKGROUND: sAssetPrefix = "Graphics\\song options background"; break;
|
||||
case GRAPHIC_SONG_OPTIONS_TOP_EDGE: sAssetPrefix = "Graphics\\song options top edge"; break;
|
||||
case GRAPHIC_TITLE_MENU_BACKGROUND: sAssetPrefix = "Graphics\\title menu background"; break;
|
||||
|
||||
@@ -51,6 +51,7 @@ enum ThemeElement {
|
||||
GRAPHIC_GAMEPLAY_LIFEMETER_BATTERY,
|
||||
GRAPHIC_GAMEPLAY_LIFEMETER_STREAM_NORMAL,
|
||||
GRAPHIC_GAMEPLAY_LIFEMETER_STREAM_HOT,
|
||||
GRAPHIC_GAMEPLAY_ONI_GAMEOVER,
|
||||
GRAPHIC_LOADING,
|
||||
GRAPHIC_KEEP_ALIVE,
|
||||
GRAPHIC_MENU_BOTTOM_EDGE,
|
||||
@@ -116,6 +117,8 @@ enum ThemeElement {
|
||||
GRAPHIC_SELECT_MUSIC_SONG_BAR,
|
||||
GRAPHIC_SELECT_MUSIC_SONG_HIGHLIGHT,
|
||||
GRAPHIC_SELECT_MUSIC_TOP_EDGE,
|
||||
GRAPHIC_SELECT_MUSIC_LONG_BALLOON,
|
||||
GRAPHIC_SELECT_MUSIC_MARATHON_BALLOON,
|
||||
GRAPHIC_SELECT_STYLE_BACKGROUND,
|
||||
GRAPHIC_SELECT_STYLE_TOP_EDGE,
|
||||
GRAPHIC_SELECT_STYLE_EXPLANATION,
|
||||
@@ -125,17 +128,17 @@ enum ThemeElement {
|
||||
GRAPHIC_SELECT_STYLE_INFO_GAME_0_STYLE_2,
|
||||
GRAPHIC_SELECT_STYLE_INFO_GAME_0_STYLE_3,
|
||||
GRAPHIC_SELECT_STYLE_INFO_GAME_0_STYLE_4,
|
||||
// GRAPHIC_SELECT_STYLE_INFO_GAME_1_STYLE_0,
|
||||
// GRAPHIC_SELECT_STYLE_INFO_GAME_1_STYLE_1,
|
||||
// GRAPHIC_SELECT_STYLE_INFO_GAME_1_STYLE_2,
|
||||
// GRAPHIC_SELECT_STYLE_INFO_GAME_CONTROLLER_1_STYLE_0,
|
||||
// GRAPHIC_SELECT_STYLE_INFO_GAME_CONTROLLER_1_STYLE_1,
|
||||
// GRAPHIC_SELECT_STYLE_INFO_GAME_CONTROLLER_1_STYLE_2,
|
||||
GRAPHIC_SELECT_STYLE_PREVIEW_GAME_0_STYLE_0,
|
||||
GRAPHIC_SELECT_STYLE_PREVIEW_GAME_0_STYLE_1,
|
||||
GRAPHIC_SELECT_STYLE_PREVIEW_GAME_0_STYLE_2,
|
||||
GRAPHIC_SELECT_STYLE_PREVIEW_GAME_0_STYLE_3,
|
||||
GRAPHIC_SELECT_STYLE_PREVIEW_GAME_0_STYLE_4,
|
||||
// GRAPHIC_SELECT_STYLE_PREVIEW_GAME_1_STYLE_0,
|
||||
// GRAPHIC_SELECT_STYLE_PREVIEW_GAME_1_STYLE_1,
|
||||
// GRAPHIC_SELECT_STYLE_PREVIEW_GAME_1_STYLE_2,
|
||||
// GRAPHIC_SELECT_STYLE_PREVIEW_GAME_CONTROLLER_1_STYLE_0,
|
||||
// GRAPHIC_SELECT_STYLE_PREVIEW_GAME_CONTROLLER_1_STYLE_1,
|
||||
// GRAPHIC_SELECT_STYLE_PREVIEW_GAME_CONTROLLER_1_STYLE_2,
|
||||
GRAPHIC_SONG_OPTIONS_BACKGROUND,
|
||||
GRAPHIC_SONG_OPTIONS_TOP_EDGE,
|
||||
GRAPHIC_TITLE_MENU_BACKGROUND,
|
||||
|
||||
@@ -52,5 +52,6 @@ void TipDisplay::Update( float fDeltaTime )
|
||||
m_iCurTipIndex++;
|
||||
m_iCurTipIndex = m_iCurTipIndex % m_arrayTips.GetSize();
|
||||
m_fSecsUntilSwitch = TIP_SHOW_TIME;
|
||||
m_textTip.SetText( m_arrayTips[m_iCurTipIndex] );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -130,6 +130,13 @@ public:
|
||||
break;
|
||||
return m_BPMSegments[i].m_fBPM;
|
||||
};
|
||||
BPMSegment& GetBPMSegmentAtBeat( float fBeat )
|
||||
{
|
||||
for( int i=0; i<m_BPMSegments.GetSize()-1; i++ )
|
||||
if( m_BPMSegments[i+1].m_fStartBeat > fBeat )
|
||||
break;
|
||||
return m_BPMSegments[i];
|
||||
};
|
||||
CString GetAnimationAtBeat( float fBeat )
|
||||
{
|
||||
for( int i=0; i<m_AnimationSegments.GetSize()-1; i++ )
|
||||
|
||||
Reference in New Issue
Block a user