Fixed preferred difficulty on select music screen and fixed transforms for TurnTypes
This commit is contained in:
@@ -25,6 +25,22 @@ BannerWithFrame::BannerWithFrame()
|
|||||||
|
|
||||||
this->AddSubActor( &m_Banner );
|
this->AddSubActor( &m_Banner );
|
||||||
this->AddSubActor( &m_sprBannerFrame );
|
this->AddSubActor( &m_sprBannerFrame );
|
||||||
|
for( int p=0; p<NUM_PLAYERS; p++ )
|
||||||
|
{
|
||||||
|
float fX = (m_sprBannerFrame.GetUnzoomedWidth()/2-26) * (p==PLAYER_1 ? -1 : 1 );
|
||||||
|
float fY = m_sprBannerFrame.GetUnzoomedHeight()/2-26;
|
||||||
|
m_Icon[p].SetX( fX );
|
||||||
|
m_Icon[p].SetY( fY );
|
||||||
|
this->AddSubActor( &m_Icon[p] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BannerWithFrame::LoadFromSongAndNotes( Song* pSong, Notes* pNotes[NUM_PLAYERS] )
|
||||||
|
{
|
||||||
|
LoadFromSong( pSong );
|
||||||
|
|
||||||
|
for( int p=0; p<NUM_PLAYERS; p++ )
|
||||||
|
m_Icon[p].SetFromNotes( pNotes[p] ); // NULL pNotes menas icon is hidden
|
||||||
}
|
}
|
||||||
|
|
||||||
void BannerWithFrame::LoadFromSong( Song* pSong )
|
void BannerWithFrame::LoadFromSong( Song* pSong )
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
#include "ActorFrame.h"
|
#include "ActorFrame.h"
|
||||||
#include "Sprite.h"
|
#include "Sprite.h"
|
||||||
#include "Banner.h"
|
#include "Banner.h"
|
||||||
|
#include "DifficultyIcon.h"
|
||||||
class Song;
|
class Song;
|
||||||
class Course;
|
class Course;
|
||||||
|
|
||||||
@@ -21,6 +22,7 @@ class BannerWithFrame : public ActorFrame
|
|||||||
public:
|
public:
|
||||||
BannerWithFrame();
|
BannerWithFrame();
|
||||||
|
|
||||||
|
void LoadFromSongAndNotes( Song* pSong, Notes* pNotes[NUM_PLAYERS] );
|
||||||
void LoadFromSong( Song* pSong );
|
void LoadFromSong( Song* pSong );
|
||||||
void LoadFromGroup( CString sGroupName );
|
void LoadFromGroup( CString sGroupName );
|
||||||
void LoadFromCourse( Course* pCourse );
|
void LoadFromCourse( Course* pCourse );
|
||||||
@@ -29,4 +31,5 @@ protected:
|
|||||||
|
|
||||||
Sprite m_sprBannerFrame;
|
Sprite m_sprBannerFrame;
|
||||||
Banner m_Banner;
|
Banner m_Banner;
|
||||||
|
DifficultyIcon m_Icon[NUM_PLAYERS];
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -98,6 +98,15 @@ void Course::CreateEndlessCourseFromGroupAndDifficultyClass( CString sGroupName,
|
|||||||
m_bRepeat = true;
|
m_bRepeat = true;
|
||||||
m_bRandomize = true;
|
m_bRandomize = true;
|
||||||
m_iLives = -1;
|
m_iLives = -1;
|
||||||
|
|
||||||
|
CStringArray asPossibleBannerPaths;
|
||||||
|
GetDirListing( "Songs\\" + sGroupName + "\\banner.png", asPossibleBannerPaths, false, true );
|
||||||
|
GetDirListing( "Songs\\" + sGroupName + "\\banner.jpg", asPossibleBannerPaths, false, true );
|
||||||
|
GetDirListing( "Songs\\" + sGroupName + "\\banner.gif", asPossibleBannerPaths, false, true );
|
||||||
|
GetDirListing( "Songs\\" + sGroupName + "\\banner.bmp", asPossibleBannerPaths, false, true );
|
||||||
|
if( asPossibleBannerPaths.GetSize() > 0 )
|
||||||
|
m_sBannerPath = asPossibleBannerPaths[0];
|
||||||
|
|
||||||
CString sShortGroupName = SONGMAN->ShortenGroupName( sGroupName );
|
CString sShortGroupName = SONGMAN->ShortenGroupName( sGroupName );
|
||||||
|
|
||||||
m_sName = sShortGroupName + " ";
|
m_sName = sShortGroupName + " ";
|
||||||
@@ -136,7 +145,7 @@ Notes* Course::GetNotesForStage( int iStage )
|
|||||||
for( i=0; i<pSong->m_apNotes.GetSize(); i++ )
|
for( i=0; i<pSong->m_apNotes.GetSize(); i++ )
|
||||||
{
|
{
|
||||||
Notes* pNotes = pSong->m_apNotes[i];
|
Notes* pNotes = pSong->m_apNotes[i];
|
||||||
if( pNotes->m_DifficultyClass == dc )
|
if( pNotes->m_DifficultyClass == dc && pNotes->m_NotesType == GAMESTATE->GetCurrentStyleDef()->m_NotesType )
|
||||||
return pNotes;
|
return pNotes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -197,7 +197,9 @@ void GameDef::MenuInputToGameInput( MenuInput MenuI, GameInput GameIout[4] )
|
|||||||
for( int i=0; i<iNumSidesUsing; i++ )
|
for( int i=0; i<iNumSidesUsing; i++ )
|
||||||
{
|
{
|
||||||
for( int j=0; j<iNumButtonsUsing; j++ )
|
for( int j=0; j<iNumButtonsUsing; j++ )
|
||||||
|
{
|
||||||
GameIout[i*2+j].controller = controller[i];
|
GameIout[i*2+j].controller = controller[i];
|
||||||
GameIout[i*2+j].button = button[j];
|
GameIout[i*2+j].button = button[j];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,8 +37,6 @@ LifeMeterBattery::LifeMeterBattery()
|
|||||||
|
|
||||||
m_soundGainLife.Load( THEME->GetPathTo(SOUND_GAMEPLAY_ONI_GAIN_LIFE) );
|
m_soundGainLife.Load( THEME->GetPathTo(SOUND_GAMEPLAY_ONI_GAIN_LIFE) );
|
||||||
m_soundLoseLife.Load( THEME->GetPathTo(SOUND_GAMEPLAY_ONI_LOSE_LIFE) );
|
m_soundLoseLife.Load( THEME->GetPathTo(SOUND_GAMEPLAY_ONI_LOSE_LIFE) );
|
||||||
|
|
||||||
Refresh();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void LifeMeterBattery::Load( PlayerNumber pn )
|
void LifeMeterBattery::Load( PlayerNumber pn )
|
||||||
@@ -81,6 +79,7 @@ void LifeMeterBattery::Load( PlayerNumber pn )
|
|||||||
|
|
||||||
m_textPercent.SetDiffuseColor( PlayerToColor(pn) ); // light blue
|
m_textPercent.SetDiffuseColor( PlayerToColor(pn) ); // light blue
|
||||||
|
|
||||||
|
Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
void LifeMeterBattery::SongEnded()
|
void LifeMeterBattery::SongEnded()
|
||||||
|
|||||||
@@ -565,29 +565,33 @@ void MusicWheel::BuildWheelItemDatas( CArray<WheelItemData, WheelItemData&> &arr
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PLAY_MODE_ONI:
|
case PLAY_MODE_ONI:
|
||||||
{
|
|
||||||
CArray<Course*,Course*> apCourses;
|
|
||||||
for( int i=0; i<SONGMAN->m_aOniCourses.GetSize(); i++ )
|
|
||||||
apCourses.Add( &SONGMAN->m_aOniCourses[i] );
|
|
||||||
|
|
||||||
SortCoursePointerArrayByDifficulty( apCourses );
|
|
||||||
|
|
||||||
for( int c=0; c<apCourses.GetSize(); c++ ) // foreach course
|
|
||||||
{
|
|
||||||
Course* pCourse = apCourses[c];
|
|
||||||
arrayWheelItemDatas.Add( WheelItemData(TYPE_COURSE, NULL, "", pCourse, pCourse->GetColor()) );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case PLAY_MODE_ENDLESS:
|
case PLAY_MODE_ENDLESS:
|
||||||
{
|
{
|
||||||
CArray<Course*,Course*> apCourses;
|
CArray<Course*,Course*> apCourses;
|
||||||
|
switch( GAMESTATE->m_PlayMode )
|
||||||
|
{
|
||||||
|
case PLAY_MODE_ONI:
|
||||||
|
for( int i=0; i<SONGMAN->m_aOniCourses.GetSize(); i++ )
|
||||||
|
apCourses.Add( &SONGMAN->m_aOniCourses[i] );
|
||||||
|
SortCoursePointerArrayByDifficulty( apCourses );
|
||||||
|
break;
|
||||||
|
case PLAY_MODE_ENDLESS:
|
||||||
for( int i=0; i<SONGMAN->m_aEndlessCourses.GetSize(); i++ )
|
for( int i=0; i<SONGMAN->m_aEndlessCourses.GetSize(); i++ )
|
||||||
apCourses.Add( &SONGMAN->m_aEndlessCourses[i] );
|
apCourses.Add( &SONGMAN->m_aEndlessCourses[i] );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
for( int c=0; c<apCourses.GetSize(); c++ ) // foreach course
|
for( int c=0; c<apCourses.GetSize(); c++ ) // foreach course
|
||||||
{
|
{
|
||||||
Course* pCourse = apCourses[c];
|
Course* pCourse = apCourses[c];
|
||||||
|
|
||||||
|
// check that this course has at least one song playable in the current style
|
||||||
|
CArray<Song*,Song*> apSongs;
|
||||||
|
CArray<Notes*,Notes*> apNotes;
|
||||||
|
CStringArray asModifiers;
|
||||||
|
pCourse->GetSongAndNotesForCurrentStyle( apSongs, apNotes, asModifiers );
|
||||||
|
|
||||||
|
if( apNotes.GetSize() > 0 )
|
||||||
arrayWheelItemDatas.Add( WheelItemData(TYPE_COURSE, NULL, "", pCourse, pCourse->GetColor()) );
|
arrayWheelItemDatas.Add( WheelItemData(TYPE_COURSE, NULL, "", pCourse, pCourse->GetColor()) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+78
-107
@@ -18,6 +18,7 @@
|
|||||||
#include "PrefsManager.h"
|
#include "PrefsManager.h"
|
||||||
#include "GameConstantsAndTypes.h"
|
#include "GameConstantsAndTypes.h"
|
||||||
#include "RageException.h"
|
#include "RageException.h"
|
||||||
|
#include "GameState.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -507,93 +508,88 @@ void NoteData::RemoveHoldNotes()
|
|||||||
|
|
||||||
void NoteData::Turn( PlayerOptions::TurnType tt )
|
void NoteData::Turn( PlayerOptions::TurnType tt )
|
||||||
{
|
{
|
||||||
// transform the NoteData
|
int iTakeFromTrack[MAX_NOTE_TRACKS]; // New track "t" will take from old track iTakeFromTrack[t]
|
||||||
int oldColToNewCol[12][2]; // 0 is old Step, 1 is new Step mapping
|
|
||||||
oldColToNewCol[0][0] = 0; oldColToNewCol[0][1] = 0;
|
|
||||||
oldColToNewCol[1][0] = 1; oldColToNewCol[1][1] = 1;
|
|
||||||
oldColToNewCol[2][0] = 2; oldColToNewCol[2][1] = 2;
|
|
||||||
oldColToNewCol[3][0] = 3; oldColToNewCol[3][1] = 3;
|
|
||||||
oldColToNewCol[4][0] = 4; oldColToNewCol[4][1] = 4;
|
|
||||||
oldColToNewCol[5][0] = 5; oldColToNewCol[5][1] = 5;
|
|
||||||
oldColToNewCol[6][0] = 6; oldColToNewCol[6][1] = 6;
|
|
||||||
oldColToNewCol[7][0] = 7; oldColToNewCol[7][1] = 7;
|
|
||||||
oldColToNewCol[8][0] = 8; oldColToNewCol[8][1] = 8;
|
|
||||||
oldColToNewCol[9][0] = 9; oldColToNewCol[9][1] = 9;
|
|
||||||
oldColToNewCol[10][0]= 10; oldColToNewCol[10][1]= 10;
|
|
||||||
oldColToNewCol[11][0]= 11; oldColToNewCol[11][1]= 11;
|
|
||||||
|
|
||||||
switch( tt )
|
switch( tt )
|
||||||
{
|
{
|
||||||
case PlayerOptions::TURN_NONE:
|
case PlayerOptions::TURN_NONE:
|
||||||
break;
|
return; // nothing to do
|
||||||
case PlayerOptions::TURN_MIRROR:
|
case PlayerOptions::TURN_MIRROR:
|
||||||
oldColToNewCol[0][1] = 3;
|
for( int t=0; t<m_iNumTracks; t++ )
|
||||||
oldColToNewCol[2][1] = 2;
|
iTakeFromTrack[t] = m_iNumTracks-t-1;
|
||||||
oldColToNewCol[3][1] = 1;
|
|
||||||
oldColToNewCol[5][1] = 0;
|
|
||||||
oldColToNewCol[6][1] = 7;
|
|
||||||
oldColToNewCol[8][1] = 6;
|
|
||||||
oldColToNewCol[9][1] = 5;
|
|
||||||
oldColToNewCol[11][1]= 4;
|
|
||||||
break;
|
break;
|
||||||
case PlayerOptions::TURN_LEFT:
|
case PlayerOptions::TURN_LEFT:
|
||||||
oldColToNewCol[0][1] = 1;
|
case PlayerOptions::TURN_RIGHT: // HACK: TurnRight does the same thing as TurnLeft. I'll fix this later...
|
||||||
oldColToNewCol[2][1] = 3;
|
// Chris: Handling each NotesType case is a terrible way to do this, but oh well...
|
||||||
oldColToNewCol[3][1] = 0;
|
switch( GAMESTATE->GetCurrentStyleDef()->m_NotesType )
|
||||||
oldColToNewCol[5][1] = 2;
|
{
|
||||||
oldColToNewCol[6][1] = 5;
|
case NOTES_TYPE_DANCE_SINGLE:
|
||||||
oldColToNewCol[8][1] = 7;
|
case NOTES_TYPE_DANCE_DOUBLE:
|
||||||
oldColToNewCol[9][1] = 4;
|
case NOTES_TYPE_DANCE_COUPLE:
|
||||||
oldColToNewCol[11][1]= 6;
|
iTakeFromTrack[0] = 2;
|
||||||
|
iTakeFromTrack[1] = 0;
|
||||||
|
iTakeFromTrack[2] = 3;
|
||||||
|
iTakeFromTrack[3] = 1;
|
||||||
|
iTakeFromTrack[4] = 6;
|
||||||
|
iTakeFromTrack[5] = 4;
|
||||||
|
iTakeFromTrack[6] = 7;
|
||||||
|
iTakeFromTrack[7] = 5;
|
||||||
break;
|
break;
|
||||||
case PlayerOptions::TURN_RIGHT:
|
case NOTES_TYPE_DANCE_SOLO:
|
||||||
oldColToNewCol[0][1] = 3;
|
iTakeFromTrack[0] = 5;
|
||||||
oldColToNewCol[2][1] = 0;
|
iTakeFromTrack[1] = 4;
|
||||||
oldColToNewCol[3][1] = 4;
|
iTakeFromTrack[2] = 0;
|
||||||
oldColToNewCol[5][1] = 1;
|
iTakeFromTrack[3] = 3;
|
||||||
oldColToNewCol[6][1] = 6;
|
iTakeFromTrack[4] = 1;
|
||||||
oldColToNewCol[8][1] = 4;
|
iTakeFromTrack[5] = 2;
|
||||||
oldColToNewCol[9][1] = 7;
|
break;
|
||||||
oldColToNewCol[11][1]= 5;
|
case NOTES_TYPE_PUMP_SINGLE:
|
||||||
|
case NOTES_TYPE_PUMP_DOUBLE:
|
||||||
|
iTakeFromTrack[0] = 1;
|
||||||
|
iTakeFromTrack[1] = 3;
|
||||||
|
iTakeFromTrack[2] = 2;
|
||||||
|
iTakeFromTrack[3] = 4;
|
||||||
|
iTakeFromTrack[4] = 0;
|
||||||
|
iTakeFromTrack[5] = 6;
|
||||||
|
iTakeFromTrack[6] = 8;
|
||||||
|
iTakeFromTrack[7] = 7;
|
||||||
|
iTakeFromTrack[8] = 9;
|
||||||
|
iTakeFromTrack[9] = 5;
|
||||||
|
break;
|
||||||
|
case NOTES_TYPE_EZ2_SINGLE:
|
||||||
|
case NOTES_TYPE_EZ2_SINGLE_HARD:
|
||||||
|
case NOTES_TYPE_EZ2_DOUBLE:
|
||||||
|
case NOTES_TYPE_EZ2_REAL:
|
||||||
|
case NOTES_TYPE_EZ2_SINGLE_VERSUS:
|
||||||
|
case NOTES_TYPE_EZ2_SINGLE_HARD_VERSUS:
|
||||||
|
case NOTES_TYPE_EZ2_REAL_VERSUS:
|
||||||
|
// identity transform. What should we do here?
|
||||||
|
iTakeFromTrack[0] = 0;
|
||||||
|
iTakeFromTrack[1] = 1;
|
||||||
|
iTakeFromTrack[2] = 2;
|
||||||
|
iTakeFromTrack[3] = 3;
|
||||||
|
iTakeFromTrack[4] = 4;
|
||||||
|
iTakeFromTrack[5] = 5;
|
||||||
|
iTakeFromTrack[6] = 6;
|
||||||
|
iTakeFromTrack[7] = 7;
|
||||||
|
iTakeFromTrack[8] = 8;
|
||||||
|
iTakeFromTrack[9] = 9;
|
||||||
|
iTakeFromTrack[10]= 10;
|
||||||
|
iTakeFromTrack[11]= 11;
|
||||||
|
break;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case PlayerOptions::TURN_SHUFFLE:
|
case PlayerOptions::TURN_SHUFFLE:
|
||||||
bool bAlreadyMapped[12];
|
CArray<int,int> aiTracksLeftToMap;
|
||||||
for( int i=0; i<12; i++ )
|
for( int t=0; t<m_iNumTracks; t++ )
|
||||||
bAlreadyMapped[i] = false;
|
aiTracksLeftToMap.Add( t );
|
||||||
|
|
||||||
// hack: don't shuffle the Up+... NoteData
|
for( int t=0; t<m_iNumTracks; t++ )
|
||||||
bAlreadyMapped[1] = true;
|
|
||||||
bAlreadyMapped[4] = true;
|
|
||||||
bAlreadyMapped[7] = true;
|
|
||||||
bAlreadyMapped[10] = true;
|
|
||||||
|
|
||||||
// shuffle left side
|
|
||||||
for( i=0; i<6; i++ )
|
|
||||||
{
|
{
|
||||||
if( i == 1 || i == 4 )
|
int iRandTrackIndex = rand()%aiTracksLeftToMap.GetSize();
|
||||||
continue;
|
int iRandTrack = aiTracksLeftToMap[iRandTrackIndex];
|
||||||
|
aiTracksLeftToMap.RemoveAt( iRandTrackIndex );
|
||||||
int iMapsTo;
|
iTakeFromTrack[t] = iRandTrack;
|
||||||
do {
|
|
||||||
iMapsTo = rand()%6;
|
|
||||||
} while( bAlreadyMapped[iMapsTo] );
|
|
||||||
bAlreadyMapped[iMapsTo] = true;
|
|
||||||
|
|
||||||
oldColToNewCol[i][1] = oldColToNewCol[iMapsTo][0];
|
|
||||||
}
|
|
||||||
// shuffle right side
|
|
||||||
for( i=6; i<12; i++ )
|
|
||||||
{
|
|
||||||
if( i == 7 || i == 10 )
|
|
||||||
continue;
|
|
||||||
|
|
||||||
int iMapsTo;
|
|
||||||
do {
|
|
||||||
iMapsTo = rand()%6+6;
|
|
||||||
} while( bAlreadyMapped[iMapsTo] );
|
|
||||||
bAlreadyMapped[iMapsTo] = true;
|
|
||||||
|
|
||||||
oldColToNewCol[i][1] = oldColToNewCol[iMapsTo][0];
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -601,40 +597,15 @@ void NoteData::Turn( PlayerOptions::TurnType tt )
|
|||||||
NoteData tempNoteData; // write into here as we tranform
|
NoteData tempNoteData; // write into here as we tranform
|
||||||
tempNoteData.m_iNumTracks = m_iNumTracks;
|
tempNoteData.m_iNumTracks = m_iNumTracks;
|
||||||
|
|
||||||
// transform m_TapNotes
|
this->ConvertHoldNotesTo2sAnd3s();
|
||||||
for( int i=0; i<MAX_TAP_NOTE_ROWS; i++ )
|
|
||||||
{
|
|
||||||
for( int j=0; j<12; j++ )
|
|
||||||
{
|
|
||||||
int iOldCol = oldColToNewCol[j][0];
|
|
||||||
int iNewCol = oldColToNewCol[j][1];
|
|
||||||
|
|
||||||
tempNoteData.m_TapNotes[iNewCol][i] = m_TapNotes[iOldCol][i];
|
// transform notes
|
||||||
}
|
for( int t=0; t<m_iNumTracks; t++ )
|
||||||
}
|
for( int r=0; r<MAX_TAP_NOTE_ROWS; r++ )
|
||||||
|
tempNoteData.m_TapNotes[t][r] = m_TapNotes[iTakeFromTrack[t]][r];
|
||||||
|
|
||||||
// transform m_HoldNotes
|
this->CopyAll( &tempNoteData ); // copy note data from newData back into this
|
||||||
for( i=0; i<m_iNumHoldNotes; i++ )
|
this->Convert2sAnd3sToHoldNotes();
|
||||||
{
|
|
||||||
for( int j=0; j<12; j++ )
|
|
||||||
{
|
|
||||||
HoldNote &hn = m_HoldNotes[i];
|
|
||||||
|
|
||||||
int iOldCol = oldColToNewCol[j][0];
|
|
||||||
int iNewCol = oldColToNewCol[j][1];
|
|
||||||
|
|
||||||
if( hn.m_iTrack == iOldCol )
|
|
||||||
{
|
|
||||||
HoldNote newHN = { iNewCol, hn.m_iStartIndex, hn.m_iEndIndex };
|
|
||||||
tempNoteData.AddHoldNote( newHN );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// copy note data from newData back into this
|
|
||||||
//
|
|
||||||
(*this) = tempNoteData;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void NoteData::MakeLittle()
|
void NoteData::MakeLittle()
|
||||||
|
|||||||
@@ -29,10 +29,14 @@ ScoreDisplayNormal::ScoreDisplayNormal()
|
|||||||
Load( THEME->GetPathTo(FONT_SCORE_NUMBERS) );
|
Load( THEME->GetPathTo(FONT_SCORE_NUMBERS) );
|
||||||
TurnShadowOff();
|
TurnShadowOff();
|
||||||
|
|
||||||
|
m_fScore = 0;
|
||||||
m_fTrailingScore = 0;
|
m_fTrailingScore = 0;
|
||||||
|
m_fScoreVelocity = 0;
|
||||||
|
|
||||||
SetScore( 0 );
|
CString s;
|
||||||
Update(0);
|
for( int i=0; i<NUM_SCORE_DIGITS; i++ )
|
||||||
|
s += '0';
|
||||||
|
SetText( s );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -123,10 +123,10 @@ ScreenEdit::ScreenEdit()
|
|||||||
|
|
||||||
GAMESTATE->m_bEditing = true;
|
GAMESTATE->m_bEditing = true;
|
||||||
|
|
||||||
m_fBeat = 0.0f;
|
GAMESTATE->m_fSongBeat = 0;
|
||||||
GAMESTATE->m_fSongBeat = m_fBeat;
|
m_fTrailingBeat = GAMESTATE->m_fSongBeat;
|
||||||
|
|
||||||
m_fMusicRate = 1;
|
GAMESTATE->m_SongOptions.m_fMusicRate = 1;
|
||||||
|
|
||||||
GAMESTATE->m_PlayerOptions[PLAYER_1].m_fArrowScrollSpeed = 1;
|
GAMESTATE->m_PlayerOptions[PLAYER_1].m_fArrowScrollSpeed = 1;
|
||||||
GAMESTATE->m_PlayerOptions[PLAYER_1].m_ColorType = PlayerOptions::COLOR_NOTE;
|
GAMESTATE->m_PlayerOptions[PLAYER_1].m_ColorType = PlayerOptions::COLOR_NOTE;
|
||||||
@@ -208,11 +208,19 @@ void ScreenEdit::Update( float fDeltaTime )
|
|||||||
bool bFreeze;
|
bool bFreeze;
|
||||||
m_pSong->GetBeatAndBPSFromElapsedTime( fPositionSeconds, fSongBeat, fBPS, bFreeze );
|
m_pSong->GetBeatAndBPSFromElapsedTime( fPositionSeconds, fSongBeat, fBPS, bFreeze );
|
||||||
|
|
||||||
|
|
||||||
|
// update the global music statistics for other classes to access
|
||||||
|
GAMESTATE->m_fMusicSeconds = fPositionSeconds;
|
||||||
|
// GAMESTATE->m_fSongBeat = fSongBeat;
|
||||||
|
GAMESTATE->m_fCurBPS = fBPS;
|
||||||
|
GAMESTATE->m_bFreeze = bFreeze;
|
||||||
|
|
||||||
|
|
||||||
if( m_EditMode == MODE_RECORDING || m_EditMode == MODE_PLAYING )
|
if( m_EditMode == MODE_RECORDING || m_EditMode == MODE_PLAYING )
|
||||||
{
|
{
|
||||||
m_fBeat = fSongBeat;
|
GAMESTATE->m_fSongBeat = fSongBeat;
|
||||||
|
|
||||||
if( m_fBeat > m_NoteFieldEdit.m_fEndMarker )
|
if( GAMESTATE->m_fSongBeat > m_NoteFieldEdit.m_fEndMarker )
|
||||||
{
|
{
|
||||||
if( m_EditMode == MODE_RECORDING )
|
if( m_EditMode == MODE_RECORDING )
|
||||||
{
|
{
|
||||||
@@ -255,12 +263,11 @@ void ScreenEdit::Update( float fDeltaTime )
|
|||||||
|
|
||||||
|
|
||||||
// Update trailing beat
|
// Update trailing beat
|
||||||
float fDelta = m_fBeat - GAMESTATE->m_fSongBeat;
|
float fDelta = GAMESTATE->m_fSongBeat - m_fTrailingBeat;
|
||||||
|
|
||||||
|
|
||||||
if( fabsf(fDelta) < 0.01 )
|
if( fabsf(fDelta) < 0.01 )
|
||||||
{
|
{
|
||||||
GAMESTATE->m_fSongBeat = m_fBeat; // snap
|
m_fTrailingBeat = GAMESTATE->m_fSongBeat; // snap
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -268,10 +275,10 @@ void ScreenEdit::Update( float fDeltaTime )
|
|||||||
float fMoveDelta = fSign*fDeltaTime*40;
|
float fMoveDelta = fSign*fDeltaTime*40;
|
||||||
if( fabsf(fMoveDelta) > fabsf(fDelta) )
|
if( fabsf(fMoveDelta) > fabsf(fDelta) )
|
||||||
fMoveDelta = fDelta;
|
fMoveDelta = fDelta;
|
||||||
GAMESTATE->m_fSongBeat += fMoveDelta;
|
m_fTrailingBeat += fMoveDelta;
|
||||||
|
|
||||||
if( fabsf(fDelta) > 10 )
|
if( fabsf(fDelta) > 10 )
|
||||||
GAMESTATE->m_fSongBeat += fDelta * fDeltaTime*5;
|
m_fTrailingBeat += fDelta * fDeltaTime*5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -285,7 +292,7 @@ void ScreenEdit::Update( float fDeltaTime )
|
|||||||
|
|
||||||
m_NoteFieldEdit.Update( fDeltaTime );
|
m_NoteFieldEdit.Update( fDeltaTime );
|
||||||
|
|
||||||
int iIndexNow = BeatToNoteRowNotRounded( m_fBeat );
|
int iIndexNow = BeatToNoteRowNotRounded( GAMESTATE->m_fSongBeat );
|
||||||
|
|
||||||
|
|
||||||
CString sNoteType;
|
CString sNoteType;
|
||||||
@@ -319,9 +326,9 @@ void ScreenEdit::Update( float fDeltaTime )
|
|||||||
"MusicOffsetSeconds: %.2f\n"
|
"MusicOffsetSeconds: %.2f\n"
|
||||||
"Preview start: %.2f, length = %.2f\n",
|
"Preview start: %.2f, length = %.2f\n",
|
||||||
sNoteType,
|
sNoteType,
|
||||||
m_fBeat,
|
GAMESTATE->m_fSongBeat,
|
||||||
m_NoteFieldEdit.m_fBeginMarker, m_NoteFieldEdit.m_fEndMarker,
|
m_NoteFieldEdit.m_fBeginMarker, m_NoteFieldEdit.m_fEndMarker,
|
||||||
m_fMusicRate,
|
GAMESTATE->m_SongOptions.m_fMusicRate,
|
||||||
DifficultyClassToString( m_pNotes->m_DifficultyClass ),
|
DifficultyClassToString( m_pNotes->m_DifficultyClass ),
|
||||||
GAMESTATE->m_pCurNotes[PLAYER_1] ? GAMESTATE->m_pCurNotes[PLAYER_1]->m_sDescription : "no description",
|
GAMESTATE->m_pCurNotes[PLAYER_1] ? GAMESTATE->m_pCurNotes[PLAYER_1]->m_sDescription : "no description",
|
||||||
iNumTapNotes, iNumHoldNotes,
|
iNumTapNotes, iNumHoldNotes,
|
||||||
@@ -337,7 +344,13 @@ void ScreenEdit::DrawPrimitives()
|
|||||||
m_GranularityIndicator.Draw();
|
m_GranularityIndicator.Draw();
|
||||||
m_GrayArrowRowEdit.Draw();
|
m_GrayArrowRowEdit.Draw();
|
||||||
m_textHelp.Draw();
|
m_textHelp.Draw();
|
||||||
|
|
||||||
|
// HACK: Make NoteFieldEdit draw using the trailing beat
|
||||||
|
float fSongBeat = GAMESTATE->m_fSongBeat; // save song beat
|
||||||
|
GAMESTATE->m_fSongBeat = m_fTrailingBeat; // put trailing beat in effect
|
||||||
m_NoteFieldEdit.Draw();
|
m_NoteFieldEdit.Draw();
|
||||||
|
GAMESTATE->m_fSongBeat = fSongBeat; // restore real song beat
|
||||||
|
|
||||||
m_textInfo.Draw();
|
m_textInfo.Draw();
|
||||||
m_Fade.Draw();
|
m_Fade.Draw();
|
||||||
|
|
||||||
@@ -397,7 +410,7 @@ void ScreenEdit::InputEdit( const DeviceInput& DeviceI, const InputEventType typ
|
|||||||
break; // We only care about first presses
|
break; // We only care about first presses
|
||||||
|
|
||||||
int iCol = DeviceI.button - DIK_1;
|
int iCol = DeviceI.button - DIK_1;
|
||||||
const int iNoteIndex = BeatToNoteRow( m_fBeat );
|
const int iNoteIndex = BeatToNoteRow( GAMESTATE->m_fSongBeat );
|
||||||
|
|
||||||
if( iCol >= m_NoteFieldEdit.m_iNumTracks ) // this button is not in the range of columns for this StyleDef
|
if( iCol >= m_NoteFieldEdit.m_iNumTracks ) // this button is not in the range of columns for this StyleDef
|
||||||
break;
|
break;
|
||||||
@@ -471,8 +484,8 @@ void ScreenEdit::InputEdit( const DeviceInput& DeviceI, const InputEventType typ
|
|||||||
fBeatsToMove *= -1;
|
fBeatsToMove *= -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const int iStartIndex = BeatToNoteRow(m_fBeat);
|
const int iStartIndex = BeatToNoteRow(GAMESTATE->m_fSongBeat);
|
||||||
const int iEndIndex = BeatToNoteRow(m_fBeat + fBeatsToMove);
|
const int iEndIndex = BeatToNoteRow(GAMESTATE->m_fSongBeat + fBeatsToMove);
|
||||||
|
|
||||||
// check to see if they're holding a button
|
// check to see if they're holding a button
|
||||||
for( int col=0; col<m_NoteFieldEdit.m_iNumTracks && col<=10; col++ )
|
for( int col=0; col<m_NoteFieldEdit.m_iNumTracks && col<=10; col++ )
|
||||||
@@ -491,18 +504,18 @@ void ScreenEdit::InputEdit( const DeviceInput& DeviceI, const InputEventType typ
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_fBeat += fBeatsToMove;
|
GAMESTATE->m_fSongBeat += fBeatsToMove;
|
||||||
m_fBeat = clamp( m_fBeat, 0, MAX_BEATS-1 );
|
GAMESTATE->m_fSongBeat = clamp( GAMESTATE->m_fSongBeat, 0, MAX_BEATS-1 );
|
||||||
m_fBeat = froundf( m_fBeat, NoteTypeToBeat(m_GranularityIndicator.GetSnapMode()) );
|
GAMESTATE->m_fSongBeat = froundf( GAMESTATE->m_fSongBeat, NoteTypeToBeat(m_GranularityIndicator.GetSnapMode()) );
|
||||||
m_soundChangeLine.Play();
|
m_soundChangeLine.Play();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DIK_HOME:
|
case DIK_HOME:
|
||||||
m_fBeat = 0;
|
GAMESTATE->m_fSongBeat = 0;
|
||||||
m_soundChangeLine.Play();
|
m_soundChangeLine.Play();
|
||||||
break;
|
break;
|
||||||
case DIK_END:
|
case DIK_END:
|
||||||
m_fBeat = m_NoteFieldEdit.GetLastBeat();
|
GAMESTATE->m_fSongBeat = m_NoteFieldEdit.GetLastBeat();
|
||||||
m_soundChangeLine.Play();
|
m_soundChangeLine.Play();
|
||||||
break;
|
break;
|
||||||
case DIK_RIGHT:
|
case DIK_RIGHT:
|
||||||
@@ -514,26 +527,26 @@ void ScreenEdit::InputEdit( const DeviceInput& DeviceI, const InputEventType typ
|
|||||||
OnSnapModeChange();
|
OnSnapModeChange();
|
||||||
break;
|
break;
|
||||||
case DIK_RETURN:
|
case DIK_RETURN:
|
||||||
if( m_NoteFieldEdit.m_fEndMarker != -1 && m_fBeat > m_NoteFieldEdit.m_fEndMarker )
|
if( m_NoteFieldEdit.m_fEndMarker != -1 && GAMESTATE->m_fSongBeat > m_NoteFieldEdit.m_fEndMarker )
|
||||||
{
|
{
|
||||||
// invalid! The begin maker must be placed before the end marker
|
// invalid! The begin maker must be placed before the end marker
|
||||||
m_soundInvalid.Play();
|
m_soundInvalid.Play();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_NoteFieldEdit.m_fBeginMarker = m_fBeat;
|
m_NoteFieldEdit.m_fBeginMarker = GAMESTATE->m_fSongBeat;
|
||||||
m_soundMarker.Play();
|
m_soundMarker.Play();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DIK_SPACE:
|
case DIK_SPACE:
|
||||||
if( m_NoteFieldEdit.m_fBeginMarker != -1 && m_fBeat < m_NoteFieldEdit.m_fBeginMarker )
|
if( m_NoteFieldEdit.m_fBeginMarker != -1 && GAMESTATE->m_fSongBeat < m_NoteFieldEdit.m_fBeginMarker )
|
||||||
{
|
{
|
||||||
// invalid! The end maker must be placed after the begin marker
|
// invalid! The end maker must be placed after the begin marker
|
||||||
m_soundInvalid.Play();
|
m_soundInvalid.Play();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_NoteFieldEdit.m_fEndMarker = m_fBeat;
|
m_NoteFieldEdit.m_fEndMarker = GAMESTATE->m_fSongBeat;
|
||||||
m_soundMarker.Play();
|
m_soundMarker.Play();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -573,8 +586,6 @@ void ScreenEdit::InputEdit( const DeviceInput& DeviceI, const InputEventType typ
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_fBeat = m_NoteFieldEdit.m_fBeginMarker;
|
|
||||||
|
|
||||||
m_EditMode = MODE_PLAYING;
|
m_EditMode = MODE_PLAYING;
|
||||||
|
|
||||||
m_Player.Load( PLAYER_1, (NoteData*)&m_NoteFieldEdit, NULL, NULL );
|
m_Player.Load( PLAYER_1, (NoteData*)&m_NoteFieldEdit, NULL, NULL );
|
||||||
@@ -582,10 +593,11 @@ void ScreenEdit::InputEdit( const DeviceInput& DeviceI, const InputEventType typ
|
|||||||
m_rectRecordBack.BeginTweening( 0.5f );
|
m_rectRecordBack.BeginTweening( 0.5f );
|
||||||
m_rectRecordBack.SetTweenDiffuseColor( D3DXCOLOR(0,0,0,0.5f) );
|
m_rectRecordBack.SetTweenDiffuseColor( D3DXCOLOR(0,0,0,0.5f) );
|
||||||
|
|
||||||
float fElapsedSeconds = max( 0, m_pSong->GetElapsedTimeFromBeat(m_fBeat) );
|
GAMESTATE->m_fSongBeat = m_NoteFieldEdit.m_fBeginMarker;
|
||||||
|
float fElapsedSeconds = max( 0, m_pSong->GetElapsedTimeFromBeat(GAMESTATE->m_fSongBeat) );
|
||||||
m_soundMusic.SetPositionSeconds( fElapsedSeconds );
|
m_soundMusic.SetPositionSeconds( fElapsedSeconds );
|
||||||
m_soundMusic.Play();
|
m_soundMusic.Play();
|
||||||
m_soundMusic.SetPlaybackRate( m_fMusicRate );
|
m_soundMusic.SetPlaybackRate( GAMESTATE->m_SongOptions.m_fMusicRate );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DIK_R:
|
case DIK_R:
|
||||||
@@ -596,8 +608,6 @@ void ScreenEdit::InputEdit( const DeviceInput& DeviceI, const InputEventType typ
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_fBeat = m_NoteFieldEdit.m_fBeginMarker;
|
|
||||||
|
|
||||||
// initialize m_NoteFieldRecord
|
// initialize m_NoteFieldRecord
|
||||||
m_NoteFieldRecord.ClearAll();
|
m_NoteFieldRecord.ClearAll();
|
||||||
m_NoteFieldRecord.m_iNumTracks = m_NoteFieldEdit.m_iNumTracks;
|
m_NoteFieldRecord.m_iNumTracks = m_NoteFieldEdit.m_iNumTracks;
|
||||||
@@ -609,22 +619,23 @@ void ScreenEdit::InputEdit( const DeviceInput& DeviceI, const InputEventType typ
|
|||||||
m_rectRecordBack.BeginTweening( 0.5f );
|
m_rectRecordBack.BeginTweening( 0.5f );
|
||||||
m_rectRecordBack.SetTweenDiffuseColor( D3DXCOLOR(0,0,0,0.5f) );
|
m_rectRecordBack.SetTweenDiffuseColor( D3DXCOLOR(0,0,0,0.5f) );
|
||||||
|
|
||||||
float fElapsedSeconds = max( 0, m_pSong->GetElapsedTimeFromBeat(m_fBeat) );
|
GAMESTATE->m_fSongBeat = m_NoteFieldEdit.m_fBeginMarker;
|
||||||
|
float fElapsedSeconds = max( 0, m_pSong->GetElapsedTimeFromBeat(GAMESTATE->m_fSongBeat) );
|
||||||
m_soundMusic.SetPositionSeconds( fElapsedSeconds );
|
m_soundMusic.SetPositionSeconds( fElapsedSeconds );
|
||||||
m_soundMusic.Play();
|
m_soundMusic.Play();
|
||||||
m_soundMusic.SetPlaybackRate( m_fMusicRate );
|
m_soundMusic.SetPlaybackRate( GAMESTATE->m_SongOptions.m_fMusicRate );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DIK_T:
|
case DIK_T:
|
||||||
if( m_fMusicRate == 1.0f ) m_fMusicRate = 0.9f;
|
if( GAMESTATE->m_SongOptions.m_fMusicRate == 1.0f ) GAMESTATE->m_SongOptions.m_fMusicRate = 0.9f;
|
||||||
else if( m_fMusicRate == 0.9f ) m_fMusicRate = 0.8f;
|
else if( GAMESTATE->m_SongOptions.m_fMusicRate == 0.9f ) GAMESTATE->m_SongOptions.m_fMusicRate = 0.8f;
|
||||||
else if( m_fMusicRate == 0.8f ) m_fMusicRate = 0.7f;
|
else if( GAMESTATE->m_SongOptions.m_fMusicRate == 0.8f ) GAMESTATE->m_SongOptions.m_fMusicRate = 0.7f;
|
||||||
else if( m_fMusicRate == 0.7f ) m_fMusicRate = 1.5f;
|
else if( GAMESTATE->m_SongOptions.m_fMusicRate == 0.7f ) GAMESTATE->m_SongOptions.m_fMusicRate = 1.5f;
|
||||||
else if( m_fMusicRate == 1.5f ) m_fMusicRate = 1.4f;
|
else if( GAMESTATE->m_SongOptions.m_fMusicRate == 1.5f ) GAMESTATE->m_SongOptions.m_fMusicRate = 1.4f;
|
||||||
else if( m_fMusicRate == 1.4f ) m_fMusicRate = 1.3f;
|
else if( GAMESTATE->m_SongOptions.m_fMusicRate == 1.4f ) GAMESTATE->m_SongOptions.m_fMusicRate = 1.3f;
|
||||||
else if( m_fMusicRate == 1.3f ) m_fMusicRate = 1.2f;
|
else if( GAMESTATE->m_SongOptions.m_fMusicRate == 1.3f ) GAMESTATE->m_SongOptions.m_fMusicRate = 1.2f;
|
||||||
else if( m_fMusicRate == 1.2f ) m_fMusicRate = 1.1f;
|
else if( GAMESTATE->m_SongOptions.m_fMusicRate == 1.2f ) GAMESTATE->m_SongOptions.m_fMusicRate = 1.1f;
|
||||||
else if( m_fMusicRate == 1.1f ) m_fMusicRate = 1.0f;
|
else if( GAMESTATE->m_SongOptions.m_fMusicRate == 1.1f ) GAMESTATE->m_SongOptions.m_fMusicRate = 1.0f;
|
||||||
break;
|
break;
|
||||||
case DIK_INSERT:
|
case DIK_INSERT:
|
||||||
case DIK_DELETE:
|
case DIK_DELETE:
|
||||||
@@ -636,12 +647,12 @@ void ScreenEdit::InputEdit( const DeviceInput& DeviceI, const InputEventType typ
|
|||||||
switch( DeviceI.button )
|
switch( DeviceI.button )
|
||||||
{
|
{
|
||||||
case DIK_INSERT:
|
case DIK_INSERT:
|
||||||
iTakeFromRow = BeatToNoteRow( m_fBeat );
|
iTakeFromRow = BeatToNoteRow( GAMESTATE->m_fSongBeat );
|
||||||
iPasteAtRow = BeatToNoteRow( m_fBeat+1 );
|
iPasteAtRow = BeatToNoteRow( GAMESTATE->m_fSongBeat+1 );
|
||||||
break;
|
break;
|
||||||
case DIK_DELETE:
|
case DIK_DELETE:
|
||||||
iTakeFromRow = BeatToNoteRow( m_fBeat+1 );
|
iTakeFromRow = BeatToNoteRow( GAMESTATE->m_fSongBeat+1 );
|
||||||
iPasteAtRow = BeatToNoteRow( m_fBeat );
|
iPasteAtRow = BeatToNoteRow( GAMESTATE->m_fSongBeat );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
temp.CopyRange( &m_NoteFieldEdit, iTakeFromRow, MAX_TAP_NOTE_ROWS );
|
temp.CopyRange( &m_NoteFieldEdit, iTakeFromRow, MAX_TAP_NOTE_ROWS );
|
||||||
@@ -680,7 +691,7 @@ void ScreenEdit::InputEdit( const DeviceInput& DeviceI, const InputEventType typ
|
|||||||
{
|
{
|
||||||
int iSrcFirstRow = 0;
|
int iSrcFirstRow = 0;
|
||||||
int iSrcLastRow = BeatToNoteRow( m_Clipboard.GetLastBeat() );
|
int iSrcLastRow = BeatToNoteRow( m_Clipboard.GetLastBeat() );
|
||||||
int iDestFirstRow = BeatToNoteRow( m_fBeat );
|
int iDestFirstRow = BeatToNoteRow( GAMESTATE->m_fSongBeat );
|
||||||
|
|
||||||
m_NoteFieldEdit.CopyRange( &m_Clipboard, iSrcFirstRow, iSrcLastRow, iDestFirstRow );
|
m_NoteFieldEdit.CopyRange( &m_Clipboard, iSrcFirstRow, iSrcLastRow, iDestFirstRow );
|
||||||
}
|
}
|
||||||
@@ -696,7 +707,7 @@ void ScreenEdit::InputEdit( const DeviceInput& DeviceI, const InputEventType typ
|
|||||||
case DIK_F7:
|
case DIK_F7:
|
||||||
case DIK_F8:
|
case DIK_F8:
|
||||||
{
|
{
|
||||||
float fBPM = m_pSong->GetBPMAtBeat( m_fBeat );
|
float fBPM = m_pSong->GetBPMAtBeat( GAMESTATE->m_fSongBeat );
|
||||||
float fDeltaBPM;
|
float fDeltaBPM;
|
||||||
switch( DeviceI.button )
|
switch( DeviceI.button )
|
||||||
{
|
{
|
||||||
@@ -712,13 +723,13 @@ void ScreenEdit::InputEdit( const DeviceInput& DeviceI, const InputEventType typ
|
|||||||
float fNewBPM = fBPM + fDeltaBPM;
|
float fNewBPM = fBPM + fDeltaBPM;
|
||||||
|
|
||||||
for( int i=0; i<m_pSong->m_BPMSegments.GetSize(); i++ )
|
for( int i=0; i<m_pSong->m_BPMSegments.GetSize(); i++ )
|
||||||
if( m_pSong->m_BPMSegments[i].m_fStartBeat == m_fBeat )
|
if( m_pSong->m_BPMSegments[i].m_fStartBeat == GAMESTATE->m_fSongBeat )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if( i == m_pSong->m_BPMSegments.GetSize() ) // there is no BPMSegment at the current beat
|
if( i == m_pSong->m_BPMSegments.GetSize() ) // there is no BPMSegment at the current beat
|
||||||
{
|
{
|
||||||
// create a new BPMSegment
|
// create a new BPMSegment
|
||||||
m_pSong->AddBPMSegment( BPMSegment(m_fBeat, fNewBPM) );
|
m_pSong->AddBPMSegment( BPMSegment(GAMESTATE->m_fSongBeat, fNewBPM) );
|
||||||
}
|
}
|
||||||
else // BPMSegment being modified is m_BPMSegments[i]
|
else // BPMSegment being modified is m_BPMSegments[i]
|
||||||
{
|
{
|
||||||
@@ -747,7 +758,7 @@ void ScreenEdit::InputEdit( const DeviceInput& DeviceI, const InputEventType typ
|
|||||||
|
|
||||||
for( int i=0; i<m_pSong->m_StopSegments.GetSize(); i++ )
|
for( int i=0; i<m_pSong->m_StopSegments.GetSize(); i++ )
|
||||||
{
|
{
|
||||||
if( m_pSong->m_StopSegments[i].m_fStartBeat == m_fBeat )
|
if( m_pSong->m_StopSegments[i].m_fStartBeat == GAMESTATE->m_fSongBeat )
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -755,7 +766,7 @@ void ScreenEdit::InputEdit( const DeviceInput& DeviceI, const InputEventType typ
|
|||||||
{
|
{
|
||||||
// create a new StopSegment
|
// create a new StopSegment
|
||||||
if( fFreezeDelta > 0 )
|
if( fFreezeDelta > 0 )
|
||||||
m_pSong->AddStopSegment( StopSegment(m_fBeat, fFreezeDelta) );
|
m_pSong->AddStopSegment( StopSegment(GAMESTATE->m_fSongBeat, fFreezeDelta) );
|
||||||
}
|
}
|
||||||
else // StopSegment being modified is m_StopSegments[i]
|
else // StopSegment being modified is m_StopSegments[i]
|
||||||
{
|
{
|
||||||
@@ -848,12 +859,12 @@ void ScreenEdit::InputRecord( const DeviceInput& DeviceI, const InputEventType t
|
|||||||
iCol = StyleI.col;
|
iCol = StyleI.col;
|
||||||
|
|
||||||
int iNoteIndex;
|
int iNoteIndex;
|
||||||
iNoteIndex = BeatToNoteRow( m_fBeat );
|
iNoteIndex = BeatToNoteRow( GAMESTATE->m_fSongBeat );
|
||||||
|
|
||||||
if( type == IET_FIRST_PRESS )
|
if( type == IET_FIRST_PRESS )
|
||||||
{
|
{
|
||||||
m_NoteFieldRecord.m_TapNotes[iCol][iNoteIndex] = '1';
|
m_NoteFieldRecord.m_TapNotes[iCol][iNoteIndex] = '1';
|
||||||
m_NoteFieldRecord.SnapToNearestNoteType( NOTE_12TH, NOTE_16TH, max(0,m_fBeat-1), m_fBeat+1);
|
m_NoteFieldRecord.SnapToNearestNoteType( NOTE_12TH, NOTE_16TH, max(0,GAMESTATE->m_fSongBeat-1), GAMESTATE->m_fSongBeat+1);
|
||||||
m_GrayArrowRowRecord.Step( iCol );
|
m_GrayArrowRowRecord.Step( iCol );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -876,7 +887,7 @@ void ScreenEdit::InputRecord( const DeviceInput& DeviceI, const InputEventType t
|
|||||||
newHN.m_iEndIndex = iEndIndex;
|
newHN.m_iEndIndex = iEndIndex;
|
||||||
|
|
||||||
m_NoteFieldRecord.AddHoldNote( newHN );
|
m_NoteFieldRecord.AddHoldNote( newHN );
|
||||||
m_NoteFieldRecord.SnapToNearestNoteType( NOTE_12TH, NOTE_16TH, max(0,m_fBeat-2), m_fBeat+2);
|
m_NoteFieldRecord.SnapToNearestNoteType( NOTE_12TH, NOTE_16TH, max(0,GAMESTATE->m_fSongBeat-2), GAMESTATE->m_fSongBeat+2);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -895,16 +906,11 @@ void ScreenEdit::InputPlay( const DeviceInput& DeviceI, const InputEventType typ
|
|||||||
m_EditMode = MODE_EDITING;
|
m_EditMode = MODE_EDITING;
|
||||||
m_soundMusic.Stop();
|
m_soundMusic.Stop();
|
||||||
|
|
||||||
m_fBeat = froundf( m_fBeat, NoteTypeToBeat(m_GranularityIndicator.GetSnapMode()) );
|
GAMESTATE->m_fSongBeat = froundf( GAMESTATE->m_fSongBeat, NoteTypeToBeat(m_GranularityIndicator.GetSnapMode()) );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
float fSongBeat, fBPS;
|
|
||||||
bool bFreeze;
|
|
||||||
m_pSong->GetBeatAndBPSFromElapsedTime( m_soundMusic.GetPositionSeconds(), fSongBeat, fBPS, bFreeze );
|
|
||||||
const float fMaxBeatDifference = fBPS * PREFSMAN->m_fJudgeWindow / GAMESTATE->m_SongOptions.m_fMusicRate;
|
|
||||||
|
|
||||||
switch( StyleI.player )
|
switch( StyleI.player )
|
||||||
{
|
{
|
||||||
case PLAYER_1:
|
case PLAYER_1:
|
||||||
@@ -928,7 +934,7 @@ void ScreenEdit::TransitionToEditFromRecord()
|
|||||||
|
|
||||||
m_NoteFieldEdit.CopyRange( (NoteData*)&m_NoteFieldRecord, iNoteIndexBegin, iNoteIndexEnd );
|
m_NoteFieldEdit.CopyRange( (NoteData*)&m_NoteFieldRecord, iNoteIndexBegin, iNoteIndexEnd );
|
||||||
|
|
||||||
m_fBeat = froundf( m_fBeat, NoteTypeToBeat(m_GranularityIndicator.GetSnapMode()) );
|
GAMESTATE->m_fSongBeat = froundf( GAMESTATE->m_fSongBeat, NoteTypeToBeat(m_GranularityIndicator.GetSnapMode()) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -952,8 +958,8 @@ void ScreenEdit::OnSnapModeChange()
|
|||||||
m_soundChangeSnap.Play();
|
m_soundChangeSnap.Play();
|
||||||
|
|
||||||
NoteType nt = m_GranularityIndicator.GetSnapMode();
|
NoteType nt = m_GranularityIndicator.GetSnapMode();
|
||||||
int iStepIndex = BeatToNoteRow( m_fBeat );
|
int iStepIndex = BeatToNoteRow( GAMESTATE->m_fSongBeat );
|
||||||
int iElementsPerNoteType = BeatToNoteRow( NoteTypeToBeat(nt) );
|
int iElementsPerNoteType = BeatToNoteRow( NoteTypeToBeat(nt) );
|
||||||
int iStepIndexHangover = iStepIndex % iElementsPerNoteType;
|
int iStepIndexHangover = iStepIndex % iElementsPerNoteType;
|
||||||
m_fBeat -= NoteRowToBeat( iStepIndexHangover );
|
GAMESTATE->m_fSongBeat -= NoteRowToBeat( iStepIndexHangover );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,12 +57,10 @@ protected:
|
|||||||
BitmapText m_textHelp;
|
BitmapText m_textHelp;
|
||||||
|
|
||||||
// keep track of where we are and what we're doing
|
// keep track of where we are and what we're doing
|
||||||
float m_fBeat; // make GAMESTATE->m_fSongBeat approach this
|
float m_fTrailingBeat; // this approaches GAMESTATE->m_fSongBeat, which is the actual beat
|
||||||
|
|
||||||
NoteData m_Clipboard;
|
NoteData m_Clipboard;
|
||||||
|
|
||||||
float m_fMusicRate;
|
|
||||||
|
|
||||||
RageSoundSample m_soundChangeLine;
|
RageSoundSample m_soundChangeLine;
|
||||||
RageSoundSample m_soundChangeSnap;
|
RageSoundSample m_soundChangeSnap;
|
||||||
RageSoundSample m_soundMarker;
|
RageSoundSample m_soundMarker;
|
||||||
|
|||||||
@@ -29,6 +29,9 @@
|
|||||||
const float BANNER_X = CENTER_X;
|
const float BANNER_X = CENTER_X;
|
||||||
const float BANNER_Y = SCREEN_TOP + 100;
|
const float BANNER_Y = SCREEN_TOP + 100;
|
||||||
|
|
||||||
|
const float STAGE_X = BANNER_X;
|
||||||
|
const float STAGE_Y = BANNER_Y-40;
|
||||||
|
|
||||||
const float GRADE_X[NUM_PLAYERS] = { CENTER_X-226, CENTER_X+226 };
|
const float GRADE_X[NUM_PLAYERS] = { CENTER_X-226, CENTER_X+226 };
|
||||||
const float GRADE_Y = BANNER_Y;
|
const float GRADE_Y = BANNER_Y;
|
||||||
|
|
||||||
@@ -143,9 +146,17 @@ ScreenEvaluation::ScreenEvaluation( bool bSummary )
|
|||||||
switch( m_ResultMode )
|
switch( m_ResultMode )
|
||||||
{
|
{
|
||||||
case RM_ARCADE_STAGE:
|
case RM_ARCADE_STAGE:
|
||||||
m_BannerWithFrame[0].LoadFromSong( GAMESTATE->m_pCurSong );
|
m_BannerWithFrame[0].LoadFromSongAndNotes( GAMESTATE->m_pCurSong, GAMESTATE->m_pCurNotes );
|
||||||
m_BannerWithFrame[0].SetXY( BANNER_X, BANNER_Y );
|
m_BannerWithFrame[0].SetXY( BANNER_X, BANNER_Y );
|
||||||
this->AddSubActor( &m_BannerWithFrame[0] );
|
this->AddSubActor( &m_BannerWithFrame[0] );
|
||||||
|
|
||||||
|
m_textStage.Load( THEME->GetPathTo(FONT_HEADER1) );
|
||||||
|
m_textStage.TurnShadowOff();
|
||||||
|
m_textStage.SetXY( STAGE_X, STAGE_Y );
|
||||||
|
m_textStage.SetZoom( 0.5f );
|
||||||
|
m_textStage.SetText( GAMESTATE->GetStageText() + " Stage" );
|
||||||
|
this->AddSubActor( &m_textStage );
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case RM_ARCADE_SUMMARY:
|
case RM_ARCADE_SUMMARY:
|
||||||
{
|
{
|
||||||
@@ -561,6 +572,10 @@ void ScreenEvaluation::TweenOnScreen()
|
|||||||
m_BannerWithFrame[i].SetTweenY( fOriginalY );
|
m_BannerWithFrame[i].SetTweenY( fOriginalY );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fOriginalY = m_textStage.GetY();
|
||||||
|
m_textStage.BeginTweeningQueued( MENU_ELEMENTS_TWEEN_TIME, Actor::TWEEN_BIAS_BEGIN );
|
||||||
|
m_textStage.SetTweenY( fOriginalY );
|
||||||
|
|
||||||
for( i=0; i<NUM_JUDGE_LINES; i++ )
|
for( i=0; i<NUM_JUDGE_LINES; i++ )
|
||||||
{
|
{
|
||||||
if (GAMESTATE->m_CurGame != GAME_EZ2)
|
if (GAMESTATE->m_CurGame != GAME_EZ2)
|
||||||
@@ -642,6 +657,9 @@ void ScreenEvaluation::TweenOffScreen()
|
|||||||
m_BannerWithFrame[i].SetTweenZoomY( 0 );
|
m_BannerWithFrame[i].SetTweenZoomY( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_textStage.BeginTweeningQueued( MENU_ELEMENTS_TWEEN_TIME, Actor::TWEEN_BIAS_END );
|
||||||
|
m_textStage.SetTweenZoomY( 0 );
|
||||||
|
|
||||||
for( i=0; i<NUM_JUDGE_LINES; i++ )
|
for( i=0; i<NUM_JUDGE_LINES; i++ )
|
||||||
{
|
{
|
||||||
if (GAMESTATE->m_CurGame != GAME_EZ2)
|
if (GAMESTATE->m_CurGame != GAME_EZ2)
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ protected:
|
|||||||
MenuElements m_Menu;
|
MenuElements m_Menu;
|
||||||
|
|
||||||
BannerWithFrame m_BannerWithFrame[STAGES_TO_SHOW_IN_SUMMARY];
|
BannerWithFrame m_BannerWithFrame[STAGES_TO_SHOW_IN_SUMMARY];
|
||||||
|
BitmapText m_textStage;
|
||||||
|
|
||||||
Sprite m_sprGradeFrame[NUM_PLAYERS];
|
Sprite m_sprGradeFrame[NUM_PLAYERS];
|
||||||
GradeDisplay m_Grades[NUM_PLAYERS];
|
GradeDisplay m_Grades[NUM_PLAYERS];
|
||||||
|
|||||||
@@ -1198,6 +1198,8 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM )
|
|||||||
this->SendScreenMessage( SM_GoToScreenAfterBack, 0 );
|
this->SendScreenMessage( SM_GoToScreenAfterBack, 0 );
|
||||||
else if( GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2() )
|
else if( GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2() )
|
||||||
SCREENMAN->SetNewScreen( new ScreenEvaluation(true) );
|
SCREENMAN->SetNewScreen( new ScreenEvaluation(true) );
|
||||||
|
else if( GAMESTATE->m_PlayMode == PLAY_MODE_ONI || GAMESTATE->m_PlayMode == PLAY_MODE_ENDLESS )
|
||||||
|
SCREENMAN->SetNewScreen( new ScreenEvaluation(false) );
|
||||||
else
|
else
|
||||||
SCREENMAN->SetNewScreen( new ScreenGameOver );
|
SCREENMAN->SetNewScreen( new ScreenGameOver );
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -62,13 +62,15 @@ const CString CREDIT_LINES[] =
|
|||||||
"PROGRAMMING:",
|
"PROGRAMMING:",
|
||||||
"Chris Danford",
|
"Chris Danford",
|
||||||
"Lord Frieza (Andrew Livy)",
|
"Lord Frieza (Andrew Livy)",
|
||||||
"Dro Kulix",
|
"Dro Kulix (Peter S. May)",
|
||||||
"Ben Nordstrom",
|
"Bruno Figueiredo",
|
||||||
|
"Mantis (Ben Nordstrom)",
|
||||||
"Parasyte (Chris Gomez)",
|
"Parasyte (Chris Gomez)",
|
||||||
|
"dirkthedaring (Michael Patterson)",
|
||||||
"angedelamort (Sauleil Lamarre)",
|
"angedelamort (Sauleil Lamarre)",
|
||||||
"Edwin Evans",
|
"Edwin Evans",
|
||||||
"Brian 'Bork' Bugh",
|
"Brian 'Bork' Bugh",
|
||||||
"Jared Roberts",
|
"nmspaz (Jared Roberts)",
|
||||||
"Elvis314 (Joel Maher)",
|
"Elvis314 (Joel Maher)",
|
||||||
"Kefabi (Garth Smith)",
|
"Kefabi (Garth Smith)",
|
||||||
"Pkillah (Playah Killah)",
|
"Pkillah (Playah Killah)",
|
||||||
@@ -83,21 +85,21 @@ const CString CREDIT_LINES[] =
|
|||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
"SPECIAL THANKS TO:",
|
"SPECIAL THANKS TO:",
|
||||||
"DDRLlama",
|
|
||||||
"DDRManiaX",
|
|
||||||
"SimWolf",
|
"SimWolf",
|
||||||
"DJ DraftHorse",
|
"DJ DraftHorse",
|
||||||
"Dance With Intensity",
|
"Dance With Intensity",
|
||||||
|
"BeMaNiRuler",
|
||||||
|
"DDRLlama",
|
||||||
|
"DDRManiaX",
|
||||||
"Lagged",
|
"Lagged",
|
||||||
"The Melting Pot",
|
"The Melting Pot",
|
||||||
"DDRJamz Global BBS",
|
"DDRJamz Global BBS",
|
||||||
"BemaniRuler",
|
|
||||||
"Brendan Walker",
|
"Brendan Walker",
|
||||||
"Eric 'WaffleKing' Webster",
|
"Eric 'WaffleKing' Webster",
|
||||||
"Mark 'Foobly' Verrey",
|
"Mark 'Foobly' Verrey",
|
||||||
"Mandarin Blue",
|
"Mandarin Blue",
|
||||||
"Anne Kiel",
|
"Anne Kiel",
|
||||||
"BeMaNiFiNiNaTiC",
|
"BeMaNiFiNiNaTiC (Jeremy)",
|
||||||
"Garett Sakamoto",
|
"Garett Sakamoto",
|
||||||
"Illusionz - Issaquah, WA",
|
"Illusionz - Issaquah, WA",
|
||||||
"Quarters - Kirkland, WA",
|
"Quarters - Kirkland, WA",
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
/*
|
/*
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
File: ScreenSongOptions.h
|
Class: ScreenSongOptions
|
||||||
|
|
||||||
Desc: Select a song.
|
Desc: See header.
|
||||||
|
|
||||||
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||||
|
Chris Danford
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -21,6 +22,7 @@
|
|||||||
#include "ScreenPlayerOptions.h"
|
#include "ScreenPlayerOptions.h"
|
||||||
#include "RageLog.h"
|
#include "RageLog.h"
|
||||||
#include "GameState.h"
|
#include "GameState.h"
|
||||||
|
#include "ScreenStage.h"
|
||||||
|
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
@@ -112,7 +114,7 @@ void ScreenSongOptions::GoToNextState()
|
|||||||
{
|
{
|
||||||
MUSIC->Stop();
|
MUSIC->Stop();
|
||||||
|
|
||||||
SCREENMAN->SetNewScreen( new ScreenGameplay );
|
SCREENMAN->SetNewScreen( new ScreenStage );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
/*
|
/*
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
Course: SongOptions
|
Class: SongOptions
|
||||||
|
|
||||||
Desc: Per-song options that are not saved between sessions. These are options
|
Desc: Per-song options that are not saved between sessions. These are options
|
||||||
that should probably be disabled in a coin-operated machine.
|
that should probably be disabled in a coin-operated machine.
|
||||||
|
|||||||
Reference in New Issue
Block a user