fixed interaction between arrow brightness and boomerang
fixing more course problems
This commit is contained in:
@@ -0,0 +1,7 @@
|
|||||||
|
#COURSE:All Challenge;
|
||||||
|
#LIVES:4;
|
||||||
|
#SONG:*:CHALLENGE;
|
||||||
|
#SONG:*:CHALLENGE;
|
||||||
|
#SONG:*:CHALLENGE;
|
||||||
|
#SONG:*:CHALLENGE;
|
||||||
|
#SONG:*:CHALLENGE;
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
#COURSE:Stamina Tester Random;
|
||||||
|
#LIVES:4;
|
||||||
|
#SONG:*:9..10;
|
||||||
|
#SONG:*:9..10;
|
||||||
|
#SONG:*:9..10;
|
||||||
|
#SONG:*:9..10;
|
||||||
|
#SONG:*:9..10;
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
#COURSE:Tortise And the Hare;
|
||||||
|
#SONG:*:TRICK:0.7xmusic;
|
||||||
|
#SONG:*:TRICK:0.9xmusic;
|
||||||
|
#SONG:*:TRICK:1.2xmusic;
|
||||||
|
#SONG:*:TRICK:1.5xmusic;
|
||||||
@@ -2,4 +2,4 @@
|
|||||||
#SONG:*:TRICK:1.5x,reverse;
|
#SONG:*:TRICK:1.5x,reverse;
|
||||||
#SONG:*:TRICK:expand;
|
#SONG:*:TRICK:expand;
|
||||||
#SONG:*:TRICK:0.25x,dark;
|
#SONG:*:TRICK:0.25x,dark;
|
||||||
#SONG:*:TRICK:sudden,boost;
|
#SONG:*:TRICK:sudden,land;
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
#COURSE:Tricky Random;
|
|
||||||
#LIVES:4;
|
|
||||||
#SONG:*:TRICK:1.5x,reverse;
|
|
||||||
#SONG:*:TRICK:expand;
|
|
||||||
#SONG:*:TRICK:0.25x,dark;
|
|
||||||
#SONG:*:TRICK:sudden,boost;
|
|
||||||
@@ -934,12 +934,20 @@ ThreeLinesTitleY=-10
|
|||||||
ThreeLinesSubTitleY=0
|
ThreeLinesSubTitleY=0
|
||||||
ThreeLinesArtistY=10
|
ThreeLinesArtistY=10
|
||||||
|
|
||||||
[CourseContentDisplay]
|
[CourseEntryDisplay]
|
||||||
TextBannerX=0
|
TextBannerX=0
|
||||||
TextBannerY=0
|
TextBannerY=0
|
||||||
|
TextBannerZoom=1.0
|
||||||
NumberX=-118
|
NumberX=-118
|
||||||
NumberY=0
|
NumberY=0
|
||||||
FootX=102
|
NumberZoom=1.0
|
||||||
FootY=8
|
FootX=98
|
||||||
|
FootY=-8
|
||||||
|
FootZoom=1.0
|
||||||
DifficultyX=120
|
DifficultyX=120
|
||||||
DifficultyY=8
|
DifficultyY=-8
|
||||||
|
DifficultyZoom=0.7
|
||||||
|
ModifiersX=128
|
||||||
|
ModifiersY=10
|
||||||
|
ModifiersZoom=0.5
|
||||||
|
ModifiersHorizAlign=2
|
||||||
@@ -182,9 +182,12 @@ float ArrowGetGlow( PlayerNumber pn, float fYPos, float fPercentFadeToFail )
|
|||||||
return SCALE( fDistFromHalf, 0, 0.5f, 1.3f, 0 );
|
return SCALE( fDistFromHalf, 0, 0.5f, 1.3f, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
float ArrowGetBrightness( PlayerNumber pn, float fYOffset )
|
float ArrowGetBrightness( PlayerNumber pn, float fNoteBeat )
|
||||||
{
|
{
|
||||||
float fBrightness = SCALE( fYOffset, 0, -ARROW_SIZE, 1.f, 0.f );
|
float fSongBeat = GAMESTATE->m_fSongBeat;
|
||||||
|
float fBeatsUntilStep = fNoteBeat - fSongBeat;
|
||||||
|
|
||||||
|
float fBrightness = SCALE( fBeatsUntilStep, 0, -1, 1.f, 0.f );
|
||||||
CLAMP( fBrightness, 0, 1 );
|
CLAMP( fBrightness, 0, 1 );
|
||||||
// noisy printf( "fBrightness = %f\n", fBrightness );
|
// noisy printf( "fBrightness = %f\n", fBrightness );
|
||||||
return fBrightness;
|
return fBrightness;
|
||||||
|
|||||||
@@ -55,8 +55,8 @@ float ArrowGetAlpha( PlayerNumber pn, float fYPos, float fPercentFadeToFail );
|
|||||||
float ArrowGetGlow( PlayerNumber pn, float fYPos, float fPercentFadeToFail );
|
float ArrowGetGlow( PlayerNumber pn, float fYPos, float fPercentFadeToFail );
|
||||||
|
|
||||||
|
|
||||||
// Depends on fYPos.
|
// Depends on fYOffset.
|
||||||
float ArrowGetBrightness( PlayerNumber pn, float fYOffset );
|
float ArrowGetBrightness( PlayerNumber pn, float fNoteBeat );
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+25
-13
@@ -282,7 +282,8 @@ bool Course::HasDifficult() const
|
|||||||
|
|
||||||
bool Course::IsPlayableIn( NotesType nt ) const
|
bool Course::IsPlayableIn( NotesType nt ) const
|
||||||
{
|
{
|
||||||
return true;
|
// TODO: something smarter here
|
||||||
|
return m_entries.size() > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -296,12 +297,25 @@ void Course::GetStageInfo(
|
|||||||
if( bDifficult )
|
if( bDifficult )
|
||||||
ASSERT( HasDifficult() );
|
ASSERT( HasDifficult() );
|
||||||
|
|
||||||
|
|
||||||
vector<Entry> entries = m_entries;
|
vector<Entry> entries = m_entries;
|
||||||
|
|
||||||
if( m_bRandomize )
|
if( m_bRandomize )
|
||||||
random_shuffle( entries.begin(), entries.end() );
|
random_shuffle( entries.begin(), entries.end() );
|
||||||
|
|
||||||
|
|
||||||
|
// Sorting is slow, so do this outside the for loop.
|
||||||
|
vector<Song*> vSongsByMostPlayed = SONGMAN->GetAllSongs();
|
||||||
|
SortSongPointerArrayByMostPlayed( vSongsByMostPlayed );
|
||||||
|
|
||||||
|
// filter out songs that don't have both medium and hard steps
|
||||||
|
for( int j=vSongsByMostPlayed.size()-1; j>=0; j-- )
|
||||||
|
{
|
||||||
|
Song* pSong = vSongsByMostPlayed[j];
|
||||||
|
if( !pSong->GetNotes(nt, DIFFICULTY_MEDIUM) || !pSong->GetNotes(nt, DIFFICULTY_HARD) )
|
||||||
|
vSongsByMostPlayed.erase( vSongsByMostPlayed.begin()+j );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
for( unsigned i=0; i<entries.size(); i++ )
|
for( unsigned i=0; i<entries.size(); i++ )
|
||||||
{
|
{
|
||||||
const Entry& e = entries[i];
|
const Entry& e = entries[i];
|
||||||
@@ -309,16 +323,6 @@ void Course::GetStageInfo(
|
|||||||
Song* pSong = NULL; // fill this in
|
Song* pSong = NULL; // fill this in
|
||||||
Notes* pNotes = NULL; // fill this in
|
Notes* pNotes = NULL; // fill this in
|
||||||
|
|
||||||
vector<Song*> vSongsByMostPlayed = SONGMAN->GetAllSongs();
|
|
||||||
SortSongPointerArrayByMostPlayed( vSongsByMostPlayed );
|
|
||||||
|
|
||||||
// filter out songs that don't have both medium and hard steps
|
|
||||||
for( int j=vSongsByMostPlayed.size()-1; j>=0; j-- )
|
|
||||||
{
|
|
||||||
Song* pSong = vSongsByMostPlayed[j];
|
|
||||||
if( !pSong->GetNotes(nt, DIFFICULTY_MEDIUM) || !pSong->GetNotes(nt, DIFFICULTY_HARD) )
|
|
||||||
vSongsByMostPlayed.erase( vSongsByMostPlayed.begin()+j );
|
|
||||||
}
|
|
||||||
|
|
||||||
switch( e.type )
|
switch( e.type )
|
||||||
{
|
{
|
||||||
@@ -336,7 +340,15 @@ void Course::GetStageInfo(
|
|||||||
case Entry::random_within_group:
|
case Entry::random_within_group:
|
||||||
{
|
{
|
||||||
vector<Song*> vSongs;
|
vector<Song*> vSongs;
|
||||||
SONGMAN->GetSongs( vSongs, e.group_name );
|
switch( e.type )
|
||||||
|
{
|
||||||
|
case Entry::random:
|
||||||
|
vSongs = SONGMAN->GetAllSongs();
|
||||||
|
break;
|
||||||
|
case Entry::random_within_group:
|
||||||
|
SONGMAN->GetSongs( vSongs, e.group_name );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if( vSongs.size() == 0 )
|
if( vSongs.size() == 0 )
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -1,236 +0,0 @@
|
|||||||
#include "global.h"
|
|
||||||
/*
|
|
||||||
-----------------------------------------------------------------------------
|
|
||||||
Class: CourseContentsFrame
|
|
||||||
|
|
||||||
Desc: See header.
|
|
||||||
|
|
||||||
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
|
||||||
Chris Danford
|
|
||||||
-----------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "CourseContentsFrame.h"
|
|
||||||
#include "RageUtil.h"
|
|
||||||
#include "GameConstantsAndTypes.h"
|
|
||||||
#include "PrefsManager.h"
|
|
||||||
#include "RageLog.h"
|
|
||||||
#include "PrefsManager.h"
|
|
||||||
#include "Course.h"
|
|
||||||
#include "SongManager.h"
|
|
||||||
#include <math.h>
|
|
||||||
#include "RageDisplay.h"
|
|
||||||
#include "ThemeManager.h"
|
|
||||||
#include "Notes.h"
|
|
||||||
#include "GameState.h"
|
|
||||||
#include "StyleDef.h"
|
|
||||||
|
|
||||||
|
|
||||||
#define TEXT_BANNER_X THEME->GetMetricF("CourseContentDisplay","TextBannerX")
|
|
||||||
#define TEXT_BANNER_Y THEME->GetMetricF("CourseContentDisplay","TextBannerY")
|
|
||||||
#define NUMBER_X THEME->GetMetricF("CourseContentDisplay","NumberX")
|
|
||||||
#define NUMBER_Y THEME->GetMetricF("CourseContentDisplay","NumberY")
|
|
||||||
#define FOOT_X THEME->GetMetricF("CourseContentDisplay","FootX")
|
|
||||||
#define FOOT_Y THEME->GetMetricF("CourseContentDisplay","FootY")
|
|
||||||
#define DIFFICULTY_X THEME->GetMetricF("CourseContentDisplay","DifficultyX")
|
|
||||||
#define DIFFICULTY_Y THEME->GetMetricF("CourseContentDisplay","DifficultyY")
|
|
||||||
|
|
||||||
|
|
||||||
CourseContentDisplay::CourseContentDisplay()
|
|
||||||
{
|
|
||||||
m_sprFrame.Load( THEME->GetPathTo("Graphics","select course content bar") );
|
|
||||||
this->AddChild( &m_sprFrame );
|
|
||||||
|
|
||||||
m_textNumber.LoadFromFont( THEME->GetPathTo("Fonts","Header2") );
|
|
||||||
m_textNumber.SetXY( NUMBER_X, NUMBER_Y );
|
|
||||||
m_textNumber.TurnShadowOff();
|
|
||||||
this->AddChild( &m_textNumber );
|
|
||||||
|
|
||||||
m_TextBanner.SetXY( TEXT_BANNER_X, TEXT_BANNER_Y );
|
|
||||||
this->AddChild( &m_TextBanner );
|
|
||||||
|
|
||||||
m_textFoot.LoadFromTextureAndChars( THEME->GetPathTo("Graphics","select music meter 2x1"),"10" );
|
|
||||||
m_textFoot.SetXY( FOOT_X, FOOT_Y );
|
|
||||||
m_textFoot.TurnShadowOff();
|
|
||||||
this->AddChild( &m_textFoot );
|
|
||||||
|
|
||||||
m_textDifficultyNumber.LoadFromFont( THEME->GetPathTo("Fonts","normal") );
|
|
||||||
m_textDifficultyNumber.SetXY( DIFFICULTY_X, DIFFICULTY_Y );
|
|
||||||
m_textDifficultyNumber.SetZoom( 0.8f );
|
|
||||||
m_textDifficultyNumber.TurnShadowOff();
|
|
||||||
this->AddChild( &m_textDifficultyNumber );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void CourseContentDisplay::LoadFromSongAndNotes( int iNum, Song* pSong, Notes* pNotes )
|
|
||||||
{
|
|
||||||
m_textNumber.SetText( ssprintf("%d", iNum) );
|
|
||||||
|
|
||||||
RageColor colorGroup = SONGMAN->GetSongColor( pSong );
|
|
||||||
RageColor colorNotes = SONGMAN->GetDifficultyColor( pNotes->GetDifficulty() );
|
|
||||||
|
|
||||||
m_TextBanner.LoadFromSong( pSong );
|
|
||||||
m_TextBanner.SetDiffuse( colorGroup );
|
|
||||||
|
|
||||||
m_textFoot.SetText( "1" );
|
|
||||||
m_textFoot.SetDiffuse( colorNotes );
|
|
||||||
|
|
||||||
m_textDifficultyNumber.SetText( ssprintf("%d", pNotes->GetMeter()) );
|
|
||||||
m_textDifficultyNumber.SetDiffuse( colorNotes );
|
|
||||||
}
|
|
||||||
|
|
||||||
void CourseContentDisplay::LoadFromDifficulty( int iNum, Difficulty dc )
|
|
||||||
{
|
|
||||||
m_textNumber.SetText( ssprintf("%d", iNum) );
|
|
||||||
|
|
||||||
RageColor colorGroup = RageColor(1,1,1,1); // TODO: What should this be?
|
|
||||||
RageColor colorNotes = SONGMAN->GetDifficultyColor( dc );
|
|
||||||
|
|
||||||
m_TextBanner.LoadFromString( "??????????", "??????????", "", "", "", "" );
|
|
||||||
m_TextBanner.SetDiffuse( colorGroup );
|
|
||||||
|
|
||||||
m_textFoot.SetText( "1" );
|
|
||||||
m_textFoot.SetDiffuse( colorNotes );
|
|
||||||
|
|
||||||
m_textDifficultyNumber.SetText( "?" );
|
|
||||||
m_textDifficultyNumber.SetDiffuse( colorNotes );
|
|
||||||
}
|
|
||||||
|
|
||||||
void CourseContentDisplay::LoadFromMeterRange( int iNum, int iLow, int iHigh )
|
|
||||||
{
|
|
||||||
m_textNumber.SetText( ssprintf("%d", iNum) );
|
|
||||||
|
|
||||||
RageColor colorGroup = RageColor(1,1,1,1); // TODO: What should this be?
|
|
||||||
RageColor colorNotes = RageColor(1,1,1,1);
|
|
||||||
|
|
||||||
m_TextBanner.LoadFromString( "??????????", "??????????", "", "", "", "" );
|
|
||||||
m_TextBanner.SetDiffuse( colorGroup );
|
|
||||||
|
|
||||||
m_textFoot.SetText( "1" );
|
|
||||||
m_textFoot.SetDiffuse( colorNotes );
|
|
||||||
|
|
||||||
m_textDifficultyNumber.SetText( ssprintf("%d-%d", iLow, iHigh) );
|
|
||||||
m_textDifficultyNumber.SetDiffuse( colorNotes );
|
|
||||||
}
|
|
||||||
|
|
||||||
CourseContentsFrame::CourseContentsFrame()
|
|
||||||
{
|
|
||||||
m_iNumContents = 0;
|
|
||||||
m_quad.SetDiffuse( RageColor(0,0,0,0) ); // invisible, since we want to write only to the Zbuffer
|
|
||||||
|
|
||||||
m_fTimeUntilScroll = 0;
|
|
||||||
m_fItemAtTopOfList = 0;
|
|
||||||
|
|
||||||
/* These are all the same; grab the dimensions. */
|
|
||||||
ContentsBarHeight = m_CourseContentDisplays[0].m_sprFrame.GetTexture()->GetSourceFrameHeight();
|
|
||||||
ContentsBarWidth = m_CourseContentDisplays[0].m_sprFrame.GetTexture()->GetSourceFrameWidth();
|
|
||||||
}
|
|
||||||
|
|
||||||
void CourseContentsFrame::TweenInAfterChangedCourse()
|
|
||||||
{
|
|
||||||
m_fItemAtTopOfList = 0;
|
|
||||||
m_fTimeUntilScroll = 3;
|
|
||||||
|
|
||||||
for( int i=0; i<m_iNumContents; i++ )
|
|
||||||
{
|
|
||||||
CourseContentDisplay& display = m_CourseContentDisplays[i];
|
|
||||||
|
|
||||||
display.SetXY( 0, -((MAX_VISIBLE_CONTENTS-1)/2) * float(ContentsBarHeight) );
|
|
||||||
display.StopTweening();
|
|
||||||
display.BeginTweening( i*0.1f );
|
|
||||||
display.SetTweenY( (-(MAX_VISIBLE_CONTENTS-1)/2 + i) * float(ContentsBarHeight) );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void CourseContentsFrame::SetFromCourse( Course* pCourse )
|
|
||||||
{
|
|
||||||
ASSERT( pCourse != NULL );
|
|
||||||
|
|
||||||
m_iNumContents = 0;
|
|
||||||
|
|
||||||
vector<Song*> vSongs;
|
|
||||||
vector<Notes*> vNotes;
|
|
||||||
vector<CString> vsModifiers;
|
|
||||||
pCourse->GetStageInfo( vSongs, vNotes, vsModifiers, GAMESTATE->GetCurrentStyleDef()->m_NotesType, false );
|
|
||||||
|
|
||||||
for( int i=0; i<min((int)vSongs.size(), MAX_TOTAL_CONTENTS); i++ )
|
|
||||||
{
|
|
||||||
CourseContentDisplay& display = m_CourseContentDisplays[m_iNumContents];
|
|
||||||
|
|
||||||
if( pCourse->IsMysterySong(i) )
|
|
||||||
{
|
|
||||||
Difficulty dc = pCourse->GetDifficulty(i);
|
|
||||||
int iMeterLow, iMeterHigh;
|
|
||||||
pCourse->GetMeterRange(i, iMeterLow, iMeterHigh);
|
|
||||||
|
|
||||||
if( dc == DIFFICULTY_INVALID )
|
|
||||||
display.LoadFromMeterRange( m_iNumContents+1, iMeterLow, iMeterHigh );
|
|
||||||
else
|
|
||||||
display.LoadFromDifficulty( m_iNumContents+1, pCourse->GetDifficulty(i) );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Song* pSong = vSongs[i];
|
|
||||||
Notes* pNotes = vNotes[i];
|
|
||||||
CString sModifiers = vsModifiers[i];
|
|
||||||
display.LoadFromSongAndNotes( m_iNumContents+1, pSong, pNotes );
|
|
||||||
}
|
|
||||||
|
|
||||||
m_iNumContents ++;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_fItemAtTopOfList = fmodf(m_fItemAtTopOfList, float(m_iNumContents));
|
|
||||||
}
|
|
||||||
|
|
||||||
void CourseContentsFrame::Update( float fDeltaTime )
|
|
||||||
{
|
|
||||||
ActorFrame::Update( fDeltaTime );
|
|
||||||
|
|
||||||
if( m_fTimeUntilScroll > 0 && m_iNumContents > MAX_VISIBLE_CONTENTS)
|
|
||||||
m_fTimeUntilScroll -= fDeltaTime;
|
|
||||||
if( m_fTimeUntilScroll <= 0 ) {
|
|
||||||
m_fItemAtTopOfList += fDeltaTime;
|
|
||||||
m_fItemAtTopOfList = fmodf(m_fItemAtTopOfList, float(m_iNumContents));
|
|
||||||
}
|
|
||||||
|
|
||||||
for( int i=0; i<m_iNumContents; i++ )
|
|
||||||
m_CourseContentDisplays[i].Update( fDeltaTime );
|
|
||||||
}
|
|
||||||
|
|
||||||
void CourseContentsFrame::DrawPrimitives()
|
|
||||||
{
|
|
||||||
// turn on Z buffer to clip items
|
|
||||||
DISPLAY->EnableZBuffer();
|
|
||||||
|
|
||||||
// write to z buffer so that top and bottom are clipped
|
|
||||||
m_quad.SetZ( 1 );
|
|
||||||
|
|
||||||
RectI rectBarSize(-ContentsBarWidth/2, -ContentsBarHeight/2,
|
|
||||||
ContentsBarWidth/2, ContentsBarHeight/2);
|
|
||||||
m_quad.StretchTo( rectBarSize );
|
|
||||||
|
|
||||||
m_quad.SetY( (-(MAX_VISIBLE_CONTENTS-1)/2 - 1) * float(ContentsBarHeight) );
|
|
||||||
m_quad.Draw();
|
|
||||||
|
|
||||||
m_quad.SetY( ((MAX_VISIBLE_CONTENTS-1)/2 + 1) * float(ContentsBarHeight) );
|
|
||||||
m_quad.Draw();
|
|
||||||
|
|
||||||
int iItemToDraw = (int)m_fItemAtTopOfList;
|
|
||||||
|
|
||||||
// HACK: Insert a little pause as a new item appears on the screen
|
|
||||||
float fRemainder = m_fItemAtTopOfList - (int)m_fItemAtTopOfList;
|
|
||||||
fRemainder = min( fRemainder*1.5f, 1 );
|
|
||||||
|
|
||||||
const float fY = (-fRemainder-(MAX_VISIBLE_CONTENTS-1)/2) * ContentsBarHeight;
|
|
||||||
|
|
||||||
for( int i=0; i<min(MAX_VISIBLE_CONTENTS+1, m_iNumContents); i++ )
|
|
||||||
{
|
|
||||||
if( m_fTimeUntilScroll <= 0 )
|
|
||||||
m_CourseContentDisplays[iItemToDraw].SetY( fY + i*ContentsBarHeight);
|
|
||||||
m_CourseContentDisplays[iItemToDraw].Draw();
|
|
||||||
iItemToDraw = (iItemToDraw+1) % m_iNumContents;
|
|
||||||
}
|
|
||||||
|
|
||||||
// turn off Z buffer
|
|
||||||
DISPLAY->DisableZBuffer();
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,148 @@
|
|||||||
|
#include "global.h"
|
||||||
|
/*
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
Class: CourseContentsList
|
||||||
|
|
||||||
|
Desc: See header.
|
||||||
|
|
||||||
|
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||||
|
Chris Danford
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "CourseContentsList.h"
|
||||||
|
#include "RageUtil.h"
|
||||||
|
#include "GameConstantsAndTypes.h"
|
||||||
|
#include "PrefsManager.h"
|
||||||
|
#include "RageLog.h"
|
||||||
|
#include "PrefsManager.h"
|
||||||
|
#include "Course.h"
|
||||||
|
#include "SongManager.h"
|
||||||
|
#include <math.h>
|
||||||
|
#include "RageDisplay.h"
|
||||||
|
#include "ThemeManager.h"
|
||||||
|
#include "Notes.h"
|
||||||
|
#include "GameState.h"
|
||||||
|
#include "StyleDef.h"
|
||||||
|
|
||||||
|
|
||||||
|
CourseContentsList::CourseContentsList()
|
||||||
|
{
|
||||||
|
m_iNumContents = 0;
|
||||||
|
m_quad.SetDiffuse( RageColor(0,0,0,0) ); // invisible, since we want to write only to the Zbuffer
|
||||||
|
|
||||||
|
m_fTimeUntilScroll = 0;
|
||||||
|
m_fItemAtTopOfList = 0;
|
||||||
|
|
||||||
|
/* These are all the same; grab the dimensions. */
|
||||||
|
ContentsBarHeight = m_CourseContentDisplays[0].m_sprFrame.GetTexture()->GetSourceFrameHeight();
|
||||||
|
ContentsBarWidth = m_CourseContentDisplays[0].m_sprFrame.GetTexture()->GetSourceFrameWidth();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CourseContentsList::SetFromCourse( Course* pCourse )
|
||||||
|
{
|
||||||
|
ASSERT( pCourse != NULL );
|
||||||
|
|
||||||
|
m_iNumContents = 0;
|
||||||
|
|
||||||
|
vector<Song*> vSongs;
|
||||||
|
vector<Notes*> vNotes;
|
||||||
|
vector<CString> vsModifiers;
|
||||||
|
pCourse->GetStageInfo( vSongs, vNotes, vsModifiers, GAMESTATE->GetCurrentStyleDef()->m_NotesType, false );
|
||||||
|
|
||||||
|
for( int i=0; i<min((int)vSongs.size(), MAX_TOTAL_CONTENTS); i++ )
|
||||||
|
{
|
||||||
|
CourseEntryDisplay& display = m_CourseContentDisplays[m_iNumContents];
|
||||||
|
|
||||||
|
if( pCourse->IsMysterySong(i) )
|
||||||
|
{
|
||||||
|
Difficulty dc = pCourse->GetDifficulty(i);
|
||||||
|
int iMeterLow, iMeterHigh;
|
||||||
|
pCourse->GetMeterRange(i, iMeterLow, iMeterHigh);
|
||||||
|
|
||||||
|
if( dc == DIFFICULTY_INVALID )
|
||||||
|
display.LoadFromMeterRange( m_iNumContents+1, iMeterLow, iMeterHigh, vsModifiers[i] );
|
||||||
|
else
|
||||||
|
display.LoadFromDifficulty( m_iNumContents+1, dc, vsModifiers[i] );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Song* pSong = vSongs[i];
|
||||||
|
Notes* pNotes = vNotes[i];
|
||||||
|
CString sModifiers = vsModifiers[i];
|
||||||
|
display.LoadFromSongAndNotes( m_iNumContents+1, pSong, pNotes, vsModifiers[i] );
|
||||||
|
}
|
||||||
|
|
||||||
|
m_iNumContents ++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CourseContentsList::Update( float fDeltaTime )
|
||||||
|
{
|
||||||
|
ActorFrame::Update( fDeltaTime );
|
||||||
|
|
||||||
|
if( m_fTimeUntilScroll > 0 && m_iNumContents > MAX_VISIBLE_CONTENTS)
|
||||||
|
m_fTimeUntilScroll -= fDeltaTime;
|
||||||
|
if( m_fTimeUntilScroll <= 0 ) {
|
||||||
|
m_fItemAtTopOfList += fDeltaTime;
|
||||||
|
m_fItemAtTopOfList = fmodf(m_fItemAtTopOfList, float(m_iNumContents));
|
||||||
|
}
|
||||||
|
|
||||||
|
for( int i=0; i<m_iNumContents; i++ )
|
||||||
|
m_CourseContentDisplays[i].Update( fDeltaTime );
|
||||||
|
}
|
||||||
|
|
||||||
|
void CourseContentsList::DrawPrimitives()
|
||||||
|
{
|
||||||
|
// turn on Z buffer to clip items
|
||||||
|
DISPLAY->EnableZBuffer();
|
||||||
|
|
||||||
|
// write to z buffer so that top and bottom are clipped
|
||||||
|
m_quad.SetZ( 1 );
|
||||||
|
|
||||||
|
RectI rectBarSize(-ContentsBarWidth/2, -ContentsBarHeight/2,
|
||||||
|
ContentsBarWidth/2, ContentsBarHeight/2);
|
||||||
|
m_quad.StretchTo( rectBarSize );
|
||||||
|
|
||||||
|
m_quad.SetY( (-(MAX_VISIBLE_CONTENTS-1)/2 - 1) * float(ContentsBarHeight) );
|
||||||
|
m_quad.Draw();
|
||||||
|
|
||||||
|
m_quad.SetY( ((MAX_VISIBLE_CONTENTS-1)/2 + 1) * float(ContentsBarHeight) );
|
||||||
|
m_quad.Draw();
|
||||||
|
|
||||||
|
int iItemToDraw = (int)m_fItemAtTopOfList;
|
||||||
|
|
||||||
|
// HACK: Insert a little pause as a new item appears on the screen
|
||||||
|
float fRemainder = m_fItemAtTopOfList - (int)m_fItemAtTopOfList;
|
||||||
|
fRemainder = min( fRemainder*1.5f, 1 );
|
||||||
|
|
||||||
|
const float fY = (-fRemainder-(MAX_VISIBLE_CONTENTS-1)/2) * ContentsBarHeight;
|
||||||
|
|
||||||
|
for( int i=0; i<min(MAX_VISIBLE_CONTENTS+1, m_iNumContents); i++ )
|
||||||
|
{
|
||||||
|
if( m_fTimeUntilScroll <= 0 )
|
||||||
|
m_CourseContentDisplays[iItemToDraw].SetY( fY + i*ContentsBarHeight);
|
||||||
|
m_CourseContentDisplays[iItemToDraw].Draw();
|
||||||
|
iItemToDraw = (iItemToDraw+1) % m_iNumContents;
|
||||||
|
}
|
||||||
|
|
||||||
|
// turn off Z buffer
|
||||||
|
DISPLAY->DisableZBuffer();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CourseContentsList::TweenInAfterChangedCourse()
|
||||||
|
{
|
||||||
|
m_fItemAtTopOfList = 0;
|
||||||
|
m_fTimeUntilScroll = 3;
|
||||||
|
|
||||||
|
for( int i=0; i<m_iNumContents; i++ )
|
||||||
|
{
|
||||||
|
CourseEntryDisplay& display = m_CourseContentDisplays[i];
|
||||||
|
|
||||||
|
display.SetXY( 0, -((MAX_VISIBLE_CONTENTS-1)/2) * float(ContentsBarHeight) );
|
||||||
|
display.StopTweening();
|
||||||
|
display.BeginTweening( i*0.1f );
|
||||||
|
display.SetTweenY( (-(MAX_VISIBLE_CONTENTS-1)/2 + i) * float(ContentsBarHeight) );
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
#ifndef COURSECONTENTSFRAME_H
|
#ifndef CourseContentsList_H
|
||||||
#define COURSECONTENTSFRAME_H
|
#define CourseContentsList_H
|
||||||
/*
|
/*
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
Class: CourseContentsFrame
|
Class: CourseContentsList
|
||||||
|
|
||||||
Desc: Holds course name and banner.
|
Desc: Holds course name and banner.
|
||||||
|
|
||||||
@@ -17,6 +17,7 @@
|
|||||||
#include "ActorFrame.h"
|
#include "ActorFrame.h"
|
||||||
#include "Sprite.h"
|
#include "Sprite.h"
|
||||||
#include "Quad.h"
|
#include "Quad.h"
|
||||||
|
#include "CourseEntryDisplay.h"
|
||||||
class Course;
|
class Course;
|
||||||
class Song;
|
class Song;
|
||||||
struct Notes;
|
struct Notes;
|
||||||
@@ -26,27 +27,11 @@ const int MAX_VISIBLE_CONTENTS = 5;
|
|||||||
const int MAX_TOTAL_CONTENTS = 56;
|
const int MAX_TOTAL_CONTENTS = 56;
|
||||||
|
|
||||||
|
|
||||||
class CourseContentDisplay : public ActorFrame
|
|
||||||
|
class CourseContentsList : public ActorFrame
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CourseContentDisplay();
|
CourseContentsList();
|
||||||
|
|
||||||
void LoadFromSongAndNotes( int iNum, Song* pSong, Notes* pNotes );
|
|
||||||
void LoadFromDifficulty( int iNum, Difficulty dc );
|
|
||||||
void LoadFromMeterRange( int iNum, int iLow, int iHigh );
|
|
||||||
|
|
||||||
Sprite m_sprFrame;
|
|
||||||
BitmapText m_textNumber;
|
|
||||||
TextBanner m_TextBanner;
|
|
||||||
BitmapText m_textFoot;
|
|
||||||
BitmapText m_textDifficultyNumber;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
class CourseContentsFrame : public ActorFrame
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
CourseContentsFrame();
|
|
||||||
|
|
||||||
virtual void Update( float fDeltaTime );
|
virtual void Update( float fDeltaTime );
|
||||||
virtual void DrawPrimitives();
|
virtual void DrawPrimitives();
|
||||||
@@ -59,7 +44,7 @@ protected:
|
|||||||
Quad m_quad;
|
Quad m_quad;
|
||||||
|
|
||||||
int m_iNumContents;
|
int m_iNumContents;
|
||||||
CourseContentDisplay m_CourseContentDisplays[MAX_TOTAL_CONTENTS];
|
CourseEntryDisplay m_CourseContentDisplays[MAX_TOTAL_CONTENTS];
|
||||||
int ContentsBarHeight, ContentsBarWidth;
|
int ContentsBarHeight, ContentsBarWidth;
|
||||||
|
|
||||||
float m_fTimeUntilScroll;
|
float m_fTimeUntilScroll;
|
||||||
@@ -0,0 +1,136 @@
|
|||||||
|
#include "global.h"
|
||||||
|
/*
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
Class: CourseEntryDisplay
|
||||||
|
|
||||||
|
Desc: See header.
|
||||||
|
|
||||||
|
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||||
|
Chris Danford
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "CourseEntryDisplay.h"
|
||||||
|
#include "RageUtil.h"
|
||||||
|
#include "GameConstantsAndTypes.h"
|
||||||
|
#include "PrefsManager.h"
|
||||||
|
#include "RageLog.h"
|
||||||
|
#include "PrefsManager.h"
|
||||||
|
#include "Course.h"
|
||||||
|
#include "SongManager.h"
|
||||||
|
#include <math.h>
|
||||||
|
#include "RageDisplay.h"
|
||||||
|
#include "ThemeManager.h"
|
||||||
|
#include "Notes.h"
|
||||||
|
#include "GameState.h"
|
||||||
|
#include "StyleDef.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define TEXT_BANNER_X THEME->GetMetricF("CourseEntryDisplay","TextBannerX")
|
||||||
|
#define TEXT_BANNER_Y THEME->GetMetricF("CourseEntryDisplay","TextBannerY")
|
||||||
|
#define TEXT_BANNER_ZOOM THEME->GetMetricF("CourseEntryDisplay","TextBannerZoom")
|
||||||
|
#define NUMBER_X THEME->GetMetricF("CourseEntryDisplay","NumberX")
|
||||||
|
#define NUMBER_Y THEME->GetMetricF("CourseEntryDisplay","NumberY")
|
||||||
|
#define NUMBER_ZOOM THEME->GetMetricF("CourseEntryDisplay","NumberZoom")
|
||||||
|
#define FOOT_X THEME->GetMetricF("CourseEntryDisplay","FootX")
|
||||||
|
#define FOOT_Y THEME->GetMetricF("CourseEntryDisplay","FootY")
|
||||||
|
#define FOOT_ZOOM THEME->GetMetricF("CourseEntryDisplay","FootZoom")
|
||||||
|
#define DIFFICULTY_X THEME->GetMetricF("CourseEntryDisplay","DifficultyX")
|
||||||
|
#define DIFFICULTY_Y THEME->GetMetricF("CourseEntryDisplay","DifficultyY")
|
||||||
|
#define DIFFICULTY_ZOOM THEME->GetMetricF("CourseEntryDisplay","DifficultyZoom")
|
||||||
|
#define MODIFIERS_X THEME->GetMetricF("CourseEntryDisplay","ModifiersX")
|
||||||
|
#define MODIFIERS_Y THEME->GetMetricF("CourseEntryDisplay","ModifiersY")
|
||||||
|
#define MODIFIERS_ZOOM THEME->GetMetricF("CourseEntryDisplay","ModifiersZoom")
|
||||||
|
#define MODIFIERS_HORIZ_ALIGN THEME->GetMetricI("CourseEntryDisplay","ModifiersHorizAlign")
|
||||||
|
|
||||||
|
|
||||||
|
CourseEntryDisplay::CourseEntryDisplay()
|
||||||
|
{
|
||||||
|
m_sprFrame.Load( THEME->GetPathTo("Graphics","select course content bar") );
|
||||||
|
this->AddChild( &m_sprFrame );
|
||||||
|
|
||||||
|
m_textNumber.LoadFromFont( THEME->GetPathTo("Fonts","Header2") );
|
||||||
|
m_textNumber.SetXY( NUMBER_X, NUMBER_Y );
|
||||||
|
m_textNumber.TurnShadowOff();
|
||||||
|
this->AddChild( &m_textNumber );
|
||||||
|
|
||||||
|
m_TextBanner.SetXY( TEXT_BANNER_X, TEXT_BANNER_Y );
|
||||||
|
this->AddChild( &m_TextBanner );
|
||||||
|
|
||||||
|
m_textFoot.LoadFromTextureAndChars( THEME->GetPathTo("Graphics","select music meter 2x1"),"10" );
|
||||||
|
m_textFoot.SetXY( FOOT_X, FOOT_Y );
|
||||||
|
m_textFoot.TurnShadowOff();
|
||||||
|
this->AddChild( &m_textFoot );
|
||||||
|
|
||||||
|
m_textDifficultyNumber.LoadFromFont( THEME->GetPathTo("Fonts","normal") );
|
||||||
|
m_textDifficultyNumber.SetXY( DIFFICULTY_X, DIFFICULTY_Y );
|
||||||
|
m_textDifficultyNumber.SetZoom( DIFFICULTY_ZOOM );
|
||||||
|
m_textDifficultyNumber.TurnShadowOff();
|
||||||
|
this->AddChild( &m_textDifficultyNumber );
|
||||||
|
|
||||||
|
m_textModifiers.LoadFromFont( THEME->GetPathTo("Fonts","normal") );
|
||||||
|
m_textModifiers.SetXY( MODIFIERS_X, MODIFIERS_Y );
|
||||||
|
m_textModifiers.SetZoom( MODIFIERS_ZOOM );
|
||||||
|
m_textModifiers.SetHorizAlign( (Actor::HorizAlign)MODIFIERS_HORIZ_ALIGN );
|
||||||
|
m_textModifiers.TurnShadowOff();
|
||||||
|
this->AddChild( &m_textModifiers );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CourseEntryDisplay::LoadFromSongAndNotes( int iNum, Song* pSong, Notes* pNotes, CString sModifiers )
|
||||||
|
{
|
||||||
|
m_textNumber.SetText( ssprintf("%d", iNum) );
|
||||||
|
|
||||||
|
RageColor colorGroup = SONGMAN->GetSongColor( pSong );
|
||||||
|
RageColor colorNotes = SONGMAN->GetDifficultyColor( pNotes->GetDifficulty() );
|
||||||
|
|
||||||
|
m_TextBanner.LoadFromSong( pSong );
|
||||||
|
m_TextBanner.SetDiffuse( colorGroup );
|
||||||
|
|
||||||
|
m_textFoot.SetText( "1" );
|
||||||
|
m_textFoot.SetDiffuse( colorNotes );
|
||||||
|
|
||||||
|
m_textDifficultyNumber.SetText( ssprintf("%d", pNotes->GetMeter()) );
|
||||||
|
m_textDifficultyNumber.SetDiffuse( colorNotes );
|
||||||
|
|
||||||
|
m_textModifiers.SetText( sModifiers );
|
||||||
|
}
|
||||||
|
|
||||||
|
void CourseEntryDisplay::LoadFromDifficulty( int iNum, Difficulty dc, CString sModifiers )
|
||||||
|
{
|
||||||
|
m_textNumber.SetText( ssprintf("%d", iNum) );
|
||||||
|
|
||||||
|
RageColor colorGroup = RageColor(1,1,1,1); // TODO: What should this be?
|
||||||
|
RageColor colorNotes = SONGMAN->GetDifficultyColor( dc );
|
||||||
|
|
||||||
|
m_TextBanner.LoadFromString( "??????????", "??????????", "", "", "", "" );
|
||||||
|
m_TextBanner.SetDiffuse( colorGroup );
|
||||||
|
|
||||||
|
m_textFoot.SetText( "1" );
|
||||||
|
m_textFoot.SetDiffuse( colorNotes );
|
||||||
|
|
||||||
|
m_textDifficultyNumber.SetText( "?" );
|
||||||
|
m_textDifficultyNumber.SetDiffuse( colorNotes );
|
||||||
|
|
||||||
|
m_textModifiers.SetText( sModifiers );
|
||||||
|
}
|
||||||
|
|
||||||
|
void CourseEntryDisplay::LoadFromMeterRange( int iNum, int iLow, int iHigh, CString sModifiers )
|
||||||
|
{
|
||||||
|
m_textNumber.SetText( ssprintf("%d", iNum) );
|
||||||
|
|
||||||
|
RageColor colorGroup = RageColor(1,1,1,1); // TODO: What should this be?
|
||||||
|
RageColor colorNotes = RageColor(1,1,1,1);
|
||||||
|
|
||||||
|
m_TextBanner.LoadFromString( "??????????", "??????????", "", "", "", "" );
|
||||||
|
m_TextBanner.SetDiffuse( colorGroup );
|
||||||
|
|
||||||
|
m_textFoot.SetText( "1" );
|
||||||
|
m_textFoot.SetDiffuse( colorNotes );
|
||||||
|
|
||||||
|
m_textDifficultyNumber.SetText( ssprintf(iLow==iHigh?"%d":"%d-%d", iLow, iHigh) );
|
||||||
|
m_textDifficultyNumber.SetDiffuse( colorNotes );
|
||||||
|
|
||||||
|
m_textModifiers.SetText( sModifiers );
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
#ifndef CourseEntryDisplay_H
|
||||||
|
#define CourseEntryDisplay_H
|
||||||
|
/*
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
Class: CourseEntryDisplay
|
||||||
|
|
||||||
|
Desc: Holds course name and banner.
|
||||||
|
|
||||||
|
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
||||||
|
Chris Danford
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "FootMeter.h"
|
||||||
|
#include "BitmapText.h"
|
||||||
|
#include "TextBanner.h"
|
||||||
|
#include "ActorFrame.h"
|
||||||
|
#include "Sprite.h"
|
||||||
|
#include "Quad.h"
|
||||||
|
class Course;
|
||||||
|
class Song;
|
||||||
|
struct Notes;
|
||||||
|
|
||||||
|
|
||||||
|
class CourseEntryDisplay : public ActorFrame
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CourseEntryDisplay();
|
||||||
|
|
||||||
|
void LoadFromSongAndNotes( int iNum, Song* pSong, Notes* pNotes, CString sModifiers );
|
||||||
|
void LoadFromDifficulty( int iNum, Difficulty dc, CString sModifiers );
|
||||||
|
void LoadFromMeterRange( int iNum, int iLow, int iHigh, CString sModifiers );
|
||||||
|
|
||||||
|
Sprite m_sprFrame;
|
||||||
|
BitmapText m_textNumber;
|
||||||
|
TextBanner m_TextBanner;
|
||||||
|
BitmapText m_textFoot;
|
||||||
|
BitmapText m_textDifficultyNumber;
|
||||||
|
BitmapText m_textModifiers;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -650,7 +650,7 @@ void NoteDisplay::DrawTap( const int iCol, const float fBeat, const bool bOnSame
|
|||||||
const float fXPos = ArrowGetXPos( m_PlayerNumber, iCol, fYPos );
|
const float fXPos = ArrowGetXPos( m_PlayerNumber, iCol, fYPos );
|
||||||
const float fAlpha = ArrowGetAlpha( m_PlayerNumber, fYPos, fPercentFadeToFail );
|
const float fAlpha = ArrowGetAlpha( m_PlayerNumber, fYPos, fPercentFadeToFail );
|
||||||
const float fGlow = ArrowGetGlow( m_PlayerNumber, fYPos, fPercentFadeToFail );
|
const float fGlow = ArrowGetGlow( m_PlayerNumber, fYPos, fPercentFadeToFail );
|
||||||
const float fColorScale = ArrowGetBrightness( m_PlayerNumber, fYOffset ) * SCALE(fLife,0,1,0.2f,1);
|
const float fColorScale = ArrowGetBrightness( m_PlayerNumber, fBeat ) * SCALE(fLife,0,1,0.2f,1);
|
||||||
RageColor diffuse = RageColor(fColorScale,fColorScale,fColorScale,fAlpha);
|
RageColor diffuse = RageColor(fColorScale,fColorScale,fColorScale,fAlpha);
|
||||||
RageColor glow = RageColor(1,1,1,fGlow);
|
RageColor glow = RageColor(1,1,1,fGlow);
|
||||||
|
|
||||||
|
|||||||
@@ -522,37 +522,11 @@ ScreenEvaluation::ScreenEvaluation( bool bSummary )
|
|||||||
switch( m_ResultMode )
|
switch( m_ResultMode )
|
||||||
{
|
{
|
||||||
case RM_ARCADE_STAGE:
|
case RM_ARCADE_STAGE:
|
||||||
switch( max_grade )
|
SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation "+GradeToString(max_grade)) );
|
||||||
{
|
|
||||||
case GRADE_E: SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation e") ); break;
|
|
||||||
case GRADE_D: SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation d") ); break;
|
|
||||||
case GRADE_C: SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation c") ); break;
|
|
||||||
case GRADE_B: SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation b") ); break;
|
|
||||||
case GRADE_A: SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation a") ); break;
|
|
||||||
case GRADE_AA: SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation aa") ); break;
|
|
||||||
case GRADE_AAA: SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation aaa") ); break;
|
|
||||||
case GRADE_AAAA: SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation aaaa") ); break;
|
|
||||||
case GRADE_NO_DATA:
|
|
||||||
default:
|
|
||||||
ASSERT(0); // invalid grade
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case RM_COURSE:
|
case RM_COURSE:
|
||||||
case RM_ARCADE_SUMMARY:
|
case RM_ARCADE_SUMMARY:
|
||||||
switch( max_grade )
|
SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation final "+GradeToString(max_grade)) );
|
||||||
{
|
|
||||||
case GRADE_E: SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation final e") ); break;
|
|
||||||
case GRADE_D: SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation final d") ); break;
|
|
||||||
case GRADE_C: SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation final c") ); break;
|
|
||||||
case GRADE_B: SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation final b") ); break;
|
|
||||||
case GRADE_A: SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation final a") ); break;
|
|
||||||
case GRADE_AA: SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation final aa") ); break;
|
|
||||||
case GRADE_AAA: SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation final aaa") ); break;
|
|
||||||
case GRADE_AAAA: SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation final aaaa") ); break;
|
|
||||||
case GRADE_NO_DATA:
|
|
||||||
default:
|
|
||||||
ASSERT(0); // invalid grade
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ASSERT(0);
|
ASSERT(0);
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
#include "RageSound.h"
|
#include "RageSound.h"
|
||||||
#include "GameConstantsAndTypes.h"
|
#include "GameConstantsAndTypes.h"
|
||||||
#include "MusicWheel.h"
|
#include "MusicWheel.h"
|
||||||
#include "CourseContentsFrame.h"
|
#include "CourseContentsList.h"
|
||||||
#include "MenuElements.h"
|
#include "MenuElements.h"
|
||||||
#include "FadingBanner.h"
|
#include "FadingBanner.h"
|
||||||
|
|
||||||
@@ -49,7 +49,7 @@ protected:
|
|||||||
FadingBanner m_Banner;
|
FadingBanner m_Banner;
|
||||||
BitmapText m_textNumSongs;
|
BitmapText m_textNumSongs;
|
||||||
BitmapText m_textTime;
|
BitmapText m_textTime;
|
||||||
CourseContentsFrame m_CourseContentsFrame;
|
CourseContentsList m_CourseContentsFrame;
|
||||||
Sprite m_sprHighScoreFrame[NUM_PLAYERS];
|
Sprite m_sprHighScoreFrame[NUM_PLAYERS];
|
||||||
ScoreDisplayNormal m_HighScore[NUM_PLAYERS];
|
ScoreDisplayNormal m_HighScore[NUM_PLAYERS];
|
||||||
BitmapText m_textPlayerOptions[NUM_PLAYERS];
|
BitmapText m_textPlayerOptions[NUM_PLAYERS];
|
||||||
|
|||||||
@@ -635,8 +635,8 @@ void Song::GetNotes( vector<Notes*>& arrayAddTo, NotesType nt, Difficulty dc, in
|
|||||||
for( unsigned i=0; i<m_apNotes.size(); i++ ) // for each of the Song's Notes
|
for( unsigned i=0; i<m_apNotes.size(); i++ ) // for each of the Song's Notes
|
||||||
if( m_apNotes[i]->m_NotesType == nt )
|
if( m_apNotes[i]->m_NotesType == nt )
|
||||||
if( dc==DIFFICULTY_INVALID || dc==m_apNotes[i]->GetDifficulty() )
|
if( dc==DIFFICULTY_INVALID || dc==m_apNotes[i]->GetDifficulty() )
|
||||||
if( iMeterLow==-1 || iMeterLow>=m_apNotes[i]->GetMeter() )
|
if( iMeterLow==-1 || iMeterLow<=m_apNotes[i]->GetMeter() )
|
||||||
if( iMeterHigh==-1 || iMeterHigh<=m_apNotes[i]->GetMeter() )
|
if( iMeterHigh==-1 || iMeterHigh>=m_apNotes[i]->GetMeter() )
|
||||||
if( sDescription=="" || sDescription==m_apNotes[i]->GetDescription() )
|
if( sDescription=="" || sDescription==m_apNotes[i]->GetDescription() )
|
||||||
if( bIncludeAutoGen || !m_apNotes[i]->IsAutogen() )
|
if( bIncludeAutoGen || !m_apNotes[i]->IsAutogen() )
|
||||||
arrayAddTo.push_back( m_apNotes[i] );
|
arrayAddTo.push_back( m_apNotes[i] );
|
||||||
|
|||||||
@@ -74,8 +74,7 @@ Grade StageStats::GetGrade( PlayerNumber pn )
|
|||||||
LOG->Trace( "fPercentDancePoints: %f", fPercentDancePoints );
|
LOG->Trace( "fPercentDancePoints: %f", fPercentDancePoints );
|
||||||
|
|
||||||
// check for "AAAA"
|
// check for "AAAA"
|
||||||
if( fPercentDancePoints == 1.00f &&
|
if( iTapNoteScores[pn][TNS_MARVELOUS] > 0 &&
|
||||||
iTapNoteScores[pn][TNS_MARVELOUS] > 0 &&
|
|
||||||
iTapNoteScores[pn][TNS_PERFECT] == 0 &&
|
iTapNoteScores[pn][TNS_PERFECT] == 0 &&
|
||||||
iTapNoteScores[pn][TNS_GREAT] == 0 &&
|
iTapNoteScores[pn][TNS_GREAT] == 0 &&
|
||||||
iTapNoteScores[pn][TNS_GOOD] == 0 &&
|
iTapNoteScores[pn][TNS_GOOD] == 0 &&
|
||||||
|
|||||||
@@ -565,12 +565,13 @@ static void GameLoop()
|
|||||||
|
|
||||||
TEXTUREMAN->Update( fDeltaTime );
|
TEXTUREMAN->Update( fDeltaTime );
|
||||||
|
|
||||||
/* Important: Process input before updaing game logic, or else game logic will lag for one frame */
|
|
||||||
HandleInputEvents( fDeltaTime );
|
|
||||||
|
|
||||||
SCREENMAN->Update( fDeltaTime );
|
SCREENMAN->Update( fDeltaTime );
|
||||||
SOUNDMAN->Update( fDeltaTime );
|
SOUNDMAN->Update( fDeltaTime );
|
||||||
|
|
||||||
|
/* Important: Process input AFTER updaing game logic, or input will be acting on song beat from last frame */
|
||||||
|
HandleInputEvents( fDeltaTime );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Render
|
* Render
|
||||||
*/
|
*/
|
||||||
|
|||||||
+18
-10
@@ -57,10 +57,10 @@ LINK32=link.exe
|
|||||||
# SUBTRACT LINK32 /verbose /pdb:none
|
# SUBTRACT LINK32 /verbose /pdb:none
|
||||||
# Begin Special Build Tool
|
# Begin Special Build Tool
|
||||||
IntDir=.\../Release6
|
IntDir=.\../Release6
|
||||||
TargetDir=\temp\stepmania
|
TargetDir=\stepmania\stepmania
|
||||||
TargetName=StepMania
|
TargetName=StepMania
|
||||||
SOURCE="$(InputPath)"
|
SOURCE="$(InputPath)"
|
||||||
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
|
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
|
||||||
PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi ia32.vdi
|
PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi ia32.vdi
|
||||||
# End Special Build Tool
|
# End Special Build Tool
|
||||||
|
|
||||||
@@ -92,10 +92,10 @@ LINK32=link.exe
|
|||||||
# SUBTRACT LINK32 /verbose /profile /pdb:none /incremental:no /nodefaultlib
|
# SUBTRACT LINK32 /verbose /profile /pdb:none /incremental:no /nodefaultlib
|
||||||
# Begin Special Build Tool
|
# Begin Special Build Tool
|
||||||
IntDir=.\../Debug6
|
IntDir=.\../Debug6
|
||||||
TargetDir=\temp\stepmania
|
TargetDir=\stepmania\stepmania
|
||||||
TargetName=StepMania-debug
|
TargetName=StepMania-debug
|
||||||
SOURCE="$(InputPath)"
|
SOURCE="$(InputPath)"
|
||||||
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
|
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
|
||||||
PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi ia32.vdi
|
PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi ia32.vdi
|
||||||
# End Special Build Tool
|
# End Special Build Tool
|
||||||
|
|
||||||
@@ -791,10 +791,6 @@ SOURCE=.\StepMania.RC
|
|||||||
# End Group
|
# End Group
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\ScreenDimensions.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=.\global.cpp
|
SOURCE=.\global.cpp
|
||||||
|
|
||||||
!IF "$(CFG)" == "StepMania - Win32 Release"
|
!IF "$(CFG)" == "StepMania - Win32 Release"
|
||||||
@@ -812,6 +808,10 @@ SOURCE=.\global.h
|
|||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\ScreenDimensions.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\StdString.h
|
SOURCE=.\StdString.h
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
@@ -968,11 +968,19 @@ SOURCE=.\BPMDisplay.h
|
|||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\CourseContentsFrame.cpp
|
SOURCE=.\CourseContentsList.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\CourseContentsFrame.h
|
SOURCE=.\CourseContentsList.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\CourseEntryDisplay.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\CourseEntryDisplay.h
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
|
|||||||
@@ -687,12 +687,6 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
|
|||||||
<Filter
|
<Filter
|
||||||
Name="StepMania"
|
Name="StepMania"
|
||||||
Filter="">
|
Filter="">
|
||||||
<File
|
|
||||||
RelativePath=".\global.cpp">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath=".\global.h">
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath="StdString.h">
|
RelativePath="StdString.h">
|
||||||
</File>
|
</File>
|
||||||
@@ -702,6 +696,12 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
|
|||||||
<File
|
<File
|
||||||
RelativePath=".\StepMania.h">
|
RelativePath=".\StepMania.h">
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\global.cpp">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\global.h">
|
||||||
|
</File>
|
||||||
<Filter
|
<Filter
|
||||||
Name="arch"
|
Name="arch"
|
||||||
Filter="">
|
Filter="">
|
||||||
@@ -962,10 +962,16 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
|
|||||||
RelativePath="BannerWithFrame.h">
|
RelativePath="BannerWithFrame.h">
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="CourseContentsFrame.cpp">
|
RelativePath="CourseContentsList.cpp">
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="CourseContentsFrame.h">
|
RelativePath="CourseContentsList.h">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="CourseEntryDisplay.cpp">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="CourseEntryDisplay.h">
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="CroppedSprite.cpp">
|
RelativePath="CroppedSprite.cpp">
|
||||||
|
|||||||
Reference in New Issue
Block a user