2002-11-16 08:07:38 +00:00
|
|
|
#ifndef COURSE_H
|
|
|
|
|
#define COURSE_H
|
2002-06-14 22:25:22 +00:00
|
|
|
/*
|
|
|
|
|
-----------------------------------------------------------------------------
|
2002-07-27 19:29:51 +00:00
|
|
|
Class: Course
|
2002-06-14 22:25:22 +00:00
|
|
|
|
|
|
|
|
Desc: A queue of songs and notes.
|
|
|
|
|
|
|
|
|
|
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
|
|
|
|
Chris Danford
|
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#include "GameConstantsAndTypes.h"
|
2002-12-17 05:41:04 +00:00
|
|
|
|
2002-07-28 20:28:37 +00:00
|
|
|
struct PlayerOptions;
|
|
|
|
|
struct SongOptions;
|
2002-06-14 22:25:22 +00:00
|
|
|
class Song;
|
|
|
|
|
struct Notes;
|
|
|
|
|
|
|
|
|
|
class Course
|
|
|
|
|
{
|
2002-12-17 05:30:10 +00:00
|
|
|
int m_iStages;
|
2002-12-17 05:16:33 +00:00
|
|
|
|
2002-12-17 05:41:04 +00:00
|
|
|
struct course_entry {
|
|
|
|
|
CString description;
|
|
|
|
|
CString modifiers; // set player and song options from these
|
|
|
|
|
Song *song;
|
|
|
|
|
};
|
|
|
|
|
vector<course_entry> entries;
|
|
|
|
|
vector<int> order;
|
|
|
|
|
|
2002-06-14 22:25:22 +00:00
|
|
|
public:
|
2002-12-17 05:07:56 +00:00
|
|
|
Course();
|
2002-06-14 22:25:22 +00:00
|
|
|
|
|
|
|
|
CString m_sName;
|
|
|
|
|
CString m_sBannerPath;
|
|
|
|
|
CString m_sCDTitlePath;
|
2002-12-17 05:16:33 +00:00
|
|
|
|
2002-07-02 17:34:20 +00:00
|
|
|
bool m_bRepeat; // repeat after last song?
|
2002-07-29 03:06:55 +00:00
|
|
|
bool m_bRandomize; // play the songs in a random order
|
2002-07-27 19:29:51 +00:00
|
|
|
int m_iLives; // -1 means use bar life meter
|
2002-07-31 04:06:34 +00:00
|
|
|
int m_iExtra; // extra stage number...
|
2002-07-02 17:34:20 +00:00
|
|
|
|
2002-12-17 05:16:33 +00:00
|
|
|
Notes *GetNotesForStage( int iStage );
|
2002-12-17 05:23:45 +00:00
|
|
|
Song *GetSong( int iStage ) const;
|
|
|
|
|
CString GetDescription( int iStage ) const;
|
|
|
|
|
CString GetModifiers( int iStage ) const;
|
2002-07-28 20:28:37 +00:00
|
|
|
void GetPlayerOptions( PlayerOptions* pPO_out );
|
|
|
|
|
void GetSongOptions( SongOptions* pSO_out);
|
2002-12-17 05:23:45 +00:00
|
|
|
int GetNumStages() const;
|
2002-06-14 22:25:22 +00:00
|
|
|
|
2003-01-03 05:56:28 +00:00
|
|
|
void LoadFromCRSFile( CString sPath, vector<Song*> &apSongs );
|
|
|
|
|
void CreateEndlessCourseFromGroupAndDifficulty( CString sGroupName, Difficulty dc, vector<Song*> &apSongsInGroup );
|
2002-12-17 05:07:56 +00:00
|
|
|
void AddStage( Song* pSong, CString sDescription, CString sModifiers );
|
2002-06-14 22:25:22 +00:00
|
|
|
|
2003-01-03 05:56:28 +00:00
|
|
|
void GetSongAndNotesForCurrentStyle( vector<Song*>& apSongsOut, vector<Notes*>& apNotesOut, CStringArray& asModifiersOut, bool bShuffled );
|
2002-10-28 05:30:45 +00:00
|
|
|
RageColor GetColor();
|
2002-09-04 03:29:42 +00:00
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
void Shuffle();
|
2002-06-14 22:25:22 +00:00
|
|
|
};
|
2002-07-27 19:29:51 +00:00
|
|
|
|
|
|
|
|
|
2003-01-03 05:56:28 +00:00
|
|
|
void SortCoursePointerArrayByDifficulty( vector<Course*> &apCourses );
|
2002-07-27 19:29:51 +00:00
|
|
|
|
2002-11-16 08:07:38 +00:00
|
|
|
|
|
|
|
|
#endif
|