Adding ScreenEndlessBreak capability
This commit is contained in:
@@ -103,6 +103,9 @@ PrefsManager::PrefsManager()
|
||||
m_bForceLogFlush = false;
|
||||
m_bLogging = true;
|
||||
m_bShowBeginnerHelper = false;
|
||||
m_bEndlessBreakEnabled = true;
|
||||
m_iEndlessNumStagesUntilBreak = 5;
|
||||
m_iEndlessBreakLength = 5;
|
||||
#ifdef DEBUG
|
||||
m_bShowLogWindow = true;
|
||||
#else
|
||||
@@ -281,6 +284,9 @@ void PrefsManager::ReadGlobalPrefsFromDisk( bool bSwitchToLastPlayedGame )
|
||||
ini.GetValueB( "Options", "ShowLogWindow", m_bShowLogWindow );
|
||||
ini.GetValueB( "Options", "ShowBeginnerHelper", m_bShowBeginnerHelper );
|
||||
ini.GetValue ( "Options", "Language", m_sLanguage );
|
||||
ini.GetValueB( "Options", "EndlessBreakEnabled", m_bEndlessBreakEnabled );
|
||||
ini.GetValueI( "Options", "EndlessStagesUntilBreak", m_iEndlessNumStagesUntilBreak );
|
||||
ini.GetValueI( "Options", "EndlessBreakLength", m_iEndlessBreakLength );
|
||||
|
||||
ini.GetValue ( "Options", "CustomSpeedMod", m_sCustomSpeedMod );
|
||||
|
||||
@@ -402,6 +408,9 @@ void PrefsManager::SaveGlobalPrefsToDisk()
|
||||
ini.SetValueI( "Options", "ProgressiveNonstopLifebar", m_iProgressiveNonstopLifebar );
|
||||
ini.SetValueB( "Options", "ShowBeginnerHelper", m_bShowBeginnerHelper );
|
||||
ini.SetValue ( "Options", "Language", m_sLanguage );
|
||||
ini.SetValueB( "Options", "EndlessBreakEnabled", m_bEndlessBreakEnabled );
|
||||
ini.SetValueI( "Options", "EndlessStagesUntilBreak", m_iEndlessNumStagesUntilBreak );
|
||||
ini.SetValueI( "Options", "EndlessBreakLength", m_iEndlessBreakLength );
|
||||
|
||||
ini.SetValue ( "Options", "CustomSpeedMod", m_sCustomSpeedMod );
|
||||
|
||||
|
||||
@@ -95,6 +95,9 @@ public:
|
||||
int m_iProgressiveStageLifebar;
|
||||
int m_iProgressiveNonstopLifebar;
|
||||
bool m_bShowBeginnerHelper;
|
||||
bool m_bEndlessBreakEnabled;
|
||||
int m_iEndlessNumStagesUntilBreak;
|
||||
int m_iEndlessBreakLength;
|
||||
CString m_sLanguage;
|
||||
CString m_sDefaultProfile[NUM_PLAYERS]; // directory name of profile on HD
|
||||
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
#include "global.h"
|
||||
|
||||
/*
|
||||
-----------------------------------------------------------------------------
|
||||
Class: ScreenEndlessBreak
|
||||
|
||||
Desc: See header
|
||||
|
||||
Copyright (c) 2001-2003 by the person(s) listed below. All rights reserved.
|
||||
Kevin Slaughter
|
||||
-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
|
||||
//TODO:: Add scripting support
|
||||
#include "RageLog.h"
|
||||
#include "ScreenManager.h"
|
||||
#include "ScreenEndlessBreak.h"
|
||||
|
||||
ScreenEndlessBreak::ScreenEndlessBreak( CString sName ) : Screen( sName )
|
||||
{
|
||||
LOG->Trace("ScreenEndlessBreak()");
|
||||
ASSERT(GAMESTATE->GetNumPlayersEnabled() > 0); // This should never happen.. but just in case
|
||||
PostScreenMessage( SM_BreakInitiated, 0 );
|
||||
|
||||
bool m_bPicLoaded = false; // I don't know of a better way to see if we failed to load a break picture. If someone does, please do it.
|
||||
|
||||
if( (int)PREFSMAN->m_ShowDancingCharacters != 0 )
|
||||
{
|
||||
if( GAMESTATE->GetNumPlayersEnabled() == 1 )
|
||||
if( GAMESTATE->m_pCurCharacters[0] != NULL )
|
||||
m_sprBreakPicture.LoadTABreakFromCharacter( GAMESTATE->m_pCurCharacters[0] );
|
||||
else
|
||||
m_sprBreakPicture.Load( THEME->GetPathToG("Common fallback takingabreak") );
|
||||
else if( GAMESTATE->GetNumPlayersEnabled() > 1 ) // More than 1 player is present.
|
||||
{
|
||||
int PlayerToUse = 999; /* If this was 0 by default, the first player would
|
||||
always be selected. Make it an insane number so
|
||||
we always generate a random player. */
|
||||
while (!GAMESTATE->IsPlayerEnabled(PlayerToUse))
|
||||
{
|
||||
PlayerToUse = (int)(rand()*NUM_PLAYERS); // Is there a danger of this becoming an endless loop??
|
||||
if( (GAMESTATE->IsPlayerEnabled(PlayerToUse)) && (GAMESTATE->m_pCurCharacters[PlayerToUse] != NULL) )
|
||||
{
|
||||
m_sprBreakPicture.LoadTABreakFromCharacter( GAMESTATE->m_pCurCharacters[PlayerToUse] );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else // Characters not enabled.
|
||||
m_sprBreakPicture.Load( THEME->GetPathToG("Common fallback takingabreak") );
|
||||
m_sprBreakPicture.SetX( CENTER_X );
|
||||
m_sprBreakPicture.SetY( CENTER_Y );
|
||||
this->AddChild(&m_sprBreakPicture);
|
||||
|
||||
// Set up our countdown clock.
|
||||
m_fCountdownSecs = (PREFSMAN->m_iEndlessBreakLength*60); // Stored in minutes.
|
||||
|
||||
//BitmapText stuff
|
||||
m_textTimeRemaining.LoadFromFont( THEME->GetPathToF("Common Normal") );
|
||||
m_textTimeRemaining.SetText( SecondsToTime(m_fCountdownSecs) );
|
||||
m_textTimeRemaining.SetX( CENTER_X );
|
||||
m_textTimeRemaining.SetY( CENTER_Y );
|
||||
|
||||
//Transition stuff
|
||||
m_In.Load( THEME->GetPathToB("ScreenEndlessBreak In") );
|
||||
this->AddChild(&m_In);
|
||||
m_In.StartTransitioning();
|
||||
m_Out.Load( THEME->GetPathToB("ScreenEndlessBreak Out") );
|
||||
this->AddChild(&m_Out);
|
||||
m_bExiting = false;
|
||||
}
|
||||
|
||||
void ScreenEndlessBreak::Update(float fDeltaTime)
|
||||
{
|
||||
m_textTimeRemaining.SetText( SecondsToTime(m_fCountdownSecs) );
|
||||
if( !m_bExiting )
|
||||
if(m_fCountdownSecs <= 0)
|
||||
{
|
||||
m_bExiting = true;
|
||||
SCREENMAN->PopTopScreen(SM_BreakCompleted); // Destroy this screen and let ScreenGameplay get the message.
|
||||
m_Out.StartTransitioning();
|
||||
}
|
||||
else
|
||||
//m_fCountdownSecs--;
|
||||
m_fCountdownSecs = (m_fCountdownSecs - fDeltaTime);
|
||||
Screen::Update( fDeltaTime );
|
||||
}
|
||||
|
||||
void ScreenEndlessBreak::DrawPrimitives()
|
||||
{
|
||||
Screen::DrawPrimitives(); // Draw all other elements below our TakingABreak pic.
|
||||
m_sprBreakPicture.Draw();
|
||||
m_textTimeRemaining.Draw(); // Draw the time remaining on top of everything.
|
||||
}
|
||||
|
||||
void ScreenEndlessBreak::Input(const DeviceInput &DeviceI, const InputEventType type, const GameInput *GameI, const MenuInput &MenuI, const StyleInput &StyleI)
|
||||
{
|
||||
//Why is this not working..?
|
||||
switch( MenuI.button )
|
||||
{
|
||||
case MENU_BUTTON_START: m_fCountdownSecs = 0; break;
|
||||
}
|
||||
//Compiler bitching over this..
|
||||
//Screen::Input( DeviceI, type, GameI, MenuI, StyleI );
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
#ifndef SCREENENDLESSBREAK_H
|
||||
#define SCREENENDLESSBREAK_H
|
||||
|
||||
/*
|
||||
-----------------------------------------------------------------------------
|
||||
Class: ScreenEndlessBreak
|
||||
|
||||
Desc: Screen for break periods during endless mode.
|
||||
|
||||
Copyright (c) 2001-2003 by the person(s) listed below. All rights reserved.
|
||||
Kevin Slaughter
|
||||
-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#include "Screen.h"
|
||||
#include "PrefsManager.h"
|
||||
#include "Banner.h"
|
||||
#include "Character.h"
|
||||
#include "GameState.h"
|
||||
#include "ThemeManager.h"
|
||||
#include "BitmapText.h"
|
||||
#include "Transition.h"
|
||||
|
||||
// Sent to ScreenGameplay so it can keep all it's data ready for when we resume play.
|
||||
const ScreenMessage SM_BreakInitiated = ScreenMessage(SM_User+100);
|
||||
const ScreenMessage SM_BreakCompleted = ScreenMessage(SM_User+101);
|
||||
|
||||
class ScreenEndlessBreak : public Screen
|
||||
{
|
||||
public:
|
||||
ScreenEndlessBreak( CString sName );
|
||||
|
||||
virtual void DrawPrimitives();
|
||||
virtual void Update(float fDeltaTime);
|
||||
virtual void Input(const DeviceInput &DeviceI, const InputEventType type, const GameInput *GameI, const MenuInput &MenuI, const StyleInput &StyleI);
|
||||
|
||||
private:
|
||||
Banner m_sprBreakPicture;
|
||||
BitmapText m_textTimeRemaining;
|
||||
float m_fCountdownSecs;
|
||||
Transition m_In;
|
||||
Transition m_Out;
|
||||
bool m_bExiting;
|
||||
};
|
||||
#endif
|
||||
+50
-31
@@ -62,10 +62,10 @@ LINK32=link.exe
|
||||
# SUBTRACT LINK32 /verbose /profile /pdb:none /incremental:no /nodefaultlib
|
||||
# Begin Special Build Tool
|
||||
IntDir=.\../Debug6
|
||||
TargetDir=\temp\stepmania
|
||||
TargetDir=\stepmania
|
||||
TargetName=StepMania-debug
|
||||
SOURCE="$(InputPath)"
|
||||
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
|
||||
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
|
||||
PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi ia32.vdi
|
||||
# End Special Build Tool
|
||||
|
||||
@@ -82,23 +82,23 @@ PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
CPP=cl.exe
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_XBOX" /D "_DEBUG" /YX /FD /G6 /Ztmp /c
|
||||
# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "." /I "SDL-1.2.5\include" /I "SDL_image-1.2" /I "plib-1.6.0" /I "SDL_sound-1.0.0" /D "WIN32" /D "_XBOX" /D "_DEBUG" /D "OGG_ONLY" /YX /FD /G6 /Ztmp /c
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 xapilibd.lib d3d8d.lib d3dx8d.lib xgraphicsd.lib dsoundd.lib dmusicd.lib xnetd.lib xboxkrnl.lib /nologo /incremental:no /debug /machine:I386 /subsystem:xbox /fixed:no /TMP
|
||||
# ADD LINK32 xapilibd.lib d3d8d.lib d3dx8d.lib xgraphicsd.lib dsoundd.lib dmusicd.lib xnetd.lib xboxkrnl.lib /nologo /incremental:no /debug /machine:I386 /nodefaultlib:"libcd" /nodefaultlib:"libcmt" /out:"../StepManiaXbox-debug.exe" /subsystem:xbox /fixed:no /TMP
|
||||
XBE=imagebld.exe
|
||||
# ADD BASE XBE /nologo /stack:0x10000 /debug
|
||||
# ADD XBE /nologo /stack:0x10000 /debug /out:"../default.xbe"
|
||||
XBCP=xbecopy.exe
|
||||
# ADD BASE XBCP /NOLOGO
|
||||
# ADD XBCP /NOLOGO
|
||||
XBE=imagebld.exe
|
||||
# ADD BASE XBE /nologo /stack:0x10000 /debug
|
||||
# ADD XBE /nologo /stack:0x10000 /debug /out:"../default.xbe"
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 xapilibd.lib d3d8d.lib d3dx8d.lib xgraphicsd.lib dsoundd.lib dmusicd.lib xnetd.lib xboxkrnl.lib /nologo /incremental:no /debug /machine:I386 /subsystem:xbox /fixed:no /TMP
|
||||
# ADD LINK32 xapilibd.lib d3d8d.lib d3dx8d.lib xgraphicsd.lib dsoundd.lib dmusicd.lib xnetd.lib xboxkrnl.lib /nologo /incremental:no /debug /machine:I386 /nodefaultlib:"libcd" /nodefaultlib:"libcmt" /out:"../StepManiaXbox-debug.exe" /subsystem:xbox /fixed:no /TMP
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
CPP=cl.exe
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_XBOX" /D "_DEBUG" /YX /FD /G6 /Ztmp /c
|
||||
# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "." /I "SDL-1.2.5\include" /I "SDL_image-1.2" /I "plib-1.6.0" /I "SDL_sound-1.0.0" /D "WIN32" /D "_XBOX" /D "_DEBUG" /D "OGG_ONLY" /YX /FD /G6 /Ztmp /c
|
||||
# Begin Special Build Tool
|
||||
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
|
||||
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
|
||||
PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi ia32.vdi
|
||||
# End Special Build Tool
|
||||
|
||||
@@ -135,10 +135,10 @@ LINK32=link.exe
|
||||
# SUBTRACT LINK32 /verbose /pdb:none
|
||||
# Begin Special Build Tool
|
||||
IntDir=.\../Release6
|
||||
TargetDir=\temp\stepmania
|
||||
TargetDir=\stepmania
|
||||
TargetName=StepMania
|
||||
SOURCE="$(InputPath)"
|
||||
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
|
||||
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
|
||||
PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi ia32.vdi
|
||||
# End Special Build Tool
|
||||
|
||||
@@ -156,26 +156,26 @@ PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania
|
||||
# PROP Intermediate_Dir "StepMania___Xbox_Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
CPP=cl.exe
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "." /I "SDL-1.2.5\include" /I "SDL_image-1.2" /I "plib-1.6.0" /D "WIN32" /D "_XBOX" /D "_DEBUG" /Fr /YX"global.h" /FD /c
|
||||
# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I "SDL-1.2.5\include" /I "SDL_image-1.2" /I "plib-1.6.0" /I "SDL_sound-1.0.0" /D "WIN32" /D "_XBOX" /D "NDEBUG" /YX"global.h" /FD /c
|
||||
# SUBTRACT CPP /Fr
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
XBCP=xbecopy.exe
|
||||
# ADD BASE XBCP /NOLOGO
|
||||
# ADD XBCP /NOLOGO
|
||||
XBE=imagebld.exe
|
||||
# ADD BASE XBE /nologo /stack:0x10000 /debug
|
||||
# ADD XBE /nologo /testid:"123456" /stack:0x10000 /debug /out:"../default.xbe"
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 $(intdir)\verstub.obj xapilibd.lib d3d8d.lib d3dx8d.lib xgraphicsd.lib dsoundd.lib dmusicd.lib xnetd.lib xboxkrnl.lib /nologo /pdb:"../debug6/StepMania-debug.pdb" /map /debug /machine:IX86 /nodefaultlib:"libcmtd.lib" /out:"../StepMania-debug.exe"
|
||||
# SUBTRACT BASE LINK32 /verbose /profile /pdb:none /incremental:no /nodefaultlib
|
||||
# ADD LINK32 $(intdir)\verstub.obj xapilib.lib d3d8.lib d3dx8.lib xgraphics.lib dsound.lib dmusic.lib xnet.lib xboxkrnl.lib libcmt.lib /nologo /incremental:no /pdb:"../release6xbox/StepMania.pdb" /machine:I386 /nodefaultlib:"libc" /nodefaultlib:"libcmtd" /out:"../StepManiaXbox.exe" /subsystem:xbox /fixed:no /TMP /OPT:REF
|
||||
# SUBTRACT LINK32 /pdb:none /map /debug
|
||||
XBE=imagebld.exe
|
||||
# ADD BASE XBE /nologo /stack:0x10000 /debug
|
||||
# ADD XBE /nologo /testid:"123456" /stack:0x10000 /debug /out:"../default.xbe"
|
||||
XBCP=xbecopy.exe
|
||||
# ADD BASE XBCP /NOLOGO
|
||||
# ADD XBCP /NOLOGO
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
CPP=cl.exe
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "." /I "SDL-1.2.5\include" /I "SDL_image-1.2" /I "plib-1.6.0" /D "WIN32" /D "_XBOX" /D "_DEBUG" /Fr /YX"global.h" /FD /c
|
||||
# ADD CPP /nologo /MT /W3 /GX /O2 /I "." /I "SDL-1.2.5\include" /I "SDL_image-1.2" /I "plib-1.6.0" /I "SDL_sound-1.0.0" /D "WIN32" /D "_XBOX" /D "NDEBUG" /YX"global.h" /FD /c
|
||||
# SUBTRACT CPP /Fr
|
||||
# Begin Special Build Tool
|
||||
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
|
||||
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
|
||||
PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi ia32.vdi
|
||||
# End Special Build Tool
|
||||
|
||||
@@ -4183,6 +4183,25 @@ SOURCE=.\ScreenEditMenu.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ScreenEndlessBreak.cpp
|
||||
|
||||
!IF "$(CFG)" == "StepMania - Win32 Debug"
|
||||
|
||||
!ELSEIF "$(CFG)" == "StepMania - Xbox Debug"
|
||||
|
||||
!ELSEIF "$(CFG)" == "StepMania - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "StepMania - Xbox Release"
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ScreenEndlessBreak.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ScreenEvaluation.cpp
|
||||
|
||||
!IF "$(CFG)" == "StepMania - Win32 Debug"
|
||||
|
||||
Reference in New Issue
Block a user