add explosion graphic and sound if step on mine
This commit is contained in:
@@ -29,3 +29,31 @@ UseLighting=0
|
|||||||
ReverseDrawOrder=1101
|
ReverseDrawOrder=1101
|
||||||
HoldHeadIsAboveWavyParts=1
|
HoldHeadIsAboveWavyParts=1
|
||||||
HoldTailIsAboveWavyParts=1
|
HoldTailIsAboveWavyParts=1
|
||||||
|
|
||||||
|
[GhostArrowDim]
|
||||||
|
NoneCommand=
|
||||||
|
MissCommand=
|
||||||
|
BooCommand=diffuse,0.8,0.0,0.6,1;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0
|
||||||
|
GoodCommand=diffuse,0.3,0.8,1.0,1;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0
|
||||||
|
GreatCommand=diffuse,0.0,1.0,0.4,1;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0
|
||||||
|
PerfectCommand=diffuse,1.0,1.0,0.3,1;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0
|
||||||
|
MarvelousCommand=diffuse,1.0,1.0,1.0,1;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0
|
||||||
|
|
||||||
|
[GhostArrowBright]
|
||||||
|
NoneCommand=
|
||||||
|
MissCommand=
|
||||||
|
BooCommand=diffuse,0.8,0.0,0.6,1;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0
|
||||||
|
GoodCommand=diffuse,0.3,0.8,1.0,1;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0
|
||||||
|
GreatCommand=diffuse,0.0,1.0,0.4,1;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0
|
||||||
|
PerfectCommand=diffuse,1.0,1.0,0.3,1;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0
|
||||||
|
MarvelousCommand=diffuse,1.0,1.0,1.0,1;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0
|
||||||
|
|
||||||
|
[GhostArrowMine]
|
||||||
|
NoneCommand=
|
||||||
|
MissCommand=blend,add;diffuse,1,1,1,1;zoom,1;rotationz,0;linear,0.3;rotationz,90;linear,0.3;rotationz,180;diffusealpha,0
|
||||||
|
BooCommand=
|
||||||
|
GoodCommand=
|
||||||
|
GreatCommand=
|
||||||
|
PerfectCommand=
|
||||||
|
MarvelousCommand=
|
||||||
|
|
||||||
|
|||||||
@@ -1711,26 +1711,6 @@ OddLineIn=addx,640;decelerate,0.5;addx,-640;
|
|||||||
EvenLineOut=stoptweening;accelerate,0.3;addx,-640;
|
EvenLineOut=stoptweening;accelerate,0.3;addx,-640;
|
||||||
OddLineOut=stoptweening;accelerate,0.3;addx,640;
|
OddLineOut=stoptweening;accelerate,0.3;addx,640;
|
||||||
|
|
||||||
[GhostArrow]
|
|
||||||
ShowSeconds=0.12
|
|
||||||
ZoomStart=1.0
|
|
||||||
ZoomEnd=1.3
|
|
||||||
ColorMarvelous=1.0,1.0,1.0,1 // white
|
|
||||||
ColorPerfect=1.0,1.0,0.3,1 // yellow
|
|
||||||
ColorGreat=0.0,1.0,0.4,1 // green
|
|
||||||
ColorGood=0.3,0.8,1.0,1 // blue
|
|
||||||
ColorBoo=0.8,0.0,0.6,1 // purple
|
|
||||||
|
|
||||||
[GhostArrowBright]
|
|
||||||
ShowSeconds=0.12
|
|
||||||
ZoomStart=1.0
|
|
||||||
ZoomEnd=1.3
|
|
||||||
ColorMarvelous=1.0,1.0,1.0,1 // white
|
|
||||||
ColorPerfect=1.0,1.0,0.3,1 // yellow
|
|
||||||
ColorGreat=0.0,1.0,0.4,1 // green
|
|
||||||
ColorGood=0.3,0.8,1.0,1 // blue
|
|
||||||
ColorBoo=0.8,0.0,0.6,1 // purple
|
|
||||||
|
|
||||||
[HoldGhostArrow]
|
[HoldGhostArrow]
|
||||||
WarmUpSeconds=0.25
|
WarmUpSeconds=0.25
|
||||||
|
|
||||||
|
|||||||
@@ -141,3 +141,19 @@ SongSortOrder StringToSongSortOrder( CString str )
|
|||||||
|
|
||||||
return SORT_INVALID;
|
return SORT_INVALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
CString TapNoteScoreToString( TapNoteScore tns )
|
||||||
|
{
|
||||||
|
switch( tns )
|
||||||
|
{
|
||||||
|
case TNS_NONE: return "none";
|
||||||
|
case TNS_MISS: return "miss";
|
||||||
|
case TNS_BOO: return "boo";
|
||||||
|
case TNS_GOOD: return "good";
|
||||||
|
case TNS_GREAT: return "great";
|
||||||
|
case TNS_PERFECT: return "perfect";
|
||||||
|
case TNS_MARVELOUS: return "marvelous";
|
||||||
|
default: ASSERT(0); return ""; // invalid Difficulty
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -144,6 +144,7 @@ enum TapNoteScore {
|
|||||||
NUM_TAP_NOTE_SCORES
|
NUM_TAP_NOTE_SCORES
|
||||||
};
|
};
|
||||||
|
|
||||||
|
CString TapNoteScoreToString( TapNoteScore tns );
|
||||||
|
|
||||||
//enum TapNoteTiming {
|
//enum TapNoteTiming {
|
||||||
// TNT_NONE,
|
// TNT_NONE,
|
||||||
|
|||||||
@@ -12,34 +12,26 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "GhostArrow.h"
|
#include "GhostArrow.h"
|
||||||
#include "PrefsManager.h"
|
#include "NoteSkinManager.h"
|
||||||
#include "ThemeManager.h"
|
|
||||||
|
|
||||||
|
|
||||||
CachedThemeMetricF GA_SHOW_SECONDS ("GhostArrow","ShowSeconds");
|
|
||||||
CachedThemeMetricF GA_ZOOM_START ("GhostArrow","ZoomStart");
|
|
||||||
CachedThemeMetricF GA_ZOOM_END ("GhostArrow","ZoomEnd");
|
|
||||||
CachedThemeMetricC GA_COLOR_MARVELOUS ("GhostArrow","ColorMarvelous");
|
|
||||||
CachedThemeMetricC GA_COLOR_PERFECT ("GhostArrow","ColorPerfect");
|
|
||||||
CachedThemeMetricC GA_COLOR_GREAT ("GhostArrow","ColorGreat");
|
|
||||||
CachedThemeMetricC GA_COLOR_GOOD ("GhostArrow","ColorGood");
|
|
||||||
CachedThemeMetricC GA_COLOR_BOO ("GhostArrow","ColorBoo");
|
|
||||||
|
|
||||||
|
|
||||||
GhostArrow::GhostArrow()
|
GhostArrow::GhostArrow()
|
||||||
{
|
{
|
||||||
GA_SHOW_SECONDS.Refresh();
|
|
||||||
GA_ZOOM_START.Refresh();
|
|
||||||
GA_ZOOM_END.Refresh();
|
|
||||||
GA_COLOR_MARVELOUS.Refresh();
|
|
||||||
GA_COLOR_PERFECT.Refresh();
|
|
||||||
GA_COLOR_GREAT.Refresh();
|
|
||||||
GA_COLOR_GOOD.Refresh();
|
|
||||||
GA_COLOR_BOO.Refresh();
|
|
||||||
|
|
||||||
SetDiffuse( RageColor(1,1,1,0) );
|
SetDiffuse( RageColor(1,1,1,0) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GhostArrow::Init( PlayerNumber pn )
|
||||||
|
{
|
||||||
|
m_PlayerNumber = pn;
|
||||||
|
|
||||||
|
for( int i=0; i<NUM_TAP_NOTE_SCORES; i++ )
|
||||||
|
{
|
||||||
|
CString sJudge = TapNoteScoreToString( (TapNoteScore)i );
|
||||||
|
CString sCommand = Capitalize(sJudge)+"Command";
|
||||||
|
m_sScoreCommand[i] = NOTESKIN->GetMetric(m_PlayerNumber,m_sName,sCommand);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void GhostArrow::Update( float fDeltaTime )
|
void GhostArrow::Update( float fDeltaTime )
|
||||||
{
|
{
|
||||||
Sprite::Update( fDeltaTime );
|
Sprite::Update( fDeltaTime );
|
||||||
@@ -47,34 +39,5 @@ void GhostArrow::Update( float fDeltaTime )
|
|||||||
|
|
||||||
void GhostArrow::Step( TapNoteScore score )
|
void GhostArrow::Step( TapNoteScore score )
|
||||||
{
|
{
|
||||||
// HACK: set the length of each frame so the animation plays in exactly 1 pop up time.
|
this->Command( m_sScoreCommand[score] );
|
||||||
// We can't do this in the constructor because the image hasn't been loaded yet
|
|
||||||
for( int i=0; i<Sprite::GetNumStates(); i++ )
|
|
||||||
Sprite::m_States[i].fDelay = GA_SHOW_SECONDS / Sprite::GetNumStates();
|
|
||||||
|
|
||||||
RageColor colorStart;
|
|
||||||
switch( score )
|
|
||||||
{
|
|
||||||
case TNS_MARVELOUS: colorStart = GA_COLOR_MARVELOUS; break;
|
|
||||||
case TNS_PERFECT: colorStart = GA_COLOR_PERFECT; break;
|
|
||||||
case TNS_GREAT: colorStart = GA_COLOR_GREAT; break;
|
|
||||||
case TNS_GOOD: colorStart = GA_COLOR_GOOD; break;
|
|
||||||
case TNS_BOO: colorStart = GA_COLOR_BOO; break;
|
|
||||||
case TNS_MISS: // miss should never be passed in here
|
|
||||||
default:
|
|
||||||
ASSERT(0);
|
|
||||||
}
|
|
||||||
RageColor colorEnd = colorStart;
|
|
||||||
colorEnd.a = 0;
|
|
||||||
|
|
||||||
StopTweening();
|
|
||||||
SetDiffuse( colorStart );
|
|
||||||
SetState( 0 );
|
|
||||||
SetZoom( GA_ZOOM_START );
|
|
||||||
|
|
||||||
BeginTweening( (float)GA_SHOW_SECONDS/2.0f );
|
|
||||||
SetZoom( ((float)GA_ZOOM_START+(float)GA_ZOOM_END)/2.0f );
|
|
||||||
BeginTweening( (float)GA_SHOW_SECONDS/2.0f );
|
|
||||||
SetZoom( GA_ZOOM_END );
|
|
||||||
SetDiffuse( colorEnd );
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,20 +12,24 @@
|
|||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "Sprite.h"
|
#include "Sprite.h"
|
||||||
#include "GameConstantsAndTypes.h"
|
#include "GameConstantsAndTypes.h"
|
||||||
|
#include "PlayerNumber.h"
|
||||||
|
|
||||||
class GhostArrow : public Sprite
|
class GhostArrow : public Sprite
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
GhostArrow();
|
GhostArrow();
|
||||||
|
|
||||||
|
virtual void Init( PlayerNumber pn );
|
||||||
|
|
||||||
virtual void Update( float fDeltaTime );
|
virtual void Update( float fDeltaTime );
|
||||||
|
|
||||||
void Step( TapNoteScore score );
|
void Step( TapNoteScore score );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
PlayerNumber m_PlayerNumber;
|
||||||
|
CString m_sScoreCommand[NUM_TAP_NOTE_SCORES];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,80 +0,0 @@
|
|||||||
#include "global.h"
|
|
||||||
/*
|
|
||||||
-----------------------------------------------------------------------------
|
|
||||||
Class: GhostArrowBright
|
|
||||||
|
|
||||||
Desc: See header.
|
|
||||||
|
|
||||||
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
|
||||||
Ben Nordstrom
|
|
||||||
Chris Danford
|
|
||||||
-----------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "GhostArrowBright.h"
|
|
||||||
#include "PrefsManager.h"
|
|
||||||
#include "ThemeManager.h"
|
|
||||||
|
|
||||||
|
|
||||||
CachedThemeMetricF GAB_SHOW_SECONDS ("GhostArrowBright","ShowSeconds");
|
|
||||||
CachedThemeMetricF GAB_ZOOM_START ("GhostArrowBright","ZoomStart");
|
|
||||||
CachedThemeMetricF GAB_ZOOM_END ("GhostArrowBright","ZoomEnd");
|
|
||||||
CachedThemeMetricC GAB_COLOR_MARVELOUS ("GhostArrowBright","ColorMarvelous");
|
|
||||||
CachedThemeMetricC GAB_COLOR_PERFECT ("GhostArrowBright","ColorPerfect");
|
|
||||||
CachedThemeMetricC GAB_COLOR_GREAT ("GhostArrowBright","ColorGreat");
|
|
||||||
CachedThemeMetricC GAB_COLOR_GOOD ("GhostArrowBright","ColorGood");
|
|
||||||
CachedThemeMetricC GAB_COLOR_BOO ("GhostArrowBright","ColorBoo");
|
|
||||||
|
|
||||||
|
|
||||||
GhostArrowBright::GhostArrowBright()
|
|
||||||
{
|
|
||||||
GAB_SHOW_SECONDS.Refresh();
|
|
||||||
GAB_ZOOM_START.Refresh();
|
|
||||||
GAB_ZOOM_END.Refresh();
|
|
||||||
GAB_COLOR_MARVELOUS.Refresh();
|
|
||||||
GAB_COLOR_PERFECT.Refresh();
|
|
||||||
GAB_COLOR_GREAT.Refresh();
|
|
||||||
GAB_COLOR_GOOD.Refresh();
|
|
||||||
GAB_COLOR_BOO.Refresh();
|
|
||||||
|
|
||||||
SetDiffuse( RageColor(1,1,1,0) );
|
|
||||||
}
|
|
||||||
|
|
||||||
void GhostArrowBright::Update( float fDeltaTime )
|
|
||||||
{
|
|
||||||
Sprite::Update( fDeltaTime );
|
|
||||||
}
|
|
||||||
|
|
||||||
void GhostArrowBright::Step( TapNoteScore score )
|
|
||||||
{
|
|
||||||
// HACK: set the length of each frame so the animation plays in exactly 1 pop up time.
|
|
||||||
// We can't do this in the constructor because the image hasn't been loaded yet
|
|
||||||
for( int i=0; i<Sprite::GetNumStates(); i++ )
|
|
||||||
Sprite::m_States[i].fDelay = GAB_SHOW_SECONDS / Sprite::GetNumStates();
|
|
||||||
|
|
||||||
RageColor colorStart;
|
|
||||||
switch( score )
|
|
||||||
{
|
|
||||||
case TNS_MARVELOUS: colorStart = GAB_COLOR_MARVELOUS; break;
|
|
||||||
case TNS_PERFECT: colorStart = GAB_COLOR_PERFECT; break;
|
|
||||||
case TNS_GREAT: colorStart = GAB_COLOR_GREAT; break;
|
|
||||||
case TNS_GOOD: colorStart = GAB_COLOR_GOOD; break;
|
|
||||||
case TNS_BOO: colorStart = GAB_COLOR_BOO; break;
|
|
||||||
case TNS_MISS: // miss should never be passed in here
|
|
||||||
default:
|
|
||||||
ASSERT(0);
|
|
||||||
}
|
|
||||||
RageColor colorEnd = colorStart;
|
|
||||||
colorEnd.a = 0;
|
|
||||||
|
|
||||||
StopTweening();
|
|
||||||
SetDiffuse( colorStart );
|
|
||||||
SetState( 0 );
|
|
||||||
SetZoom( GAB_ZOOM_START );
|
|
||||||
|
|
||||||
BeginTweening( (float)GAB_SHOW_SECONDS/2 );
|
|
||||||
SetZoom( ((float)GAB_ZOOM_START+(float)GAB_ZOOM_END)/2 );
|
|
||||||
BeginTweening( (float)GAB_SHOW_SECONDS/2 );
|
|
||||||
SetZoom( GAB_ZOOM_END );
|
|
||||||
SetDiffuse( colorEnd );
|
|
||||||
}
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
#ifndef GHOSTARROWBRIGHT_H
|
|
||||||
#define GHOSTARROWBRIGHT_H
|
|
||||||
/*
|
|
||||||
-----------------------------------------------------------------------------
|
|
||||||
Class: GhostArrowBright
|
|
||||||
|
|
||||||
Desc: Ghost arrow used when over 100 combo.
|
|
||||||
|
|
||||||
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
|
||||||
Ben Nordstrom
|
|
||||||
Chris Danford
|
|
||||||
-----------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "Sprite.h"
|
|
||||||
#include "GameConstantsAndTypes.h"
|
|
||||||
|
|
||||||
class GhostArrowBright : public Sprite
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
GhostArrowBright();
|
|
||||||
|
|
||||||
virtual void Update( float fDeltaTime );
|
|
||||||
|
|
||||||
void Step( TapNoteScore score );
|
|
||||||
|
|
||||||
protected:
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -41,13 +41,25 @@ void GhostArrowRow::Load( PlayerNumber pn )
|
|||||||
if(Button == "")
|
if(Button == "")
|
||||||
Button = NoteSkinManager::ColToButtonName(c);
|
Button = NoteSkinManager::ColToButtonName(c);
|
||||||
|
|
||||||
m_GhostArrowRow[c].Load( NOTESKIN->GetPathTo(pn, Button, "tap explosion dim") );
|
m_GhostDim[c].SetName( "GhostArrowDim" );
|
||||||
m_GhostArrowRowBright[c].Load( NOTESKIN->GetPathTo(pn, Button, "tap explosion bright") );
|
m_GhostBright[c].SetName( "GhostArrowBright" );
|
||||||
m_HoldGhostArrowRow[c].Load( NOTESKIN->GetPathTo(pn, Button, "hold explosion") );
|
m_GhostMine[c].SetName( "GhostArrowMine" );
|
||||||
|
m_HoldGhost[c].SetName( "HoldGhostArrow" );
|
||||||
|
|
||||||
m_GhostArrowRow[c].SetX( pStyleDef->m_ColumnInfo[pn][c].fXOffset );
|
m_GhostDim[c].Init( pn );
|
||||||
m_GhostArrowRowBright[c].SetX( pStyleDef->m_ColumnInfo[pn][c].fXOffset );
|
m_GhostBright[c].Init( pn );
|
||||||
m_HoldGhostArrowRow[c].SetX( pStyleDef->m_ColumnInfo[pn][c].fXOffset );
|
m_GhostMine[c].Init( pn );
|
||||||
|
//m_HoldGhost[c].Init( pn );
|
||||||
|
|
||||||
|
m_GhostDim[c].Load( NOTESKIN->GetPathTo(pn, Button, "tap explosion dim") );
|
||||||
|
m_GhostBright[c].Load( NOTESKIN->GetPathTo(pn, Button, "tap explosion bright") );
|
||||||
|
m_GhostMine[c].Load( NOTESKIN->GetPathTo(pn, Button, "tap explosion mine") );
|
||||||
|
m_HoldGhost[c].Load( NOTESKIN->GetPathTo(pn, Button, "hold explosion") );
|
||||||
|
|
||||||
|
m_GhostDim[c].SetX( pStyleDef->m_ColumnInfo[pn][c].fXOffset );
|
||||||
|
m_GhostBright[c].SetX( pStyleDef->m_ColumnInfo[pn][c].fXOffset );
|
||||||
|
m_GhostMine[c].SetX( pStyleDef->m_ColumnInfo[pn][c].fXOffset );
|
||||||
|
m_HoldGhost[c].SetX( pStyleDef->m_ColumnInfo[pn][c].fXOffset );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -56,9 +68,10 @@ void GhostArrowRow::Update( float fDeltaTime )
|
|||||||
{
|
{
|
||||||
for( int c=0; c<m_iNumCols; c++ )
|
for( int c=0; c<m_iNumCols; c++ )
|
||||||
{
|
{
|
||||||
m_GhostArrowRow[c].Update( fDeltaTime );
|
m_GhostDim[c].Update( fDeltaTime );
|
||||||
m_GhostArrowRowBright[c].Update( fDeltaTime );
|
m_GhostBright[c].Update( fDeltaTime );
|
||||||
m_HoldGhostArrowRow[c].Update( fDeltaTime );
|
m_GhostMine[c].Update( fDeltaTime );
|
||||||
|
m_HoldGhost[c].Update( fDeltaTime );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -69,17 +82,21 @@ void GhostArrowRow::DrawPrimitives()
|
|||||||
g_NoteFieldMode[m_PlayerNumber].BeginDrawTrack(c);
|
g_NoteFieldMode[m_PlayerNumber].BeginDrawTrack(c);
|
||||||
|
|
||||||
float fX = ArrowGetXPos( m_PlayerNumber, c, 0 );
|
float fX = ArrowGetXPos( m_PlayerNumber, c, 0 );
|
||||||
m_GhostArrowRow[c].SetX( fX );
|
m_GhostDim[c].SetX( fX );
|
||||||
m_GhostArrowRowBright[c].SetX( fX );
|
m_GhostBright[c].SetX( fX );
|
||||||
m_HoldGhostArrowRow[c].SetX( fX );
|
m_GhostMine[c].SetX( fX );
|
||||||
float fZ = ArrowGetZPos( m_PlayerNumber, c, 0 );
|
m_HoldGhost[c].SetX( fX );
|
||||||
m_GhostArrowRow[c].SetZ( fZ );
|
|
||||||
m_GhostArrowRowBright[c].SetZ( fZ );
|
|
||||||
m_HoldGhostArrowRow[c].SetZ( fZ );
|
|
||||||
|
|
||||||
m_GhostArrowRow[c].Draw();
|
float fZ = ArrowGetZPos( m_PlayerNumber, c, 0 );
|
||||||
m_GhostArrowRowBright[c].Draw();
|
m_GhostDim[c].SetZ( fZ );
|
||||||
m_HoldGhostArrowRow[c].Draw();
|
m_GhostBright[c].SetZ( fZ );
|
||||||
|
m_GhostMine[c].SetZ( fZ );
|
||||||
|
m_HoldGhost[c].SetZ( fZ );
|
||||||
|
|
||||||
|
m_GhostDim[c].Draw();
|
||||||
|
m_GhostBright[c].Draw();
|
||||||
|
m_GhostMine[c].Draw();
|
||||||
|
m_HoldGhost[c].Draw();
|
||||||
|
|
||||||
g_NoteFieldMode[m_PlayerNumber].EndDrawTrack(c);
|
g_NoteFieldMode[m_PlayerNumber].EndDrawTrack(c);
|
||||||
}
|
}
|
||||||
@@ -90,13 +107,18 @@ void GhostArrowRow::TapNote( int iCol, TapNoteScore score, bool bBright )
|
|||||||
{
|
{
|
||||||
ASSERT( iCol >= 0 && iCol < m_iNumCols );
|
ASSERT( iCol >= 0 && iCol < m_iNumCols );
|
||||||
if( bBright )
|
if( bBright )
|
||||||
m_GhostArrowRowBright[iCol].Step( score );
|
m_GhostBright[iCol].Step( score );
|
||||||
else
|
else
|
||||||
m_GhostArrowRow[iCol].Step( score );
|
m_GhostDim[iCol].Step( score );
|
||||||
}
|
}
|
||||||
|
|
||||||
void GhostArrowRow::HoldNote( int iCol )
|
void GhostArrowRow::HoldNote( int iCol )
|
||||||
{
|
{
|
||||||
ASSERT( iCol >= 0 && iCol < m_iNumCols );
|
ASSERT( iCol >= 0 && iCol < m_iNumCols );
|
||||||
m_HoldGhostArrowRow[iCol].Step();
|
m_HoldGhost[iCol].Step();
|
||||||
|
}
|
||||||
|
|
||||||
|
void GhostArrowRow::TapMine( int iCol, TapNoteScore score )
|
||||||
|
{
|
||||||
|
m_GhostMine[iCol].Step( score );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,6 @@
|
|||||||
|
|
||||||
#include "ActorFrame.h"
|
#include "ActorFrame.h"
|
||||||
#include "GhostArrow.h"
|
#include "GhostArrow.h"
|
||||||
#include "GhostArrowBright.h"
|
|
||||||
#include "HoldGhostArrow.h"
|
#include "HoldGhostArrow.h"
|
||||||
#include "GameConstantsAndTypes.h"
|
#include "GameConstantsAndTypes.h"
|
||||||
#include "StyleDef.h"
|
#include "StyleDef.h"
|
||||||
@@ -30,15 +29,17 @@ public:
|
|||||||
void Load( PlayerNumber pn );
|
void Load( PlayerNumber pn );
|
||||||
|
|
||||||
void TapNote( int iCol, TapNoteScore score, bool bBright );
|
void TapNote( int iCol, TapNoteScore score, bool bBright );
|
||||||
|
void TapMine( int iCol, TapNoteScore score );
|
||||||
void HoldNote( int iCol );
|
void HoldNote( int iCol );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
int m_iNumCols;
|
int m_iNumCols;
|
||||||
PlayerNumber m_PlayerNumber;
|
PlayerNumber m_PlayerNumber;
|
||||||
|
|
||||||
GhostArrow m_GhostArrowRow[MAX_NOTE_TRACKS];
|
GhostArrow m_GhostDim[MAX_NOTE_TRACKS];
|
||||||
GhostArrowBright m_GhostArrowRowBright[MAX_NOTE_TRACKS];
|
GhostArrow m_GhostBright[MAX_NOTE_TRACKS];
|
||||||
HoldGhostArrow m_HoldGhostArrowRow[MAX_NOTE_TRACKS];
|
GhostArrow m_GhostMine[MAX_NOTE_TRACKS];
|
||||||
|
HoldGhostArrow m_HoldGhost[MAX_NOTE_TRACKS];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -199,6 +199,8 @@ void Player::Load( PlayerNumber pn, NoteData* pNoteData, LifeMeter* pLM, Combine
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_sLastSeenNoteSkin = GAMESTATE->m_PlayerOptions[m_PlayerNumber].m_sNoteSkin;
|
m_sLastSeenNoteSkin = GAMESTATE->m_PlayerOptions[m_PlayerNumber].m_sNoteSkin;
|
||||||
|
|
||||||
|
m_soundMineExplosion.Load( THEME->GetPathToS("Player explosion") );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::Update( float fDeltaTime )
|
void Player::Update( float fDeltaTime )
|
||||||
@@ -458,6 +460,9 @@ void Player::Step( int col, RageTimer tm )
|
|||||||
|
|
||||||
const float fSecondsFromPerfect = fabsf( fNoteOffset );
|
const float fSecondsFromPerfect = fabsf( fNoteOffset );
|
||||||
|
|
||||||
|
|
||||||
|
TapNote tn = GetTapNote(col,iIndexOverlappingNote);
|
||||||
|
|
||||||
// calculate TapNoteScore
|
// calculate TapNoteScore
|
||||||
TapNoteScore score;
|
TapNoteScore score;
|
||||||
|
|
||||||
@@ -472,6 +477,15 @@ void Player::Step( int col, RageTimer tm )
|
|||||||
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowGoodSeconds ) score = TNS_GOOD;
|
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowGoodSeconds ) score = TNS_GOOD;
|
||||||
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowBooSeconds ) score = TNS_BOO;
|
else if( fScaledSecondsFromPerfect <= PREFSMAN->m_fJudgeWindowBooSeconds ) score = TNS_BOO;
|
||||||
else score = TNS_NONE;
|
else score = TNS_NONE;
|
||||||
|
|
||||||
|
// Penalize for stepping on mines
|
||||||
|
if( tn == TAP_MINE && score > TNS_NONE )
|
||||||
|
{
|
||||||
|
m_soundMineExplosion.Play();
|
||||||
|
score = TNS_MISS;
|
||||||
|
m_GhostArrowRow.TapMine( col, TNS_MISS );
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PC_CPU:
|
case PC_CPU:
|
||||||
@@ -483,9 +497,21 @@ void Player::Step( int col, RageTimer tm )
|
|||||||
* misses. */
|
* misses. */
|
||||||
if( score == TNS_MISS )
|
if( score == TNS_MISS )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
// Unless the computer made a very good step, they were fooled by the mine
|
||||||
|
if( tn == TAP_MINE && score <= TNS_GREAT )
|
||||||
|
{
|
||||||
|
m_soundMineExplosion.Play();
|
||||||
|
score = TNS_MISS;
|
||||||
|
m_GhostArrowRow.TapMine( col, TNS_MISS );
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case PC_AUTOPLAY:
|
case PC_AUTOPLAY:
|
||||||
score = TNS_MARVELOUS;
|
score = TNS_MARVELOUS;
|
||||||
|
|
||||||
|
// Don't step on mines
|
||||||
|
if( tn == TAP_MINE )
|
||||||
|
return;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ASSERT(0);
|
ASSERT(0);
|
||||||
@@ -493,9 +519,6 @@ void Player::Step( int col, RageTimer tm )
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stepping on a mine counts as a miss
|
|
||||||
if( GetTapNote(col,iIndexOverlappingNote) == TAP_MINE )
|
|
||||||
score = TNS_MISS;
|
|
||||||
|
|
||||||
if( score != TNS_NONE && score != TNS_MISS )
|
if( score != TNS_NONE && score != TNS_MISS )
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -16,10 +16,6 @@
|
|||||||
#include "Sprite.h"
|
#include "Sprite.h"
|
||||||
#include "BitmapText.h"
|
#include "BitmapText.h"
|
||||||
|
|
||||||
#include "GrayArrow.h"
|
|
||||||
#include "GhostArrow.h"
|
|
||||||
#include "GhostArrowBright.h"
|
|
||||||
#include "HoldGhostArrow.h"
|
|
||||||
#include "ActorFrame.h"
|
#include "ActorFrame.h"
|
||||||
#include "RandomSample.h"
|
#include "RandomSample.h"
|
||||||
#include "Judgment.h"
|
#include "Judgment.h"
|
||||||
@@ -32,6 +28,7 @@
|
|||||||
#include "ArrowBackdrop.h"
|
#include "ArrowBackdrop.h"
|
||||||
#include "RageTimer.h"
|
#include "RageTimer.h"
|
||||||
#include "ProTimingDisplay.h"
|
#include "ProTimingDisplay.h"
|
||||||
|
#include "RageSound.h"
|
||||||
|
|
||||||
class ScoreDisplay;
|
class ScoreDisplay;
|
||||||
class LifeMeter;
|
class LifeMeter;
|
||||||
@@ -97,6 +94,8 @@ protected:
|
|||||||
CString m_sLastSeenNoteSkin;
|
CString m_sLastSeenNoteSkin;
|
||||||
bool m_bShowJudgment;
|
bool m_bShowJudgment;
|
||||||
int m_iRowLastCrossed;
|
int m_iRowLastCrossed;
|
||||||
|
|
||||||
|
RageSound m_soundMineExplosion;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ IntDir=.\../Debug6
|
|||||||
TargetDir=\stepmania\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
|
||||||
|
|
||||||
@@ -102,7 +102,7 @@ IntDir=.\Debug
|
|||||||
TargetDir=\stepmania\stepmania
|
TargetDir=\stepmania\stepmania
|
||||||
TargetName=default
|
TargetName=default
|
||||||
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
|
||||||
|
|
||||||
@@ -142,7 +142,7 @@ IntDir=.\../Release6
|
|||||||
TargetDir=\stepmania\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
|
||||||
|
|
||||||
@@ -183,7 +183,7 @@ IntDir=.\StepMania___Xbox_Release
|
|||||||
TargetDir=\stepmania\stepmania
|
TargetDir=\stepmania\stepmania
|
||||||
TargetName=default
|
TargetName=default
|
||||||
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
|
||||||
|
|
||||||
@@ -2984,25 +2984,6 @@ SOURCE=.\GhostArrow.h
|
|||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\GhostArrowBright.cpp
|
|
||||||
|
|
||||||
!IF "$(CFG)" == "StepMania - Win32 Debug"
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "StepMania - Xbox Debug"
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "StepMania - Win32 Release"
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "StepMania - Xbox Release"
|
|
||||||
|
|
||||||
!ENDIF
|
|
||||||
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=.\GhostArrowBright.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=.\GhostArrowRow.cpp
|
SOURCE=.\GhostArrowRow.cpp
|
||||||
|
|
||||||
!IF "$(CFG)" == "StepMania - Win32 Debug"
|
!IF "$(CFG)" == "StepMania - Win32 Debug"
|
||||||
|
|||||||
@@ -1349,12 +1349,6 @@ cl /Zl /nologo /c verstub.cpp /Fo"$(IntDir)"\
|
|||||||
<File
|
<File
|
||||||
RelativePath=".\GhostArrow.h">
|
RelativePath=".\GhostArrow.h">
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath=".\GhostArrowBright.cpp">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath=".\GhostArrowBright.h">
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath="GhostArrowRow.cpp">
|
RelativePath="GhostArrowRow.cpp">
|
||||||
</File>
|
</File>
|
||||||
|
|||||||
Reference in New Issue
Block a user