add StepsType for cabinet lights
This commit is contained in:
@@ -22,7 +22,8 @@ enum Game
|
|||||||
GAME_IIDX, // Beatmania IIDX
|
GAME_IIDX, // Beatmania IIDX
|
||||||
GAME_MANIAX, // DanceManiax
|
GAME_MANIAX, // DanceManiax
|
||||||
GAME_TECHNO, // TechnoMotion
|
GAME_TECHNO, // TechnoMotion
|
||||||
GAME_PNM, // pop n music
|
GAME_PNM, // pop n music
|
||||||
|
GAME_LIGHTS, // cabinet lights (not really a game)
|
||||||
NUM_GAMES, // leave this at the end
|
NUM_GAMES, // leave this at the end
|
||||||
GAME_INVALID,
|
GAME_INVALID,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -142,6 +142,7 @@ enum StepsType
|
|||||||
STEPS_TYPE_TECHNO_SINGLE8,
|
STEPS_TYPE_TECHNO_SINGLE8,
|
||||||
STEPS_TYPE_PNM_FIVE,
|
STEPS_TYPE_PNM_FIVE,
|
||||||
STEPS_TYPE_PNM_NINE,
|
STEPS_TYPE_PNM_NINE,
|
||||||
|
STEPS_TYPE_LIGHTS_CABINET,
|
||||||
NUM_STEPS_TYPES, // leave this at the end
|
NUM_STEPS_TYPES, // leave this at the end
|
||||||
STEPS_TYPE_INVALID,
|
STEPS_TYPE_INVALID,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -230,6 +230,26 @@ enum // PnM Buttons
|
|||||||
NUM_PNM_BUTTONS, // leave this at the end
|
NUM_PNM_BUTTONS, // leave this at the end
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum // LightsButtons
|
||||||
|
{
|
||||||
|
LIGHTS_BUTTON_MARQUEE_UP_LEFT,
|
||||||
|
LIGHTS_BUTTON_MARQUEE_UP_RIGHT,
|
||||||
|
LIGHTS_BUTTON_MARQUEE_LR_LEFT,
|
||||||
|
LIGHTS_BUTTON_MARQUEE_LR_RIGHT,
|
||||||
|
LIGHTS_BUTTON_BUTTONS_LEFT,
|
||||||
|
LIGHTS_BUTTON_BUTTONS_RIGHT,
|
||||||
|
LIGHTS_BUTTON_BASS_LEFT,
|
||||||
|
LIGHTS_BUTTON_BASS_RIGHT,
|
||||||
|
LIGHTS_BUTTON_START,
|
||||||
|
LIGHTS_BUTTON_BACK,
|
||||||
|
LIGHTS_BUTTON_MENULEFT,
|
||||||
|
LIGHTS_BUTTON_MENURIGHT,
|
||||||
|
LIGHTS_BUTTON_MENUUP,
|
||||||
|
LIGHTS_BUTTON_MENUDOWN,
|
||||||
|
LIGHTS_BUTTON_COIN,
|
||||||
|
LIGHTS_BUTTON_OPERATOR,
|
||||||
|
NUM_LIGHTS_BUTTONS, // leave this at the end
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
struct GameInput
|
struct GameInput
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
#include "NoteSkinManager.h"
|
#include "NoteSkinManager.h"
|
||||||
#include "SDL_keysym.h" // for SDLKeys
|
#include "SDL_keysym.h" // for SDLKeys
|
||||||
#include "ThemeManager.h"
|
#include "ThemeManager.h"
|
||||||
|
#include "LightsManager.h" // for NUM_CABINET_LIGHTS
|
||||||
|
|
||||||
|
|
||||||
GameManager* GAMEMAN = NULL; // global and accessable from anywhere in our program
|
GameManager* GAMEMAN = NULL; // global and accessable from anywhere in our program
|
||||||
@@ -65,8 +66,9 @@ struct {
|
|||||||
{ "maniax-single", 4 },
|
{ "maniax-single", 4 },
|
||||||
{ "maniax-double", 8 },
|
{ "maniax-double", 8 },
|
||||||
{ "techno-single8", 8 },
|
{ "techno-single8", 8 },
|
||||||
{ "pnm-five", 5 },
|
{ "pnm-five", 5 },
|
||||||
{ "pnm-nine", 9 },
|
{ "pnm-nine", 9 },
|
||||||
|
{ "lights-cabinet", NUM_CABINET_LIGHTS },
|
||||||
};
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -1031,6 +1033,106 @@ GameDef g_GameDefs[NUM_GAMES] =
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{ // GAME_LIGHTS
|
||||||
|
"lights", // m_szName
|
||||||
|
"Lights", // m_szDescription
|
||||||
|
1, // m_iNumControllers
|
||||||
|
NUM_LIGHTS_BUTTONS, // m_iButtonsPerController
|
||||||
|
{ // m_szButtonNames
|
||||||
|
"MarqueeUpLeft",
|
||||||
|
"MarqueeUpRight",
|
||||||
|
"MarqueeLrLeft",
|
||||||
|
"MarqueeLrRight",
|
||||||
|
"ButtonsLeft",
|
||||||
|
"ButtonsRight",
|
||||||
|
"BassLeft",
|
||||||
|
"BassRight",
|
||||||
|
"Start",
|
||||||
|
"Back",
|
||||||
|
"MenuLeft",
|
||||||
|
"MenuRight",
|
||||||
|
"MenuUp",
|
||||||
|
"MenuDown",
|
||||||
|
"Insert Coin",
|
||||||
|
"Operator",
|
||||||
|
},
|
||||||
|
{ // m_szSecondaryFunction
|
||||||
|
"(MenuLeft)",
|
||||||
|
"(MenuRight)",
|
||||||
|
"(MenuUp)",
|
||||||
|
"(MenuDown)",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"(dedicated)",
|
||||||
|
"(dedicated)",
|
||||||
|
"(dedicated)",
|
||||||
|
"(dedicated)",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
},
|
||||||
|
{ // m_DedicatedMenuButton
|
||||||
|
LIGHTS_BUTTON_MENULEFT, // MENU_BUTTON_LEFT
|
||||||
|
LIGHTS_BUTTON_MENURIGHT, // MENU_BUTTON_RIGHT
|
||||||
|
LIGHTS_BUTTON_MENUUP, // MENU_BUTTON_UP
|
||||||
|
LIGHTS_BUTTON_MENUDOWN, // MENU_BUTTON_DOWN
|
||||||
|
LIGHTS_BUTTON_START, // MENU_BUTTON_START
|
||||||
|
LIGHTS_BUTTON_BACK, // MENU_BUTTON_BACK
|
||||||
|
LIGHTS_BUTTON_COIN, // MENU_BUTTON_COIN
|
||||||
|
LIGHTS_BUTTON_OPERATOR // MENU_BUTTON_OPERATOR
|
||||||
|
},
|
||||||
|
{ // m_SecondaryMenuButton
|
||||||
|
LIGHTS_BUTTON_MARQUEE_UP_LEFT, // MENU_BUTTON_LEFT
|
||||||
|
LIGHTS_BUTTON_MARQUEE_UP_RIGHT, // MENU_BUTTON_RIGHT
|
||||||
|
LIGHTS_BUTTON_MARQUEE_LR_LEFT, // MENU_BUTTON_UP
|
||||||
|
LIGHTS_BUTTON_MARQUEE_LR_RIGHT, // MENU_BUTTON_DOWN
|
||||||
|
LIGHTS_BUTTON_START, // MENU_BUTTON_START
|
||||||
|
LIGHTS_BUTTON_BACK, // MENU_BUTTON_BACK
|
||||||
|
LIGHTS_BUTTON_COIN, // MENU_BUTTON_COIN
|
||||||
|
LIGHTS_BUTTON_OPERATOR, // MENU_BUTTON_OPERATOR
|
||||||
|
},
|
||||||
|
{ // m_iDefaultKeyboardKey
|
||||||
|
{ // PLAYER_1
|
||||||
|
SDLK_LEFT, // LIGHTS_BUTTON_MARQUEE_UP_LEFT,
|
||||||
|
SDLK_RIGHT, // LIGHTS_BUTTON_MARQUEE_UP_RIGHT,
|
||||||
|
SDLK_UP, // LIGHTS_BUTTON_MARQUEE_LR_LEFT,
|
||||||
|
SDLK_DOWN, // LIGHTS_BUTTON_MARQUEE_LR_RIGHT,
|
||||||
|
-1, //no default key // LIGHTS_BUTTON_BUTTONS_LEFT,
|
||||||
|
-1, //no default key // LIGHTS_BUTTON_BUTTONS_RIGHT,
|
||||||
|
-1, //no default key // LIGHTS_BUTTON_BASS_LEFT,
|
||||||
|
-1, //no default key // LIGHTS_BUTTON_BASS_RIGHT,
|
||||||
|
SDLK_RETURN, // LIGHTS_BUTTON_START,
|
||||||
|
SDLK_ESCAPE, // LIGHTS_BUTTON_BACK
|
||||||
|
SDLK_DELETE, // LIGHTS_BUTTON_MENULEFT
|
||||||
|
SDLK_PAGEDOWN, // LIGHTS_BUTTON_MENURIGHT
|
||||||
|
SDLK_HOME, // LIGHTS_BUTTON_MENUUP
|
||||||
|
SDLK_END, // LIGHTS_BUTTON_MENUDOWN
|
||||||
|
SDLK_F1, // LIGHTS_BUTTON_COIN
|
||||||
|
SDLK_SCROLLOCK // LIGHTS_BUTTON_OPERATOR
|
||||||
|
},
|
||||||
|
{ // PLAYER_2
|
||||||
|
SDLK_KP4, // LIGHTS_BUTTON_MARQUEE_UP_LEFT,
|
||||||
|
SDLK_KP6, // LIGHTS_BUTTON_MARQUEE_UP_RIGHT,
|
||||||
|
SDLK_KP8, // LIGHTS_BUTTON_MARQUEE_LR_LEFT,
|
||||||
|
SDLK_KP2, // LIGHTS_BUTTON_MARQUEE_LR_RIGHT,
|
||||||
|
SDLK_KP7, // LIGHTS_BUTTON_BUTTONS_LEFT,
|
||||||
|
SDLK_KP9, // LIGHTS_BUTTON_BUTTONS_RIGHT,
|
||||||
|
-1, //no default key // LIGHTS_BUTTON_BASS_LEFT,
|
||||||
|
-1, //no default key // LIGHTS_BUTTON_BASS_RIGHT,
|
||||||
|
SDLK_KP_ENTER, // LIGHTS_BUTTON_START,
|
||||||
|
SDLK_KP0, // LIGHTS_BUTTON_BACK
|
||||||
|
SDLK_KP_DIVIDE, // LIGHTS_BUTTON_MENULEFT
|
||||||
|
SDLK_KP_MULTIPLY, // LIGHTS_BUTTON_MENURIGHT
|
||||||
|
SDLK_KP_MINUS, // LIGHTS_BUTTON_MENUUP
|
||||||
|
SDLK_KP_PLUS, // LIGHTS_BUTTON_MENUDOWN
|
||||||
|
-1, // LIGHTS_BUTTON_COIN
|
||||||
|
-1 // LIGHTS_BUTTON_OPERATOR
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
StyleDef g_StyleDefs[NUM_STYLES] =
|
StyleDef g_StyleDefs[NUM_STYLES] =
|
||||||
@@ -1219,7 +1321,7 @@ StyleDef g_StyleDefs[NUM_STYLES] =
|
|||||||
},
|
},
|
||||||
/* { // STYLE_DANCE_SOLO_VERSUS
|
/* { // STYLE_DANCE_SOLO_VERSUS
|
||||||
"dance-solo-versus", // m_szName
|
"dance-solo-versus", // m_szName
|
||||||
STEPS_TYPE_DANCE_SOLO, // m_StepsType
|
STEPS_TYPE_DANCE_SOLO, // m_StepsType
|
||||||
StyleDef::ONE_PLAYER_ONE_CREDIT, // m_StyleType
|
StyleDef::ONE_PLAYER_ONE_CREDIT, // m_StyleType
|
||||||
{ 160, 480 }, // m_iCenterX
|
{ 160, 480 }, // m_iCenterX
|
||||||
6, // m_iColsPerPlayer
|
6, // m_iColsPerPlayer
|
||||||
@@ -2185,6 +2287,41 @@ StyleDef g_StyleDefs[NUM_STYLES] =
|
|||||||
0,1,2,3,4,5,6,7,8
|
0,1,2,3,4,5,6,7,8
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{ // STYLE_LIGHTS_CABINET
|
||||||
|
GAME_LIGHTS, // m_Game
|
||||||
|
true, // m_bUsedForGameplay
|
||||||
|
true, // m_bUsedForEdit
|
||||||
|
"cabinet", // m_szName
|
||||||
|
STEPS_TYPE_LIGHTS_CABINET, // m_StepsType
|
||||||
|
StyleDef::ONE_PLAYER_ONE_CREDIT, // m_StyleType
|
||||||
|
{ 320, 320 }, // m_iCenterX
|
||||||
|
NUM_CABINET_LIGHTS, // m_iColsPerPlayer
|
||||||
|
{ // m_ColumnInfo[NUM_PLAYERS][MAX_COLS_PER_PLAYER];
|
||||||
|
{ // PLAYER_1
|
||||||
|
{ TRACK_1, GAME_CONTROLLER_1, LIGHTS_BUTTON_MARQUEE_UP_LEFT, -DANCE_COL_SPACING*3.5f },
|
||||||
|
{ TRACK_2, GAME_CONTROLLER_1, LIGHTS_BUTTON_MARQUEE_UP_RIGHT, -DANCE_COL_SPACING*2.5f },
|
||||||
|
{ TRACK_3, GAME_CONTROLLER_1, LIGHTS_BUTTON_MARQUEE_LR_LEFT, -DANCE_COL_SPACING*1.5f },
|
||||||
|
{ TRACK_4, GAME_CONTROLLER_1, LIGHTS_BUTTON_MARQUEE_LR_RIGHT, -DANCE_COL_SPACING*0.5f },
|
||||||
|
{ TRACK_5, GAME_CONTROLLER_2, LIGHTS_BUTTON_BUTTONS_LEFT, +DANCE_COL_SPACING*0.5f },
|
||||||
|
{ TRACK_6, GAME_CONTROLLER_2, LIGHTS_BUTTON_BUTTONS_RIGHT, +DANCE_COL_SPACING*1.5f },
|
||||||
|
{ TRACK_7, GAME_CONTROLLER_2, LIGHTS_BUTTON_BASS_LEFT, +DANCE_COL_SPACING*2.5f },
|
||||||
|
{ TRACK_8, GAME_CONTROLLER_2, LIGHTS_BUTTON_BASS_RIGHT, +DANCE_COL_SPACING*3.5f },
|
||||||
|
},
|
||||||
|
{ // PLAYER_2
|
||||||
|
{ TRACK_1, GAME_CONTROLLER_1, LIGHTS_BUTTON_MARQUEE_UP_LEFT, -DANCE_COL_SPACING*3.5f },
|
||||||
|
{ TRACK_2, GAME_CONTROLLER_1, LIGHTS_BUTTON_MARQUEE_UP_RIGHT, -DANCE_COL_SPACING*2.5f },
|
||||||
|
{ TRACK_3, GAME_CONTROLLER_1, LIGHTS_BUTTON_MARQUEE_LR_LEFT, -DANCE_COL_SPACING*1.5f },
|
||||||
|
{ TRACK_4, GAME_CONTROLLER_1, LIGHTS_BUTTON_MARQUEE_LR_RIGHT, -DANCE_COL_SPACING*0.5f },
|
||||||
|
{ TRACK_5, GAME_CONTROLLER_2, LIGHTS_BUTTON_BUTTONS_LEFT, +DANCE_COL_SPACING*0.5f },
|
||||||
|
{ TRACK_6, GAME_CONTROLLER_2, LIGHTS_BUTTON_BUTTONS_RIGHT, +DANCE_COL_SPACING*1.5f },
|
||||||
|
{ TRACK_7, GAME_CONTROLLER_2, LIGHTS_BUTTON_BASS_LEFT, +DANCE_COL_SPACING*2.5f },
|
||||||
|
{ TRACK_8, GAME_CONTROLLER_2, LIGHTS_BUTTON_BASS_RIGHT, +DANCE_COL_SPACING*3.5f },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{ // m_iColumnDrawOrder[MAX_COLS_PER_PLAYER];
|
||||||
|
0,1,2,3,4,5,6,7
|
||||||
|
},
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -54,8 +54,7 @@ LightsManager::LightsManager(CString sDriver)
|
|||||||
|
|
||||||
m_pDriver = MakeLightsDriver(sDriver);
|
m_pDriver = MakeLightsDriver(sDriver);
|
||||||
|
|
||||||
m_fSecsLeftInMarqueeBlink = 0;
|
ZERO( m_fSecsLeftInBlink );
|
||||||
m_fSecsLeftInBassBlink = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
LightsManager::~LightsManager()
|
LightsManager::~LightsManager()
|
||||||
@@ -65,14 +64,19 @@ LightsManager::~LightsManager()
|
|||||||
|
|
||||||
void LightsManager::Update( float fDeltaTime )
|
void LightsManager::Update( float fDeltaTime )
|
||||||
{
|
{
|
||||||
m_fSecsLeftInMarqueeBlink = max( 0, m_fSecsLeftInMarqueeBlink - fDeltaTime );
|
// update lights falloff
|
||||||
m_fSecsLeftInBassBlink = max( 0, m_fSecsLeftInBassBlink - fDeltaTime );
|
{
|
||||||
|
FOREACH_CabinetLight( cl )
|
||||||
|
m_fSecsLeftInBlink[cl] = max( 0, m_fSecsLeftInBlink[cl] - fDeltaTime );
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Update cabinet lights
|
// Set new lights state cabinet lights
|
||||||
//
|
//
|
||||||
FOREACH_CabinetLight( cl )
|
{
|
||||||
m_LightsState.m_bCabinetLights[cl] = false;
|
FOREACH_CabinetLight( cl )
|
||||||
|
m_LightsState.m_bCabinetLights[cl] = false;
|
||||||
|
}
|
||||||
|
|
||||||
switch( m_LightsMode )
|
switch( m_LightsMode )
|
||||||
{
|
{
|
||||||
@@ -147,17 +151,10 @@ void LightsManager::Update( float fDeltaTime )
|
|||||||
|
|
||||||
bool bAllMarqueeLightsOn = !GAMESTATE->m_bPastHereWeGo;
|
bool bAllMarqueeLightsOn = !GAMESTATE->m_bPastHereWeGo;
|
||||||
|
|
||||||
bool bOn;
|
{
|
||||||
|
FOREACH_CabinetLight( cl )
|
||||||
bOn = bAllMarqueeLightsOn || (m_fSecsLeftInMarqueeBlink > 0);
|
m_LightsState.m_bCabinetLights[cl] = m_fSecsLeftInBlink[cl] > 0 ;
|
||||||
m_LightsState.m_bCabinetLights[LIGHT_MARQUEE_UP_LEFT] = bOn;
|
}
|
||||||
m_LightsState.m_bCabinetLights[LIGHT_MARQUEE_UP_RIGHT] = bOn;
|
|
||||||
m_LightsState.m_bCabinetLights[LIGHT_MARQUEE_LR_LEFT] = bOn;
|
|
||||||
m_LightsState.m_bCabinetLights[LIGHT_MARQUEE_LR_RIGHT] = bOn;
|
|
||||||
|
|
||||||
bOn = m_fSecsLeftInBassBlink > 0;
|
|
||||||
m_LightsState.m_bCabinetLights[LIGHT_BASS_LEFT] = bOn;
|
|
||||||
m_LightsState.m_bCabinetLights[LIGHT_BASS_RIGHT] = bOn;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case LIGHTSMODE_STAGE:
|
case LIGHTSMODE_STAGE:
|
||||||
@@ -264,14 +261,9 @@ void LightsManager::Update( float fDeltaTime )
|
|||||||
m_pDriver->Set( &m_LightsState );
|
m_pDriver->Set( &m_LightsState );
|
||||||
}
|
}
|
||||||
|
|
||||||
void LightsManager::GameplayBlinkMarqueeLights()
|
void LightsManager::GameplayBlinkLight( CabinetLight cl )
|
||||||
{
|
{
|
||||||
m_fSecsLeftInMarqueeBlink = 0.1f;
|
m_fSecsLeftInBlink[cl] = LIGHTS_FALLOFF_SECONDS;
|
||||||
}
|
|
||||||
|
|
||||||
void LightsManager::GameplayBlinkBassLights()
|
|
||||||
{
|
|
||||||
m_fSecsLeftInBassBlink = 0.1f;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void LightsManager::SetLightsMode( LightsMode lm )
|
void LightsManager::SetLightsMode( LightsMode lm )
|
||||||
|
|||||||
@@ -15,6 +15,8 @@
|
|||||||
#include "GameInput.h"
|
#include "GameInput.h"
|
||||||
#include "EnumHelper.h"
|
#include "EnumHelper.h"
|
||||||
|
|
||||||
|
const float LIGHTS_FALLOFF_SECONDS = 0.1f;
|
||||||
|
|
||||||
enum CabinetLight
|
enum CabinetLight
|
||||||
{
|
{
|
||||||
LIGHT_MARQUEE_UP_LEFT,
|
LIGHT_MARQUEE_UP_LEFT,
|
||||||
@@ -60,15 +62,13 @@ public:
|
|||||||
|
|
||||||
void Update( float fDeltaTime );
|
void Update( float fDeltaTime );
|
||||||
|
|
||||||
void GameplayBlinkMarqueeLights();
|
void GameplayBlinkLight( CabinetLight cl );
|
||||||
void GameplayBlinkBassLights();
|
|
||||||
|
|
||||||
void SetLightsMode( LightsMode lm );
|
void SetLightsMode( LightsMode lm );
|
||||||
LightsMode GetLightsMode();
|
LightsMode GetLightsMode();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
float m_fSecsLeftInMarqueeBlink;
|
float m_fSecsLeftInBlink[NUM_CABINET_LIGHTS];
|
||||||
float m_fSecsLeftInBassBlink;
|
|
||||||
|
|
||||||
LightsDriver* m_pDriver;
|
LightsDriver* m_pDriver;
|
||||||
LightsMode m_LightsMode;
|
LightsMode m_LightsMode;
|
||||||
|
|||||||
@@ -1053,20 +1053,18 @@ void ScreenGameplay::LoadNextSong()
|
|||||||
//
|
//
|
||||||
// Load lights data
|
// Load lights data
|
||||||
//
|
//
|
||||||
m_MarqueeLightsNoteData.Init();
|
{
|
||||||
m_BassLightsNoteData.Init();
|
m_CabinetLightsNoteData.Init();
|
||||||
StepsType st = GAMESTATE->GetCurrentStyleDef()->m_StepsType;
|
ASSERT( GAMESTATE->m_pCurSong );
|
||||||
ASSERT( GAMESTATE->m_pCurSong );
|
vector<Steps*> vSteps;
|
||||||
Steps* pStepsEasy = GAMESTATE->m_pCurSong->GetStepsByDifficulty( st, DIFFICULTY_EASY, false );
|
GAMESTATE->m_pCurSong->GetSteps( vSteps, STEPS_TYPE_LIGHTS_CABINET );
|
||||||
Steps* pStepsMedium = GAMESTATE->m_pCurSong->GetStepsByDifficulty( st, DIFFICULTY_MEDIUM, false );
|
if( !vSteps.empty() )
|
||||||
if( pStepsEasy ) pStepsEasy->GetNoteData( &m_BassLightsNoteData );
|
vSteps[0]->GetNoteData( &m_CabinetLightsNoteData );
|
||||||
if( pStepsMedium ) pStepsMedium->GetNoteData( &m_MarqueeLightsNoteData );
|
|
||||||
|
|
||||||
// optimization: collapse to one and free unused tracks
|
// Convert to 4s so that we can check if we're inside a hold with just
|
||||||
NoteDataUtil::CollapseToOne(m_BassLightsNoteData);
|
// GetTapNote().
|
||||||
m_BassLightsNoteData.SetNumTracks(1);
|
m_CabinetLightsNoteData.ConvertHoldNotesTo4s();
|
||||||
NoteDataUtil::CollapseToOne(m_MarqueeLightsNoteData);
|
}
|
||||||
m_MarqueeLightsNoteData.SetNumTracks(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
float ScreenGameplay::StartPlayingSong(float MinTimeToNotes, float MinTimeToMusic)
|
float ScreenGameplay::StartPlayingSong(float MinTimeToNotes, float MinTimeToMusic)
|
||||||
@@ -1402,11 +1400,12 @@ void ScreenGameplay::Update( float fDeltaTime )
|
|||||||
//
|
//
|
||||||
// update lights
|
// update lights
|
||||||
//
|
//
|
||||||
bool bBlinkMarqueeLights = false;
|
bool bBlink[NUM_CABINET_LIGHTS];
|
||||||
|
ZERO( bBlink );
|
||||||
bool bBlinkBassLights = false;
|
bool bBlinkBassLights = false;
|
||||||
bool bCrossedABeat = false;
|
bool bCrossedABeat = false;
|
||||||
{
|
{
|
||||||
float fPositionSeconds = GAMESTATE->m_fMusicSeconds - 0.05f; // trigger the light a tiny bit early
|
float fPositionSeconds = GAMESTATE->m_fMusicSeconds - LIGHTS_FALLOFF_SECONDS/2; // trigger the light a tiny bit early
|
||||||
fPositionSeconds += (SOUND->GetPlayLatency()) * GAMESTATE->m_SongOptions.m_fMusicRate;
|
fPositionSeconds += (SOUND->GetPlayLatency()) * GAMESTATE->m_SongOptions.m_fMusicRate;
|
||||||
float fSongBeat = GAMESTATE->m_pCurSong->GetBeatFromElapsedTime( fPositionSeconds );
|
float fSongBeat = GAMESTATE->m_pCurSong->GetBeatFromElapsedTime( fPositionSeconds );
|
||||||
|
|
||||||
@@ -1421,8 +1420,8 @@ void ScreenGameplay::Update( float fDeltaTime )
|
|||||||
|
|
||||||
for( int r=iRowLastCrossed+1; r<=iRowNow; r++ ) // for each index we crossed since the last update
|
for( int r=iRowLastCrossed+1; r<=iRowNow; r++ ) // for each index we crossed since the last update
|
||||||
{
|
{
|
||||||
bBlinkMarqueeLights |= m_MarqueeLightsNoteData.IsThereATapOrHoldHeadAtRow( r );
|
FOREACH_CabinetLight( cl )
|
||||||
bBlinkBassLights |= m_BassLightsNoteData.IsThereATapOrHoldHeadAtRow( r );
|
bBlink[cl] |= (m_CabinetLightsNoteData.GetTapNote( cl, r ) != TAP_EMPTY);
|
||||||
}
|
}
|
||||||
|
|
||||||
iRowLastCrossed = iRowNow;
|
iRowLastCrossed = iRowNow;
|
||||||
@@ -1430,10 +1429,11 @@ void ScreenGameplay::Update( float fDeltaTime )
|
|||||||
|
|
||||||
bool bOverrideBlink = (GAMESTATE->m_fSongBeat < GAMESTATE->m_pCurSong->m_fFirstBeat) && bCrossedABeat;
|
bool bOverrideBlink = (GAMESTATE->m_fSongBeat < GAMESTATE->m_pCurSong->m_fFirstBeat) && bCrossedABeat;
|
||||||
|
|
||||||
if( bOverrideBlink || bBlinkMarqueeLights )
|
FOREACH_CabinetLight( cl )
|
||||||
LIGHTSMAN->GameplayBlinkMarqueeLights();
|
{
|
||||||
if( bOverrideBlink || bBlinkBassLights )
|
if( bOverrideBlink || bBlink[cl] )
|
||||||
LIGHTSMAN->GameplayBlinkBassLights();
|
LIGHTSMAN->GameplayBlinkLight( cl );
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// update song position meter
|
// update song position meter
|
||||||
|
|||||||
@@ -180,8 +180,7 @@ protected:
|
|||||||
|
|
||||||
BeginnerHelper m_BeginnerHelper;
|
BeginnerHelper m_BeginnerHelper;
|
||||||
|
|
||||||
NoteData m_MarqueeLightsNoteData;
|
NoteData m_CabinetLightsNoteData;
|
||||||
NoteData m_BassLightsNoteData;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -867,23 +867,25 @@ void Song::GetSteps( vector<Steps*>& arrayAddTo, StepsType nt, Difficulty dc, in
|
|||||||
if( !Max )
|
if( !Max )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if( nt != STEPS_TYPE_INVALID && m_apNotes[i]->m_StepsType != nt )
|
Steps* pSteps = m_apNotes[i];
|
||||||
|
|
||||||
|
if( nt != STEPS_TYPE_INVALID && pSteps->m_StepsType != nt )
|
||||||
continue;
|
continue;
|
||||||
if( dc != DIFFICULTY_INVALID && dc != m_apNotes[i]->GetDifficulty() )
|
if( dc != DIFFICULTY_INVALID && dc != pSteps->GetDifficulty() )
|
||||||
continue;
|
continue;
|
||||||
if( iMeterLow != -1 && iMeterLow > m_apNotes[i]->GetMeter() )
|
if( iMeterLow != -1 && iMeterLow > pSteps->GetMeter() )
|
||||||
continue;
|
continue;
|
||||||
if( iMeterHigh != -1 && iMeterHigh < m_apNotes[i]->GetMeter() )
|
if( iMeterHigh != -1 && iMeterHigh < pSteps->GetMeter() )
|
||||||
continue;
|
continue;
|
||||||
if( sDescription != "" && sDescription != m_apNotes[i]->GetDescription() )
|
if( sDescription != "" && sDescription != pSteps->GetDescription() )
|
||||||
continue;
|
continue;
|
||||||
if( !bIncludeAutoGen && m_apNotes[i]->IsAutogen() )
|
if( !bIncludeAutoGen && pSteps->IsAutogen() )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if( Max != -1 )
|
if( Max != -1 )
|
||||||
--Max;
|
--Max;
|
||||||
|
|
||||||
arrayAddTo.push_back( m_apNotes[i] );
|
arrayAddTo.push_back( pSteps );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ enum Style
|
|||||||
STYLE_TECHNO_SINGLE8,
|
STYLE_TECHNO_SINGLE8,
|
||||||
STYLE_PNM_FIVE,
|
STYLE_PNM_FIVE,
|
||||||
STYLE_PNM_NINE,
|
STYLE_PNM_NINE,
|
||||||
|
STYLE_LIGHTS_CABINET,
|
||||||
NUM_STYLES, // leave this at the end
|
NUM_STYLES, // leave this at the end
|
||||||
STYLE_INVALID,
|
STYLE_INVALID,
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user