#include "global.h" /* ----------------------------------------------------------------------------- Class: PlayerOptions Desc: See header. Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved. Chris Danford ----------------------------------------------------------------------------- */ #include "PlayerOptions.h" #include "RageUtil.h" void PlayerOptions::Init() { m_fScrollSpeed = 1.0f; m_AccelType = ACCEL_OFF; ZERO( m_bEffects ); m_AppearanceType = APPEARANCE_VISIBLE; m_TurnType = TURN_NONE; m_Transform = TRANSFORM_NONE; m_bReverseScroll = false; m_bHoldNotes = true; m_bDark = false; } CString PlayerOptions::GetString() { CString sReturn; if( m_fScrollSpeed != 1 ) { /* -> 1.00 */ CString s = ssprintf( "%2.2f", m_fScrollSpeed ); if( s[s.GetLength()-1] == '0' ) { /* -> 1.0 */ s.erase(s.GetLength()-1); // delete last char if( s[s.GetLength()-1] == '0' ) { /* -> 1 */ s.erase(s.GetLength()-2); // delete last 2 chars } } sReturn += s + "X, "; } switch( m_AccelType ) { case ACCEL_OFF: break; case ACCEL_BOOST: sReturn += "Boost, "; break; case ACCEL_LAND: sReturn += "Land, "; break; case ACCEL_WAVE: sReturn += "Wave, "; break; case ACCEL_EXPAND: sReturn += "Expand, "; break; case ACCEL_BOOMERANG: sReturn += "Boomerang, "; break; default: ASSERT(0); } if( m_bEffects[EFFECT_DRUNK] ) sReturn += "Drunk, "; if( m_bEffects[EFFECT_DIZZY] ) sReturn += "Dizzy, "; if( m_bEffects[EFFECT_SPACE] ) sReturn += "Space, "; if( m_bEffects[EFFECT_MINI] ) sReturn += "Mini, "; if( m_bEffects[EFFECT_FLIP] ) sReturn += "Flip, "; if( m_bEffects[EFFECT_TORNADO] )sReturn += "Tornado, "; switch( m_AppearanceType ) { case APPEARANCE_VISIBLE: break; case APPEARANCE_HIDDEN: sReturn += "Hidden, "; break; case APPEARANCE_SUDDEN: sReturn += "Sudden, "; break; case APPEARANCE_STEALTH: sReturn += "Stealth, "; break; case APPEARANCE_BLINK: sReturn += "Blink, "; break; default: ASSERT(0); // invalid } switch( m_TurnType ) { case TURN_NONE: break; case TURN_MIRROR: sReturn += "Mirror, "; break; case TURN_LEFT: sReturn += "Left, "; break; case TURN_RIGHT: sReturn += "Right, "; break; case TURN_SHUFFLE: sReturn += "Shuffle, "; break; case TURN_SUPER_SHUFFLE:sReturn += "SuperShuffle, ";break; default: ASSERT(0); // invalid } switch( m_Transform ) { case TRANSFORM_NONE: break; case TRANSFORM_LITTLE: sReturn += "Little, "; break; case TRANSFORM_WIDE: sReturn += "Wide, "; break; case TRANSFORM_BIG: sReturn += "Big, "; break; case TRANSFORM_QUICK: sReturn += "Quick, "; break; default: ASSERT(0); // invalid } if( m_bReverseScroll ) sReturn += "Reverse, "; if( !m_bHoldNotes ) sReturn += "NoHolds, "; if( m_bDark ) sReturn += "Dark, "; if( sReturn.GetLength() > 2 ) sReturn.erase( sReturn.GetLength()-2 ); // delete the trailing ", " return sReturn; } /* Options are added to the current settings; call Init() beforehand if * you don't want this. */ void PlayerOptions::FromString( CString sOptions ) { // Init(); sOptions.MakeLower(); CStringArray asBits; split( sOptions, ",", asBits, true ); for( unsigned i=0; i0.8f ) m_fScrollSpeed = 1.5f; if( RandomFloat(0,1)>0.8f ) m_bReverseScroll = true; if( RandomFloat(0,1)>0.9f ) m_bDark = true; float f; f = RandomFloat(0,1); if( f>0.66f ) m_AccelType = (AccelType)(rand()%NUM_ACCEL_TYPES); else if( f>0.33f ) m_bEffects[ rand()%NUM_EFFECT_TYPES ] = true; f = RandomFloat(0,1); if( f>0.95f ) m_AppearanceType = APPEARANCE_HIDDEN; else if( f>0.9f ) m_AppearanceType = APPEARANCE_SUDDEN; }