updated unlock screen - now it can be configured to be MAX2-style (shows the numbers 1-30)

This commit is contained in:
Andrew Wong
2003-07-08 18:50:24 +00:00
parent 7c07ca4d72
commit a471a70e1e
4 changed files with 61 additions and 52 deletions
+41 -7
View File
@@ -1,3 +1,15 @@
/*
-----------------------------------------------------------------------------
Class: ScreenUnlock
Desc: See header.
Copyright (c) 2003 by the person(s) listed below. All rights reserved.
curewater
-----------------------------------------------------------------------------
*/
#include "global.h"
#include "PrefsManager.h"
#include "ScreenUnlock.h"
@@ -6,22 +18,44 @@
#include "RageLog.h"
#include "UnlockSystem.h"
ScreenUnlock::ScreenUnlock() : ScreenAttract("ScreenUnlock")
{
LOG->Trace("ScreenUnlock::ScreenUnlock()");
PointsUntilNextUnlock.LoadFromFont( THEME->GetPathToF("Common normal") );
PointsUntilNextUnlock.SetHorizAlign( Actor::align_left );
CString sDP = ssprintf( "%f", GAMESTATE->m_pUnlockingSys->NumPointsUntilNextUnlock() );
// Remove the decimal
CString sDP = ssprintf( "%d", (int)GAMESTATE->m_pUnlockingSys->NumPointsUntilNextUnlock() );
for(int i=1; i <= THEME->GetMetricI("ScreenUnlock", "NumUnlocks"); i++)
{
// new unlock graphic
char filename[30];
sprintf(filename, "UnlockGraphic%d", i);
Unlocks[i].Load( THEME->GetPathToG(filename) );
sprintf(filename, "Unlock%d", i);
PointsUntilNextUnlock.SetXY(
THEME->GetMetricI("ScreenUnlock",ssprintf("Unlock%dX", i)),
THEME->GetMetricI("ScreenUnlock",ssprintf("Unlock%dX", i)) );
Unlocks[i].SetName( ssprintf("Unlock%d",i) );
UtilSetXY( Unlocks[i], "ScreenUnlock" );
if (!GAMESTATE->m_pUnlockingSys->SongIsLocked
(THEME->GetMetric
("ScreenUnlock", ssprintf
("Unlock%dSong", i))))
this->AddChild(&Unlocks[i]);
}
/* Remove the decimal
if( sDP.Find(".",1) > 0 )
{
sDP = sDP.Left(sDP.Find(".",1));
}
} no longer necessary since its an int*/
// No negative numbers
if( sDP.Left(1) == "-" )
+4
View File
@@ -6,12 +6,15 @@
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
Chris Danford
curewater
-----------------------------------------------------------------------------
*/
#include "ScreenAttract.h"
#include "GameConstantsAndTypes.h" // for NUM_RANKING_LINES
#include "Style.h"
#include "ActorUtil.h"
#define NUM_UNLOCKS 30
class Course;
@@ -22,4 +25,5 @@ public:
ScreenUnlock();
protected:
BitmapText PointsUntilNextUnlock;
Sprite Unlocks[NUM_UNLOCKS]; // support 30 unlocks right now
};
+6 -37
View File
@@ -6,6 +6,7 @@
Copyright (c) 2001-2003 by the person(s) listed below. All rights reserved.
Kevin Slaughter
curewater
-----------------------------------------------------------------------------
*/
@@ -21,8 +22,6 @@ using namespace std;
#include "stdio.h"
// #define POINTS_ACCUMULATED_BEFORE_LAST_ROUND // Load from file here
UnlockSystem::UnlockSystem()
{
}
@@ -32,6 +31,7 @@ bool UnlockSystem::SongIsLocked( CString sSongName )
{
sSongName.MakeUpper(); //Avoid case-sensitive problems
// searches for song in unlock list
for(unsigned i = 0; i < m_SongEntries.size(); i++)
if (m_SongEntries[i].m_sSongName == sSongName)
return m_SongEntries[i].isLocked;
@@ -50,40 +50,6 @@ bool UnlockSystem::SongIsRoulette( CString sSongName )
return false;
}
/* These don't appear to be used. If you need them, I'd suggest making them
* members. They also need return types. */
#if 0
operator == (const SongEntry &a, const SongEntry &b)
{
return a.m_sSongName == b.m_sSongName;
}
operator != (const SongEntry &a, const SongEntry &b)
{
return a.m_sSongName != b.m_sSongName;
}
operator >= (const SongEntry &a, const SongEntry &b)
{
return a.m_sSongName >= b.m_sSongName;
}
operator <= (const SongEntry &a, const SongEntry &b)
{
return a.m_sSongName <= b.m_sSongName;
}
operator > (const SongEntry &a, const SongEntry &b)
{
return a.m_sSongName > b.m_sSongName;
}
operator < (const SongEntry &a, const SongEntry &b)
{
return a.m_sSongName <= b.m_sSongName;
}
#endif
SongEntry::SongEntry()
{
m_fDancePointsRequired = 0;
@@ -108,7 +74,7 @@ bool UnlockSystem::ParseRow(CString text, CString &type, float &qty,
CString &songname)
{
int pos = -1;
int end;
int end = text.GetLength(); // sets a value in case | does not exist
char unlock_type[4];
char qty_text[20];
@@ -128,6 +94,9 @@ bool UnlockSystem::ParseRow(CString text, CString &type, float &qty,
* I havn't looked at this code to see if it's a problem, but I don't want
* to simply silence the warning without being sure. (Can this just be
* a standard INI--does it actually need to be another file format?) -glenn */
// glenn: ok, i set it at the beginning.
songname = text.Right(text.GetLength() - 1 - end);
sscanf(text, "%s %s|", unlock_type, qty_text);
+10 -8
View File
@@ -1,16 +1,16 @@
#ifndef UNLOCK_SYSTEM_H
#define UNLOCK_SYSTEM_H
#include "Grade.h"
#include "grade.h"
/*
-----------------------------------------------------------------------------
Class: UnlockSystem
Desc: See header.
Desc: The unlock system for Stepmania.
Copyright (c) 2001-2003 by the person(s) listed below. All rights reserved.
Kevin Slaughter
curewater
-----------------------------------------------------------------------------
*/
enum UnlockTypes { UNLOCK_AP, UNLOCK_DP, UNLOCK_SP,
@@ -23,7 +23,8 @@ struct SongEntry
for a lot easier compatibility since a lot of people's
song folders are named differantly, song names tend to
be the same in the file.*/
float m_fDancePointsRequired; // Amount of Dance Points needed to unlock this song
float m_fDancePointsRequired; // Ways to unlock/lock songs.
float m_fArcadePointsRequired;
float m_fSongPointsRequired;
float m_fExtraStagesCleared;
@@ -32,14 +33,15 @@ struct SongEntry
float m_fToastysSeen;
int m_iRouletteSeed;
bool isLocked;
bool isLocked; // cached locked tag
SongEntry();
// if song is selectable vai two means
bool SelectableWheel();
bool SelectableRoulette();
bool updateLocked();
bool updateLocked(); //updates isLocked flag
};
@@ -51,9 +53,9 @@ public:
bool SongIsLocked( CString sSongName );
bool SongIsRoulette( CString sSongName );
bool LoadFromDATFile( CString sPath );
// bool m_bAllSongsAreUnlocked; // Quick way to check if all songs are unlocked
vector<SongEntry> m_SongEntries; // All locked songs are stored here
// functions that add to values, which don't really work.
float UnlockAddAP(Grade credit);
float UnlockAddDP(float credit);
float UnlockAddSP(Grade credit);
@@ -64,7 +66,7 @@ public:
bool UnlockRouletteSeed(int seed);
private:
void SortSongEntriesArray();
void SortSongEntriesArray(); // sorts unlocks
bool ParseRow(CString text, CString &type, float &qty, CString &songname);
};