Files
itgmania212121/stepmania/src/ModeSwitcher.cpp
T

407 lines
10 KiB
C++
Raw Normal View History

#include "global.h"
/*
-----------------------------------------------------------------------------
Class: ModeSwitcher
Desc: See header.
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
Andrew Livy
-----------------------------------------------------------------------------
*/
#include "ModeSwitcher.h"
#include "RageUtil.h"
#include "GameState.h"
#include "PrefsManager.h"
#include "SongManager.h"
#include "ThemeManager.h"
#include "StyleDef.h"
#include "song.h"
#include "ActorUtil.h"
#define PREVMODE_X THEME->GetMetricF("ModeSwitcher","PrevModeX")
#define PREVMODE_Y THEME->GetMetricF("ModeSwitcher","PrevModeY")
#define PREVMODE_ZOOM THEME->GetMetricF("ModeSwitcher","PrevModeZoom")
#define NEXTMODE_X THEME->GetMetricF("ModeSwitcher","NextModeX")
#define NEXTMODE_Y THEME->GetMetricF("ModeSwitcher","NextModeY")
#define NEXTMODE_ZOOM THEME->GetMetricF("ModeSwitcher","NextModeZoom")
#define NEXTICON_X THEME->GetMetricF("ModeSwitcher","NextIconX")
#define NEXTICON_Y THEME->GetMetricF("ModeSwitcher","NextIconY")
#define PREVICON_X THEME->GetMetricF("ModeSwitcher","PrevIconX")
#define PREVICON_Y THEME->GetMetricF("ModeSwitcher","PrevIconY")
#define CURRMODE_X THEME->GetMetricF("ModeSwitcher","CurrentModeX")
#define CURRMODE_Y THEME->GetMetricF("ModeSwitcher","CurrentModeY")
#define CURRMODE_ZOOM THEME->GetMetricF("ModeSwitcher","CurrentModeZoom")
ModeSwitcher::ModeSwitcher()
{
m_Nextmode.LoadFromFont( THEME->GetPathToF("ModeSwitcher stylenames") );
m_Nextmode.SetXY(NEXTMODE_X,NEXTMODE_Y);
m_Nextmode.SetZoom(NEXTMODE_ZOOM);
m_Nextmode.SetText(GetNextStyleName());
m_Prevmode.LoadFromFont( THEME->GetPathToF("ModeSwitcher stylenames") );
m_Prevmode.SetXY(PREVMODE_X,PREVMODE_Y);
m_Prevmode.SetText(GetPrevStyleName());
m_Prevmode.SetZoom(PREVMODE_ZOOM);
m_Stylename.LoadFromFont( THEME->GetPathToF("ModeSwitcher stylenames") );
m_Stylename.SetXY(CURRMODE_X,CURRMODE_Y);
m_Stylename.SetText(GetStyleName());
m_Stylename.SetZoom(CURRMODE_ZOOM);
m_NextIcon.Load( THEME->GetPathToG("ModeSwitcher nexticon"));
m_NextIcon.SetXY( NEXTICON_X, NEXTICON_Y);
m_PrevIcon.Load( THEME->GetPathToG("ModeSwitcher previcon"));
m_PrevIcon.SetXY( PREVICON_X, PREVICON_Y);
this->AddChild( &m_NextIcon );
this->AddChild( &m_PrevIcon );
this->AddChild(&m_Stylename);
this->AddChild(&m_Nextmode);
this->AddChild(&m_Prevmode);
}
ModeSwitcher::~ModeSwitcher()
{
}
CString ModeSwitcher::GetStyleName()
{
CString sStyleName;
CString sDiff[2];
switch(GAMESTATE->m_CurStyle)
{
case STYLE_PUMP_SINGLE: sStyleName = "SINGLE\n"; break;
case STYLE_PUMP_DOUBLE: sStyleName = "FULL-DOUBLE\n"; break;
case STYLE_PUMP_HALFDOUBLE: sStyleName = "HALFDOUBLE\n"; break;
default: sStyleName = ""; break;
}
for(int i=0; i<2; i++)
{
if(GAMESTATE->IsPlayerEnabled(i))
{
switch(GAMESTATE->m_PreferredDifficulty[i])
{
case DIFFICULTY_BEGINNER: sDiff[i] = "Beginner\n"; break;
case DIFFICULTY_EASY:
{
if(GAMESTATE->m_CurGame == GAME_PUMP)
{
sDiff[i] = "Normal\n"; break;
}
else
{
sDiff[i] = "Light\n"; break;
}
}
case DIFFICULTY_MEDIUM:
{
if(GAMESTATE->m_CurGame == GAME_PUMP)
{
sDiff[i] = "Hard\n"; break;
}
else
{
sDiff[i] = "Standard\n"; break;
}
}
case DIFFICULTY_HARD:
{
if(GAMESTATE->m_CurGame == GAME_PUMP)
{
sDiff[i] = "Crazy\n"; break;
}
else
{
sDiff[i] = "Heavy\n"; break;
}
}
case DIFFICULTY_CHALLENGE: sDiff[i] = "Challenge\n"; break;
default: sDiff[i] = ""; break;
}
}
else
{
sDiff[i] = "";
}
}
CString returnval;
returnval = sStyleName + sDiff[0] + sDiff[1];
return returnval;
}
CString ModeSwitcher::GetNextStyleName()
{
CString sStyleName[2];
CString sDiff[2];
for(int i=0; i<2; i++)
{
if(GAMESTATE->IsPlayerEnabled(i))
{
if(GAMESTATE->m_PreferredDifficulty[i] != DIFFICULTY_CHALLENGE)
{
switch(GAMESTATE->m_CurStyle)
{
case STYLE_PUMP_SINGLE: sStyleName[i] = "SINGLE\n"; break;
case STYLE_PUMP_DOUBLE: sStyleName[i] = "FULL-DOUBLE\n"; break;
case STYLE_PUMP_HALFDOUBLE: sStyleName[i] = "HALFDOUBLE\n"; break;
default: sStyleName[i] = ""; break;
}
switch(GAMESTATE->m_PreferredDifficulty[i])
{
case DIFFICULTY_BEGINNER:
{
if(GAMESTATE->m_CurGame == GAME_PUMP)
{
sDiff[i] = "Normal\n"; break;
}
else
{
sDiff[i] = "Light\n"; break;
}
}
case DIFFICULTY_EASY:
{
if(GAMESTATE->m_CurGame == GAME_PUMP)
{
sDiff[i] = "Hard\n"; break;
}
else
{
sDiff[i] = "Standard\n"; break;
}
}
case DIFFICULTY_MEDIUM:
{
if(GAMESTATE->m_CurGame == GAME_PUMP)
{
sDiff[i] = "Crazy\n"; break;
}
else
{
sDiff[i] = "Heavy\n"; break;
}
}
case DIFFICULTY_HARD: sDiff[i] = "Challenge\n"; break;
case DIFFICULTY_CHALLENGE: sDiff[i] = "Beginner\n"; break;
default: sDiff[i] = ""; break;
}
}
else
{
switch(GAMESTATE->m_CurStyle)
{
case STYLE_PUMP_SINGLE: sStyleName[i] = "HALFDOUBLE\n"; break;
case STYLE_PUMP_DOUBLE: sStyleName[i] = "SINGLE\n"; break;
case STYLE_PUMP_HALFDOUBLE: sStyleName[i] = "FULL-DOUBLE\n"; break;
default: sStyleName[i] = ""; break;
}
sDiff[i] = "Beginner\n";
}
}
else
{
sStyleName[i] = "";
sDiff[i] = "";
}
}
CString returnval;
returnval = sStyleName[0] + sDiff[0] + sStyleName[1] + sDiff[1];
return returnval;
}
CString ModeSwitcher::GetPrevStyleName()
{
CString sStyleName[2];
CString sDiff[2];
for(int i=0; i<2; i++)
{
if(GAMESTATE->IsPlayerEnabled(i))
{
if(GAMESTATE->m_PreferredDifficulty[i] != DIFFICULTY_BEGINNER)
{
switch(GAMESTATE->m_CurStyle)
{
case STYLE_PUMP_SINGLE: sStyleName[i] = "SINGLE\n"; break;
case STYLE_PUMP_DOUBLE: sStyleName[i] = "FULL-DOUBLE\n"; break;
case STYLE_PUMP_HALFDOUBLE: sStyleName[i] = "HALFDOUBLE\n"; break;
default: sStyleName[i] = ""; break;
}
switch(GAMESTATE->m_PreferredDifficulty[i])
{
case DIFFICULTY_CHALLENGE:
{
if(GAMESTATE->m_CurGame == GAME_PUMP)
{
sDiff[i] = "Crazy\n"; break;
}
else
{
sDiff[i] = "Heavy\n"; break;
}
}
case DIFFICULTY_EASY: sDiff[i] = "Beginner\n"; break;
case DIFFICULTY_MEDIUM:
{
if(GAMESTATE->m_CurGame == GAME_PUMP)
{
sDiff[i] = "Normal\n"; break;
}
else
{
sDiff[i] = "Light\n"; break;
}
}
case DIFFICULTY_HARD:
{
if(GAMESTATE->m_CurGame == GAME_PUMP)
{
sDiff[i] = "Hard\n"; break;
}
else
{
sDiff[i] = "Standard\n"; break;
}
}
case DIFFICULTY_BEGINNER: sDiff[i] = "Challenge\n"; break;
default: sDiff[i] = ""; break;
}
}
else
{
switch(GAMESTATE->m_CurStyle)
{
case STYLE_PUMP_SINGLE: sStyleName[i] = "FULL-DOUBLE\n"; break;
case STYLE_PUMP_DOUBLE: sStyleName[i] = "HALFDOUBLE\n"; break;
case STYLE_PUMP_HALFDOUBLE: sStyleName[i] = "SINGLE\n"; break;
default: sStyleName[i] = ""; break;
}
sDiff[i] = "Challenge\n";
}
}
else
{
sStyleName[i] = "";
sDiff[i] = "";
}
}
CString returnval;
returnval = sStyleName[0] + sDiff[0] + sStyleName[1] + sDiff[1];
return returnval;
}
void ModeSwitcher::NextMode(int pn)
{
if(GAMESTATE->m_CurGame == GAME_PUMP)
{
if(GAMESTATE->IsPlayerEnabled(pn))
{
if(GAMESTATE->m_PreferredDifficulty[pn] != DIFFICULTY_CHALLENGE)
{
switch(GAMESTATE->m_PreferredDifficulty[pn])
{
case DIFFICULTY_BEGINNER: GAMESTATE->m_PreferredDifficulty[pn] = DIFFICULTY_EASY; break;
case DIFFICULTY_EASY: GAMESTATE->m_PreferredDifficulty[pn] = DIFFICULTY_MEDIUM; break;
case DIFFICULTY_MEDIUM: GAMESTATE->m_PreferredDifficulty[pn] = DIFFICULTY_HARD; break;
case DIFFICULTY_HARD: GAMESTATE->m_PreferredDifficulty[pn] = DIFFICULTY_CHALLENGE; break;
}
m_Stylename.SetText(GetStyleName());
m_Nextmode.SetText(GetNextStyleName());
m_Prevmode.SetText(GetPrevStyleName());
return;
}
else
{
if(GAMESTATE->IsPlayerEnabled(PLAYER_1))
GAMESTATE->m_PreferredDifficulty[PLAYER_1] = DIFFICULTY_BEGINNER;
if(GAMESTATE->IsPlayerEnabled(PLAYER_2))
GAMESTATE->m_PreferredDifficulty[PLAYER_2] = DIFFICULTY_BEGINNER;
}
}
int iStyle = GAMESTATE->m_CurStyle;
switch(iStyle)
{
case STYLE_PUMP_SINGLE:
{
GAMESTATE->m_CurStyle = STYLE_PUMP_HALFDOUBLE;
}
break;
case STYLE_PUMP_HALFDOUBLE:
{
GAMESTATE->m_CurStyle = STYLE_PUMP_DOUBLE;
}
break;
case STYLE_PUMP_DOUBLE:
{
GAMESTATE->m_CurStyle = STYLE_PUMP_SINGLE;
}
break;
}
}
m_Stylename.SetText(GetStyleName());
m_Nextmode.SetText(GetNextStyleName());
m_Prevmode.SetText(GetPrevStyleName());
}
void ModeSwitcher::PrevMode(int pn)
{
if(GAMESTATE->IsPlayerEnabled(pn))
{
if(GAMESTATE->m_PreferredDifficulty[pn] != DIFFICULTY_BEGINNER)
{
switch(GAMESTATE->m_PreferredDifficulty[pn])
{
case DIFFICULTY_CHALLENGE: GAMESTATE->m_PreferredDifficulty[pn] = DIFFICULTY_HARD; break;
case DIFFICULTY_EASY: GAMESTATE->m_PreferredDifficulty[pn] = DIFFICULTY_BEGINNER; break;
case DIFFICULTY_MEDIUM: GAMESTATE->m_PreferredDifficulty[pn] = DIFFICULTY_EASY; break;
case DIFFICULTY_HARD: GAMESTATE->m_PreferredDifficulty[pn] = DIFFICULTY_MEDIUM; break;
}
m_Stylename.SetText(GetStyleName());
m_Nextmode.SetText(GetNextStyleName());
m_Prevmode.SetText(GetPrevStyleName());
return;
}
else
{
if(GAMESTATE->IsPlayerEnabled(PLAYER_1))
GAMESTATE->m_PreferredDifficulty[PLAYER_1] = DIFFICULTY_CHALLENGE;
if(GAMESTATE->IsPlayerEnabled(PLAYER_2))
GAMESTATE->m_PreferredDifficulty[PLAYER_2] = DIFFICULTY_CHALLENGE;
}
}
int iStyle = GAMESTATE->m_CurStyle;
switch(iStyle)
{
case STYLE_PUMP_SINGLE:
{
GAMESTATE->m_CurStyle = STYLE_PUMP_DOUBLE;
}
break;
case STYLE_PUMP_HALFDOUBLE:
{
GAMESTATE->m_CurStyle = STYLE_PUMP_SINGLE;
}
break;
case STYLE_PUMP_DOUBLE:
{
GAMESTATE->m_CurStyle = STYLE_PUMP_HALFDOUBLE;
}
break;
}
m_Stylename.SetText(GetStyleName());
m_Nextmode.SetText(GetNextStyleName());
m_Prevmode.SetText(GetPrevStyleName());
2003-07-03 18:13:13 +00:00
}