fixed interaction between arrow brightness and boomerang

fixing more course problems
This commit is contained in:
Chris Danford
2003-02-17 02:45:30 +00:00
parent 91d5ac72a2
commit 5028fab1bc
22 changed files with 442 additions and 342 deletions
+7
View File
@@ -0,0 +1,7 @@
#COURSE:All Challenge;
#LIVES:4;
#SONG:*:CHALLENGE;
#SONG:*:CHALLENGE;
#SONG:*:CHALLENGE;
#SONG:*:CHALLENGE;
#SONG:*:CHALLENGE;
+7
View File
@@ -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;
+5
View File
@@ -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:expand;
#SONG:*:TRICK:0.25x,dark;
#SONG:*:TRICK:sudden,boost;
#SONG:*:TRICK:sudden,land;
-6
View File
@@ -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;
+12 -4
View File
@@ -934,12 +934,20 @@ ThreeLinesTitleY=-10
ThreeLinesSubTitleY=0
ThreeLinesArtistY=10
[CourseContentDisplay]
[CourseEntryDisplay]
TextBannerX=0
TextBannerY=0
TextBannerZoom=1.0
NumberX=-118
NumberY=0
FootX=102
FootY=8
NumberZoom=1.0
FootX=98
FootY=-8
FootZoom=1.0
DifficultyX=120
DifficultyY=8
DifficultyY=-8
DifficultyZoom=0.7
ModifiersX=128
ModifiersY=10
ModifiersZoom=0.5
ModifiersHorizAlign=2
+5 -2
View File
@@ -182,9 +182,12 @@ float ArrowGetGlow( PlayerNumber pn, float fYPos, float fPercentFadeToFail )
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 );
// noisy printf( "fBrightness = %f\n", fBrightness );
return fBrightness;
+2 -2
View File
@@ -55,8 +55,8 @@ float ArrowGetAlpha( PlayerNumber pn, float fYPos, float fPercentFadeToFail );
float ArrowGetGlow( PlayerNumber pn, float fYPos, float fPercentFadeToFail );
// Depends on fYPos.
float ArrowGetBrightness( PlayerNumber pn, float fYOffset );
// Depends on fYOffset.
float ArrowGetBrightness( PlayerNumber pn, float fNoteBeat );
#endif
+25 -13
View File
@@ -282,7 +282,8 @@ bool Course::HasDifficult() 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 )
ASSERT( HasDifficult() );
vector<Entry> entries = m_entries;
if( m_bRandomize )
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++ )
{
const Entry& e = entries[i];
@@ -309,16 +323,6 @@ void Course::GetStageInfo(
Song* pSong = 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 )
{
@@ -336,7 +340,15 @@ void Course::GetStageInfo(
case Entry::random_within_group:
{
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 )
break;
-236
View File
@@ -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();
}
+148
View File
@@ -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
#define COURSECONTENTSFRAME_H
#ifndef CourseContentsList_H
#define CourseContentsList_H
/*
-----------------------------------------------------------------------------
Class: CourseContentsFrame
Class: CourseContentsList
Desc: Holds course name and banner.
@@ -17,6 +17,7 @@
#include "ActorFrame.h"
#include "Sprite.h"
#include "Quad.h"
#include "CourseEntryDisplay.h"
class Course;
class Song;
struct Notes;
@@ -26,27 +27,11 @@ const int MAX_VISIBLE_CONTENTS = 5;
const int MAX_TOTAL_CONTENTS = 56;
class CourseContentDisplay : public ActorFrame
class CourseContentsList : public ActorFrame
{
public:
CourseContentDisplay();
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();
CourseContentsList();
virtual void Update( float fDeltaTime );
virtual void DrawPrimitives();
@@ -59,7 +44,7 @@ protected:
Quad m_quad;
int m_iNumContents;
CourseContentDisplay m_CourseContentDisplays[MAX_TOTAL_CONTENTS];
CourseEntryDisplay m_CourseContentDisplays[MAX_TOTAL_CONTENTS];
int ContentsBarHeight, ContentsBarWidth;
float m_fTimeUntilScroll;
+136
View File
@@ -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 );
}
+43
View File
@@ -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
+1 -1
View File
@@ -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 fAlpha = ArrowGetAlpha( 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 glow = RageColor(1,1,1,fGlow);
+2 -28
View File
@@ -522,37 +522,11 @@ ScreenEvaluation::ScreenEvaluation( bool bSummary )
switch( m_ResultMode )
{
case RM_ARCADE_STAGE:
switch( 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
}
SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation "+GradeToString(max_grade)) );
break;
case RM_COURSE:
case RM_ARCADE_SUMMARY:
switch( 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
}
SOUNDMAN->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation final "+GradeToString(max_grade)) );
break;
default:
ASSERT(0);
+2 -2
View File
@@ -15,7 +15,7 @@
#include "RageSound.h"
#include "GameConstantsAndTypes.h"
#include "MusicWheel.h"
#include "CourseContentsFrame.h"
#include "CourseContentsList.h"
#include "MenuElements.h"
#include "FadingBanner.h"
@@ -49,7 +49,7 @@ protected:
FadingBanner m_Banner;
BitmapText m_textNumSongs;
BitmapText m_textTime;
CourseContentsFrame m_CourseContentsFrame;
CourseContentsList m_CourseContentsFrame;
Sprite m_sprHighScoreFrame[NUM_PLAYERS];
ScoreDisplayNormal m_HighScore[NUM_PLAYERS];
BitmapText m_textPlayerOptions[NUM_PLAYERS];
+2 -2
View File
@@ -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
if( m_apNotes[i]->m_NotesType == nt )
if( dc==DIFFICULTY_INVALID || dc==m_apNotes[i]->GetDifficulty() )
if( iMeterLow==-1 || iMeterLow>=m_apNotes[i]->GetMeter() )
if( iMeterHigh==-1 || iMeterHigh<=m_apNotes[i]->GetMeter() )
if( iMeterLow==-1 || iMeterLow<=m_apNotes[i]->GetMeter() )
if( iMeterHigh==-1 || iMeterHigh>=m_apNotes[i]->GetMeter() )
if( sDescription=="" || sDescription==m_apNotes[i]->GetDescription() )
if( bIncludeAutoGen || !m_apNotes[i]->IsAutogen() )
arrayAddTo.push_back( m_apNotes[i] );
+1 -2
View File
@@ -74,8 +74,7 @@ Grade StageStats::GetGrade( PlayerNumber pn )
LOG->Trace( "fPercentDancePoints: %f", fPercentDancePoints );
// check for "AAAA"
if( fPercentDancePoints == 1.00f &&
iTapNoteScores[pn][TNS_MARVELOUS] > 0 &&
if( iTapNoteScores[pn][TNS_MARVELOUS] > 0 &&
iTapNoteScores[pn][TNS_PERFECT] == 0 &&
iTapNoteScores[pn][TNS_GREAT] == 0 &&
iTapNoteScores[pn][TNS_GOOD] == 0 &&
+3 -2
View File
@@ -565,12 +565,13 @@ static void GameLoop()
TEXTUREMAN->Update( fDeltaTime );
/* Important: Process input before updaing game logic, or else game logic will lag for one frame */
HandleInputEvents( fDeltaTime );
SCREENMAN->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
*/
+18 -10
View File
@@ -57,10 +57,10 @@ LINK32=link.exe
# SUBTRACT LINK32 /verbose /pdb:none
# Begin Special Build Tool
IntDir=.\../Release6
TargetDir=\temp\stepmania
TargetDir=\stepmania\stepmania
TargetName=StepMania
SOURCE="$(InputPath)"
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi ia32.vdi
# End Special Build Tool
@@ -92,10 +92,10 @@ LINK32=link.exe
# SUBTRACT LINK32 /verbose /profile /pdb:none /incremental:no /nodefaultlib
# Begin Special Build Tool
IntDir=.\../Debug6
TargetDir=\temp\stepmania
TargetDir=\stepmania\stepmania
TargetName=StepMania-debug
SOURCE="$(InputPath)"
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi ia32.vdi
# End Special Build Tool
@@ -791,10 +791,6 @@ SOURCE=.\StepMania.RC
# End Group
# Begin Source File
SOURCE=.\ScreenDimensions.h
# End Source File
# Begin Source File
SOURCE=.\global.cpp
!IF "$(CFG)" == "StepMania - Win32 Release"
@@ -812,6 +808,10 @@ SOURCE=.\global.h
# End Source File
# Begin Source File
SOURCE=.\ScreenDimensions.h
# End Source File
# Begin Source File
SOURCE=.\StdString.h
# End Source File
# Begin Source File
@@ -968,11 +968,19 @@ SOURCE=.\BPMDisplay.h
# End Source File
# Begin Source File
SOURCE=.\CourseContentsFrame.cpp
SOURCE=.\CourseContentsList.cpp
# End 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
# Begin Source File
+14 -8
View File
@@ -687,12 +687,6 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
<Filter
Name="StepMania"
Filter="">
<File
RelativePath=".\global.cpp">
</File>
<File
RelativePath=".\global.h">
</File>
<File
RelativePath="StdString.h">
</File>
@@ -702,6 +696,12 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
<File
RelativePath=".\StepMania.h">
</File>
<File
RelativePath=".\global.cpp">
</File>
<File
RelativePath=".\global.h">
</File>
<Filter
Name="arch"
Filter="">
@@ -962,10 +962,16 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
RelativePath="BannerWithFrame.h">
</File>
<File
RelativePath="CourseContentsFrame.cpp">
RelativePath="CourseContentsList.cpp">
</File>
<File
RelativePath="CourseContentsFrame.h">
RelativePath="CourseContentsList.h">
</File>
<File
RelativePath="CourseEntryDisplay.cpp">
</File>
<File
RelativePath="CourseEntryDisplay.h">
</File>
<File
RelativePath="CroppedSprite.cpp">