2002-03-19 07:09:49 +00:00
|
|
|
#include "stdafx.h"
|
|
|
|
|
/*
|
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
|
Class: GameManager
|
|
|
|
|
|
|
|
|
|
Desc: See Header.
|
|
|
|
|
|
2002-04-16 17:31:00 +00:00
|
|
|
Copyright (c) 2001-2002 by the persons listed below. All rights reserved.
|
2002-03-19 07:09:49 +00:00
|
|
|
Chris Danford
|
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#include "GameManager.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GameManager* GAME = NULL; // global and accessable from anywhere in our program
|
|
|
|
|
|
2002-04-16 17:31:00 +00:00
|
|
|
#define DANCE_PAD_BUTTON_LEFT INSTRUMENT_BUTTON_1
|
|
|
|
|
#define DANCE_PAD_BUTTON_RIGHT INSTRUMENT_BUTTON_2
|
|
|
|
|
#define DANCE_PAD_BUTTON_UP INSTRUMENT_BUTTON_3
|
|
|
|
|
#define DANCE_PAD_BUTTON_DOWN INSTRUMENT_BUTTON_4
|
|
|
|
|
#define DANCE_PAD_BUTTON_UPLEFT INSTRUMENT_BUTTON_5
|
|
|
|
|
#define DANCE_PAD_BUTTON_UPRIGHT INSTRUMENT_BUTTON_6
|
|
|
|
|
#define DANCE_PAD_BUTTON_NEXT INSTRUMENT_BUTTON_7
|
|
|
|
|
#define DANCE_PAD_BUTTON_BACK INSTRUMENT_BUTTON_8
|
|
|
|
|
#define NUM_DANCE_PAD_BUTTONS 8
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
// ----------------------------------
|
|
|
|
|
// This is where all Games and Styles are definied.
|
|
|
|
|
// If you want to add support for new games or styles, do it here.
|
|
|
|
|
// ----------------------------------
|
|
|
|
|
//
|
|
|
|
|
GameDef g_GameDefs[] =
|
|
|
|
|
{
|
|
|
|
|
{
|
|
|
|
|
"dance", // m_szName
|
|
|
|
|
"Dance Dance Revolution", // m_szDescription
|
|
|
|
|
"", // m_szGraphicPath
|
|
|
|
|
|
|
|
|
|
2, // m_iNumInstruments
|
|
|
|
|
NUM_DANCE_PAD_BUTTONS, // m_iNumButtons
|
|
|
|
|
{ "Left", "Right", "Up", "Down", "UpLeft", "UpRight", "Next", "Back" }, // m_sButtonNames[NUM_INSTRUMENT_BUTTONS]
|
|
|
|
|
{ // m_iMenuButtons
|
|
|
|
|
DANCE_PAD_BUTTON_LEFT,
|
|
|
|
|
DANCE_PAD_BUTTON_RIGHT,
|
|
|
|
|
DANCE_PAD_BUTTON_UP,
|
|
|
|
|
DANCE_PAD_BUTTON_DOWN,
|
|
|
|
|
DANCE_PAD_BUTTON_NEXT,
|
|
|
|
|
DANCE_PAD_BUTTON_BACK,
|
|
|
|
|
},
|
|
|
|
|
5, // m_iNumStyleDefs
|
|
|
|
|
{ // StyleDef list
|
|
|
|
|
{ // StyleDef
|
|
|
|
|
"single", // m_szName
|
|
|
|
|
"single", // m_szReads
|
|
|
|
|
1, // m_iNumPlayers
|
|
|
|
|
4, // m_iNumTracks
|
|
|
|
|
{ // m_StyleInputToGameInput[NUM_PLAYERS][NUM_NOTE_COLS];
|
|
|
|
|
{ // player 1
|
|
|
|
|
{ 0, INSTRUMENT_1, DANCE_PAD_BUTTON_LEFT }, // column 1
|
|
|
|
|
{ 1, INSTRUMENT_1, DANCE_PAD_BUTTON_DOWN }, // column 2
|
|
|
|
|
{ 2, INSTRUMENT_1, DANCE_PAD_BUTTON_UP }, // column 3
|
|
|
|
|
{ 3, INSTRUMENT_1, DANCE_PAD_BUTTON_RIGHT }, // column 4
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{ // StyleDef
|
|
|
|
|
"versus", // m_szName
|
|
|
|
|
"single", // m_szReads
|
|
|
|
|
1, // m_iNumPlayers
|
|
|
|
|
4, // m_iNumTracks
|
|
|
|
|
{ // m_StyleInputToGameInput[NUM_PLAYERS][NUM_NOTE_COLS];
|
|
|
|
|
{ // player 1
|
|
|
|
|
{ 0, INSTRUMENT_1, DANCE_PAD_BUTTON_LEFT }, // column 1
|
|
|
|
|
{ 1, INSTRUMENT_1, DANCE_PAD_BUTTON_DOWN }, // column 2
|
|
|
|
|
{ 2, INSTRUMENT_1, DANCE_PAD_BUTTON_UP }, // column 3
|
|
|
|
|
{ 3, INSTRUMENT_1, DANCE_PAD_BUTTON_RIGHT }, // column 4
|
|
|
|
|
},
|
|
|
|
|
{ // player 2
|
|
|
|
|
{ 0, INSTRUMENT_2, DANCE_PAD_BUTTON_LEFT }, // column 1
|
|
|
|
|
{ 1, INSTRUMENT_2, DANCE_PAD_BUTTON_DOWN }, // column 2
|
|
|
|
|
{ 2, INSTRUMENT_2, DANCE_PAD_BUTTON_UP }, // column 3
|
|
|
|
|
{ 3, INSTRUMENT_2, DANCE_PAD_BUTTON_RIGHT }, // column 4
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{ // StyleDef
|
|
|
|
|
"double", // m_szName
|
|
|
|
|
"double", // m_szReads
|
|
|
|
|
1, // m_iNumPlayers
|
|
|
|
|
8, // m_iNumTracks
|
|
|
|
|
{ // m_StyleInputToGameInput[NUM_PLAYERS][NUM_NOTE_COLS];
|
|
|
|
|
{ // player 1
|
|
|
|
|
{ 0, INSTRUMENT_1, DANCE_PAD_BUTTON_LEFT }, // column 1
|
|
|
|
|
{ 1, INSTRUMENT_1, DANCE_PAD_BUTTON_DOWN }, // column 2
|
|
|
|
|
{ 2, INSTRUMENT_1, DANCE_PAD_BUTTON_UP }, // column 3
|
|
|
|
|
{ 3, INSTRUMENT_1, DANCE_PAD_BUTTON_RIGHT }, // column 4
|
|
|
|
|
{ 4, INSTRUMENT_2, DANCE_PAD_BUTTON_LEFT }, // column 5
|
|
|
|
|
{ 5, INSTRUMENT_2, DANCE_PAD_BUTTON_DOWN }, // column 6
|
|
|
|
|
{ 6, INSTRUMENT_2, DANCE_PAD_BUTTON_UP }, // column 7
|
|
|
|
|
{ 7, INSTRUMENT_2, DANCE_PAD_BUTTON_RIGHT }, // column 8
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{ // StyleDef
|
|
|
|
|
"couple", // m_szName
|
|
|
|
|
"couple", // m_szReads
|
|
|
|
|
1, // m_iNumPlayers
|
|
|
|
|
8, // m_iNumTracks
|
|
|
|
|
{ // m_StyleInputToGameInput[NUM_PLAYERS][NUM_NOTE_COLS];
|
|
|
|
|
{ // player 1
|
|
|
|
|
{ 0, INSTRUMENT_1, DANCE_PAD_BUTTON_LEFT }, // column 1
|
|
|
|
|
{ 1, INSTRUMENT_1, DANCE_PAD_BUTTON_DOWN }, // column 2
|
|
|
|
|
{ 2, INSTRUMENT_1, DANCE_PAD_BUTTON_UP }, // column 3
|
|
|
|
|
{ 3, INSTRUMENT_1, DANCE_PAD_BUTTON_RIGHT }, // column 4
|
|
|
|
|
},
|
|
|
|
|
{ // player 2
|
|
|
|
|
{ 4, INSTRUMENT_2, DANCE_PAD_BUTTON_LEFT }, // column 1
|
|
|
|
|
{ 5, INSTRUMENT_2, DANCE_PAD_BUTTON_DOWN }, // column 2
|
|
|
|
|
{ 6, INSTRUMENT_2, DANCE_PAD_BUTTON_UP }, // column 3
|
|
|
|
|
{ 7, INSTRUMENT_2, DANCE_PAD_BUTTON_RIGHT }, // column 4
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{ // StyleDef
|
|
|
|
|
"solo", // m_szName
|
|
|
|
|
"solo", // m_szReads
|
|
|
|
|
1, // m_iNumPlayers
|
|
|
|
|
6, // m_iNumTracks
|
|
|
|
|
{ // m_StyleInputToGameInput[NUM_PLAYERS][NUM_NOTE_COLS];
|
|
|
|
|
{ // player 1
|
|
|
|
|
{ 0, INSTRUMENT_1, DANCE_PAD_BUTTON_LEFT }, // column 1
|
|
|
|
|
{ 1, INSTRUMENT_1, DANCE_PAD_BUTTON_UPLEFT }, // column 2
|
|
|
|
|
{ 2, INSTRUMENT_1, DANCE_PAD_BUTTON_DOWN }, // column 3
|
|
|
|
|
{ 3, INSTRUMENT_1, DANCE_PAD_BUTTON_UP }, // column 4
|
|
|
|
|
{ 4, INSTRUMENT_1, DANCE_PAD_BUTTON_UPRIGHT }, // column 5
|
|
|
|
|
{ 5, INSTRUMENT_1, DANCE_PAD_BUTTON_RIGHT }, // column 6
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
2002-03-19 07:09:49 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
GameManager::GameManager()
|
|
|
|
|
{
|
2002-04-16 17:31:00 +00:00
|
|
|
SwitchGame( "dance" );
|
|
|
|
|
SwitchStyle( "single" );
|
2002-03-19 07:09:49 +00:00
|
|
|
}
|
|
|
|
|
|
2002-04-16 17:31:00 +00:00
|
|
|
|
|
|
|
|
GameDef* GameManager::GetGameDef( CString sGame )
|
2002-03-19 07:09:49 +00:00
|
|
|
{
|
2002-04-16 17:31:00 +00:00
|
|
|
for( int i=0; i<NUM_GAME_DEFS; i++ )
|
|
|
|
|
{
|
|
|
|
|
if( g_GameDefs[i].m_szName == sGame )
|
|
|
|
|
return &g_GameDefs[i];
|
|
|
|
|
}
|
2002-03-19 07:09:49 +00:00
|
|
|
|
2002-04-16 17:31:00 +00:00
|
|
|
return NULL;
|
2002-03-19 07:09:49 +00:00
|
|
|
}
|
|
|
|
|
|
2002-04-16 17:31:00 +00:00
|
|
|
StyleDef* GameManager::GetStyleDef( CString sGame, CString sStyle )
|
2002-03-19 07:09:49 +00:00
|
|
|
{
|
2002-04-16 17:31:00 +00:00
|
|
|
GameDef* pGameDef = GetGameDef( sGame );
|
|
|
|
|
|
|
|
|
|
for( int i=0; i<pGameDef->m_iNumStyleDefs; i++ )
|
2002-03-19 07:09:49 +00:00
|
|
|
{
|
2002-04-16 17:31:00 +00:00
|
|
|
if( pGameDef->m_StyleDefs[i].m_szName == sStyle )
|
|
|
|
|
return &pGameDef->m_StyleDefs[i];
|
2002-03-19 07:09:49 +00:00
|
|
|
}
|
2002-04-16 17:31:00 +00:00
|
|
|
|
|
|
|
|
return NULL;
|
2002-03-19 07:09:49 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2002-04-16 17:31:00 +00:00
|
|
|
bool GameManager::IsPlayerEnabled( PlayerNumber PlayerNo )
|
2002-03-19 07:09:49 +00:00
|
|
|
{
|
2002-04-16 17:31:00 +00:00
|
|
|
StyleDef* pStyleDef = GetCurrentStyleDef();
|
|
|
|
|
ASSERT( pStyleDef != NULL );
|
|
|
|
|
|
|
|
|
|
switch( pStyleDef->m_iNumPlayers )
|
2002-03-19 07:09:49 +00:00
|
|
|
{
|
2002-04-16 17:31:00 +00:00
|
|
|
case 1:
|
|
|
|
|
switch( PlayerNo )
|
|
|
|
|
{
|
|
|
|
|
case PLAYER_1: return true;
|
|
|
|
|
case PLAYER_2: return false;
|
|
|
|
|
default: ASSERT( false );
|
|
|
|
|
}
|
2002-03-19 07:09:49 +00:00
|
|
|
break;
|
2002-04-16 17:31:00 +00:00
|
|
|
case 2:
|
|
|
|
|
switch( PlayerNo )
|
|
|
|
|
{
|
|
|
|
|
case PLAYER_1: return true;
|
|
|
|
|
case PLAYER_2: return true;
|
|
|
|
|
default: ASSERT( false );
|
|
|
|
|
}
|
2002-03-19 07:09:49 +00:00
|
|
|
break;
|
|
|
|
|
default:
|
2002-04-16 17:31:00 +00:00
|
|
|
ASSERT( false ); // invalid m_iNumPlayers
|
2002-03-19 07:09:49 +00:00
|
|
|
}
|
|
|
|
|
|
2002-04-16 17:31:00 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
2002-03-19 07:09:49 +00:00
|
|
|
|