2003-07-09 03:10:01 +00:00
|
|
|
/*
|
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
|
Class: ScreenUnlock
|
|
|
|
|
|
|
|
|
|
Desc: See header.
|
|
|
|
|
|
|
|
|
|
Copyright (c) 2003 by the person(s) listed below. All rights reserved.
|
2003-07-10 07:22:31 +00:00
|
|
|
Andrew Wong
|
2003-07-09 03:10:01 +00:00
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#include "global.h"
|
|
|
|
|
#include "PrefsManager.h"
|
|
|
|
|
#include "ScreenUnlock.h"
|
|
|
|
|
#include "ThemeManager.h"
|
|
|
|
|
#include "GameState.h"
|
|
|
|
|
#include "RageLog.h"
|
|
|
|
|
#include "UnlockSystem.h"
|
2003-07-09 04:46:24 +00:00
|
|
|
#include "SongManager.h"
|
2003-07-09 03:10:01 +00:00
|
|
|
|
|
|
|
|
ScreenUnlock::ScreenUnlock() : ScreenAttract("ScreenUnlock")
|
|
|
|
|
{
|
|
|
|
|
LOG->Trace("ScreenUnlock::ScreenUnlock()");
|
|
|
|
|
PointsUntilNextUnlock.LoadFromFont( THEME->GetPathToF("Common normal") );
|
|
|
|
|
PointsUntilNextUnlock.SetHorizAlign( Actor::align_left );
|
|
|
|
|
|
2003-07-09 06:05:43 +00:00
|
|
|
CString sDP = ssprintf( "%d", (int)GAMESTATE->m_pUnlockingSys->DancePointsUntilNextUnlock() );
|
|
|
|
|
CString sAP = ssprintf( "%d", (int)GAMESTATE->m_pUnlockingSys->ArcadePointsUntilNextUnlock() );
|
|
|
|
|
CString sSP = ssprintf( "%d", (int)GAMESTATE->m_pUnlockingSys->SongPointsUntilNextUnlock() );
|
|
|
|
|
|
|
|
|
|
CString PointDisplay = THEME->GetMetric("ScreenUnlock", "TypeOfPointsToDisplay");
|
2003-07-10 07:22:31 +00:00
|
|
|
|
|
|
|
|
CString IconCommand =
|
|
|
|
|
THEME->GetMetric("ScreenUnlock", "UnlockIconCommand");
|
2003-07-09 03:10:01 +00:00
|
|
|
|
|
|
|
|
for(int i=1; i <= THEME->GetMetricI("ScreenUnlock", "NumUnlocks"); i++)
|
|
|
|
|
{
|
|
|
|
|
// new unlock graphic
|
|
|
|
|
Unlocks[i].Load( THEME->GetPathToG(ssprintf("ScreenUnlock icon %d", i)) );
|
|
|
|
|
|
|
|
|
|
Unlocks[i].SetName( ssprintf("Unlock%d",i) );
|
|
|
|
|
SET_XY( Unlocks[i] );
|
|
|
|
|
|
2003-07-09 04:46:24 +00:00
|
|
|
Song *pSong = SONGMAN->FindSong("", THEME->GetMetric("ScreenUnlock", ssprintf("Unlock%dSong", i)) );
|
|
|
|
|
if( pSong == NULL )
|
|
|
|
|
continue;
|
|
|
|
|
|
2003-07-10 07:22:31 +00:00
|
|
|
Unlocks[i].Command(IconCommand);
|
|
|
|
|
|
2003-07-09 04:46:24 +00:00
|
|
|
const bool SongIsLocked = GAMESTATE->m_pUnlockingSys->SongIsLocked( pSong );
|
2003-07-09 03:10:01 +00:00
|
|
|
if ( !SongIsLocked )
|
|
|
|
|
this->AddChild(&Unlocks[i]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// No negative numbers
|
|
|
|
|
if( sDP.Left(1) == "-" )
|
|
|
|
|
sDP = "*";
|
|
|
|
|
|
2003-07-09 06:05:43 +00:00
|
|
|
PointsUntilNextUnlock.SetName( "PointsDisplay" );
|
|
|
|
|
|
|
|
|
|
if (PointDisplay == "DP" || PointDisplay == "Dance")
|
|
|
|
|
PointsUntilNextUnlock.SetText( sDP );
|
|
|
|
|
|
|
|
|
|
if (PointDisplay == "AP" || PointDisplay == "Arcade")
|
|
|
|
|
PointsUntilNextUnlock.SetText( sAP );
|
|
|
|
|
|
|
|
|
|
if (PointDisplay == "SP" || PointDisplay == "Song")
|
|
|
|
|
PointsUntilNextUnlock.SetText( sSP );
|
|
|
|
|
|
|
|
|
|
PointsUntilNextUnlock.SetZoom( THEME->GetMetricF("ScreenUnlock","PointsZoom") );
|
2003-07-09 03:10:01 +00:00
|
|
|
SET_XY( PointsUntilNextUnlock );
|
|
|
|
|
this->AddChild( &PointsUntilNextUnlock );
|
2003-07-10 07:22:31 +00:00
|
|
|
|
|
|
|
|
this->ClearMessageQueue( SM_BeginFadingOut ); // ignore ScreenAttract's SecsToShow
|
|
|
|
|
|
|
|
|
|
this->PostScreenMessage( SM_BeginFadingOut,
|
|
|
|
|
THEME->GetMetricI("ScreenUnlock", "TimeToDisplay") );
|
|
|
|
|
|
2003-07-09 03:10:01 +00:00
|
|
|
}
|