Files
itgmania212121/stepmania/src/ScreenPlayerOptions.cpp
T

169 lines
5.8 KiB
C++
Raw Normal View History

2002-05-20 08:59:37 +00:00
#include "stdafx.h"
/*
-----------------------------------------------------------------------------
Class: ScreenPlayerOptions
2002-05-20 08:59:37 +00:00
Desc: Select a song.
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
Chris Danford
2002-05-20 08:59:37 +00:00
-----------------------------------------------------------------------------
*/
#include "ScreenPlayerOptions.h"
#include "RageUtil.h"
#include "ScreenManager.h"
#include "RageLog.h"
2002-07-23 01:41:40 +00:00
#include "GameState.h"
2002-05-20 08:59:37 +00:00
enum {
PO_SPEED = 0,
PO_BOOST,
2002-05-20 08:59:37 +00:00
PO_EFFECT,
PO_APPEAR,
PO_TURN,
PO_LITTLE,
PO_SCROLL,
PO_COLOR,
2002-05-27 08:23:27 +00:00
PO_HOLD_NOTES,
2002-07-03 21:27:26 +00:00
PO_DARK,
2002-05-20 08:59:37 +00:00
NUM_PLAYER_OPTIONS_LINES
};
OptionRowData g_PlayerOptionsLines[NUM_PLAYER_OPTIONS_LINES] = {
{ "Speed", 9, {"x0.5","x0.75","x1","x1.5","x2","x3","x4","x5","x8"} },
{ "Boost", 2, {"OFF","ON"} },
{ "Effect", 8, {"OFF","WAVE", "DRUNK", "DIZZY","SPACE","MINI","FLIP","TORNADO"} },
{ "Appear\n-ance", 5, {"VISIBLE","HIDDEN","SUDDEN","STEALTH", "BLINK"} },
{ "Turn", 5, {"OFF","MIRROR","LEFT","RIGHT","SHUFFLE"} },
{ "Little", 2, {"OFF","ON"} },
{ "Scroll", 2, {"STANDARD","REVERSE"} },
{ "Color", 4, {"VIVID","NOTE","FLAT","PLAIN"} },
{ "Holds", 2, {"OFF","ON"} },
{ "Dark", 2, {"OFF","ON"} },
2002-05-20 08:59:37 +00:00
};
ScreenPlayerOptions::ScreenPlayerOptions() :
ScreenOptions(
THEME->GetPathTo("Graphics","player options background"),
THEME->GetPathTo("Graphics","player options page"),
THEME->GetPathTo("Graphics","player options top edge")
2002-05-20 08:59:37 +00:00
)
{
LOG->Trace( "ScreenPlayerOptions::ScreenPlayerOptions()" );
2002-05-20 08:59:37 +00:00
Init(
INPUTMODE_PLAYERS,
2002-05-20 08:59:37 +00:00
g_PlayerOptionsLines,
NUM_PLAYER_OPTIONS_LINES,
true );
2002-08-01 05:11:11 +00:00
SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("player options intro") );
2002-05-20 08:59:37 +00:00
}
void ScreenPlayerOptions::ImportOptions()
{
for( int p=0; p<NUM_PLAYERS; p++ )
{
2002-07-23 01:41:40 +00:00
PlayerOptions &po = GAMESTATE->m_PlayerOptions[p];
2002-05-20 08:59:37 +00:00
2002-07-23 01:41:40 +00:00
if( po.m_fArrowScrollSpeed == 0.5f ) m_iSelectedOption[p][PO_SPEED] = 0;
else if( po.m_fArrowScrollSpeed == 0.75f) m_iSelectedOption[p][PO_SPEED] = 1;
else if( po.m_fArrowScrollSpeed == 1.0f ) m_iSelectedOption[p][PO_SPEED] = 2;
else if( po.m_fArrowScrollSpeed == 1.5f ) m_iSelectedOption[p][PO_SPEED] = 3;
else if( po.m_fArrowScrollSpeed == 2.0f ) m_iSelectedOption[p][PO_SPEED] = 4;
else if( po.m_fArrowScrollSpeed == 3.0f ) m_iSelectedOption[p][PO_SPEED] = 5;
2002-08-01 13:42:56 +00:00
else if( po.m_fArrowScrollSpeed == 4.0f ) m_iSelectedOption[p][PO_SPEED] = 6;
else if( po.m_fArrowScrollSpeed == 5.0f ) m_iSelectedOption[p][PO_SPEED] = 7;
else if( po.m_fArrowScrollSpeed == 8.0f ) m_iSelectedOption[p][PO_SPEED] = 8;
2002-07-23 01:41:40 +00:00
else m_iSelectedOption[p][PO_SPEED] = 2;
2002-05-20 08:59:37 +00:00
2002-09-11 05:30:49 +00:00
m_iSelectedOption[p][PO_BOOST] = po.m_EffectType & PlayerOptions::EFFECT_BOOST;
switch(po.m_EffectType & ~PlayerOptions::EFFECT_BOOST)
{
case PlayerOptions::EFFECT_NONE: m_iSelectedOption[p][PO_EFFECT]=0; break;
2002-09-11 05:30:49 +00:00
case PlayerOptions::EFFECT_WAVE: m_iSelectedOption[p][PO_EFFECT]=1; break;
case PlayerOptions::EFFECT_DRUNK: m_iSelectedOption[p][PO_EFFECT]=2; break;
case PlayerOptions::EFFECT_DIZZY: m_iSelectedOption[p][PO_EFFECT]=3; break;
case PlayerOptions::EFFECT_SPACE: m_iSelectedOption[p][PO_EFFECT]=4; break;
case PlayerOptions::EFFECT_MINI: m_iSelectedOption[p][PO_EFFECT]=5; break;
case PlayerOptions::EFFECT_FLIP: m_iSelectedOption[p][PO_EFFECT]=6; break;
case PlayerOptions::EFFECT_TORNADO: m_iSelectedOption[p][PO_EFFECT]=7; break;
default: ; break;
}
2002-05-20 08:59:37 +00:00
m_iSelectedOption[p][PO_APPEAR] = po.m_AppearanceType;
m_iSelectedOption[p][PO_TURN] = po.m_TurnType;
m_iSelectedOption[p][PO_LITTLE] = po.m_bLittle ? 1 : 0;
m_iSelectedOption[p][PO_SCROLL] = po.m_bReverseScroll ? 1 : 0 ;
m_iSelectedOption[p][PO_COLOR] = po.m_ColorType;
2002-05-27 08:23:27 +00:00
m_iSelectedOption[p][PO_HOLD_NOTES] = po.m_bHoldNotes ? 1 : 0;
2002-07-03 21:27:26 +00:00
m_iSelectedOption[p][PO_DARK] = po.m_bDark ? 1 : 0;
2002-05-20 08:59:37 +00:00
}
}
void ScreenPlayerOptions::ExportOptions()
{
for( int p=0; p<NUM_PLAYERS; p++ )
{
2002-07-23 01:41:40 +00:00
PlayerOptions &po = GAMESTATE->m_PlayerOptions[p];
2002-05-20 08:59:37 +00:00
switch( m_iSelectedOption[p][PO_SPEED] )
{
2002-07-23 01:41:40 +00:00
case 0: po.m_fArrowScrollSpeed = 0.5f; break;
case 1: po.m_fArrowScrollSpeed = 0.75f; break;
case 2: po.m_fArrowScrollSpeed = 1.0f; break;
case 3: po.m_fArrowScrollSpeed = 1.5f; break;
case 4: po.m_fArrowScrollSpeed = 2.0f; break;
case 5: po.m_fArrowScrollSpeed = 3.0f; break;
2002-08-01 13:42:56 +00:00
case 6: po.m_fArrowScrollSpeed = 4.0f; break;
case 7: po.m_fArrowScrollSpeed = 5.0f; break;
case 8: po.m_fArrowScrollSpeed = 8.0f; break;
2002-05-20 08:59:37 +00:00
}
2002-09-11 05:30:49 +00:00
po.m_EffectType = (m_iSelectedOption[p][PO_BOOST] == 1)?
PlayerOptions::EFFECT_BOOST:
PlayerOptions::EFFECT_NONE;
switch(m_iSelectedOption[p][PO_EFFECT])
{
2002-09-11 05:30:49 +00:00
//case 0: po.m_EffectType |= PlayerOptions::EFFECT_NONE; break;
case 1: po.m_EffectType |= PlayerOptions::EFFECT_WAVE; break;
case 2: po.m_EffectType |= PlayerOptions::EFFECT_DRUNK; break;
case 3: po.m_EffectType |= PlayerOptions::EFFECT_DIZZY; break;
case 4: po.m_EffectType |= PlayerOptions::EFFECT_SPACE; break;
case 5: po.m_EffectType |= PlayerOptions::EFFECT_MINI; break;
case 6: po.m_EffectType |= PlayerOptions::EFFECT_FLIP; break;
case 7: po.m_EffectType |= PlayerOptions::EFFECT_TORNADO; break;
}
2002-05-20 08:59:37 +00:00
2002-05-27 08:23:27 +00:00
po.m_AppearanceType = (PlayerOptions::AppearanceType)m_iSelectedOption[p][PO_APPEAR];
po.m_TurnType = (PlayerOptions::TurnType)m_iSelectedOption[p][PO_TURN];
po.m_bLittle = m_iSelectedOption[p][PO_LITTLE] == 1;
po.m_bReverseScroll = (m_iSelectedOption[p][PO_SCROLL] == 1);
po.m_ColorType = (PlayerOptions::ColorType)m_iSelectedOption[p][PO_COLOR];
po.m_bHoldNotes = (m_iSelectedOption[p][PO_HOLD_NOTES] == 1);
2002-07-03 21:27:26 +00:00
po.m_bDark = (m_iSelectedOption[p][PO_DARK] == 1);
2002-05-20 08:59:37 +00:00
}
}
void ScreenPlayerOptions::GoToPrevState()
{
if(GAMESTATE->m_PlayMode == PLAY_MODE_ONI ||
GAMESTATE->m_PlayMode == PLAY_MODE_ENDLESS)
SCREENMAN->SetNewScreen( "ScreenSelectCourse" );
else
SCREENMAN->SetNewScreen( "ScreenSelectMusic" );
2002-05-20 08:59:37 +00:00
}
void ScreenPlayerOptions::GoToNextState()
{
SCREENMAN->SetNewScreen( "ScreenSongOptions" );
2002-05-20 08:59:37 +00:00
}