Fission FSN
Loading...
Searching...
No Matches
fsIRunningOrder.h
Go to the documentation of this file.
1/********************************************************************
2*
3* File: fsIRunningOrder.h
4*
5* Purpose: Interface for level running order
6*
7*********************************************************************/
8
9#ifndef fsIRunningOrderhdr
10#define fsIRunningOrderhdr
11
12#include <map>
13#include <vector>
14
15#include <fsCore/fsBaseTypes.h>
17#include <fsCore/src/fsCVariableTable.h> // VarTableMap
18
19
21{
22public:
23
24 // The navigation token a HOG running order puts before map-first scenes;
25 // shared here (not just in gfCHogRunningOrder) because the `.gui` path
26 // re-derives it into mSequence to reproduce the legacy list exactly.
28
29 void replace(const std::vector<fsStr>& pNewOrder);
30 const std::vector<fsStr>& rawSequenceGet() const { return mSequence; }
31
32 // True when the sequence came from a consolidated runningOrder.gui (so
33 // per-scene config is served from the resolved subtree, not <scene>.txt).
34 fsBool guiModeGet() const { return mGuiMode; }
35 // Resolved config for a scene by its bare name, or nullptr if the scene
36 // isn't part of the `.gui` running order (legacy mode always returns null).
37 const VarTableMap* resolvedSceneConfigGet(const fsStr& pSceneName) const;
38
39 fsS32 levelCountGet() const;
40 fsS32 currLevelPosGet() const;
41
42 const fsStr& firstLocationGet() const;
43 void gameContinue();
44 void newGameStart();
45 void singleLevel();
46
47 const fsStr& nextLocationGet() const;
48 void levelCompleteSet();
49 void nextLocationSet(const fsStr& pNextLocation);
50 fsStr nextLocationGet(const fsStr& pCurrentLocation) const;
52 void nextLocationClear();
53
54 // pMapNavigationUsed: HOG genres re-derive the `map->` prefix into the
55 // sequence when reading a `.gui`; the park/time genre leaves scenes bare.
56 fsIRunningOrder(const fsCResourceName& pFilename, fsBool pMapNavigationUsed = false);
57 virtual ~fsIRunningOrder();
58
59protected:
60
61 fsBool loopsCheck() const;
62 void sequenceCheck();
63
64 virtual void sequenceCheckDo() const;
65 virtual std::vector<fsStr>::const_iterator currentLevelIteratorGetDo(const fsStr& pCurrentLocation) const;
66 virtual void nextLocationSetDo(const fsStr& pNextLocation);
67 virtual void newGameStartDo();
68 virtual fsStr nextLocationGetDo(const fsStr& pCurrentLocation) const;
69 virtual void gameContinueDo() = 0;
70 virtual void replaceDo(const std::vector<fsStr>& pNewOrder) = 0;
71
72 std::vector<fsStr>::const_iterator currentLevelIteratorGet(const fsStr& pCurrentLocation) const;
73
74 std::vector<fsStr> mSequence;
78
79private:
80
81 // Read+resolve a runningOrder.gui into mSequence (map-first scenes carry
82 // mMapDestinationPrefix when pMapNavigationUsed) and mResolvedConfigs.
83 void guiSequenceLoad(const fsCResourceName& pResolvedFile, fsBool pMapNavigationUsed);
84
85 fsBool mGuiMode = false;
86 std::map<fsStr, VarTableMap> mResolvedConfigs; // keyed by bare scene name
87};
88
89#endif
Definition fsCResourceName.h:32
fsBool mHasLoops
Definition fsIRunningOrder.h:77
fsS32 levelCountGet() const
Definition fsIRunningOrder.cpp:25
static const fsStr mMapDestinationPrefix
Definition fsIRunningOrder.h:27
std::vector< fsStr >::const_iterator currentLevelIteratorGet(const fsStr &pCurrentLocation) const
Definition fsIRunningOrder.cpp:69
fsStr mNextLocation
Definition fsIRunningOrder.h:76
fsBool guiModeGet() const
Definition fsIRunningOrder.h:34
void singleLevel()
Definition fsIRunningOrder.cpp:95
fsIRunningOrder(const fsCResourceName &pFilename, fsBool pMapNavigationUsed=false)
Definition fsIRunningOrder.cpp:190
const fsStr & firstLocationGet() const
Definition fsIRunningOrder.cpp:35
fsS32 currLevelPosGet() const
Definition fsIRunningOrder.cpp:30
void nextLocationSet(const fsStr &pNextLocation)
Definition fsIRunningOrder.cpp:121
void gameContinue()
Definition fsIRunningOrder.cpp:100
virtual void newGameStartDo()
Definition fsIRunningOrder.cpp:110
virtual ~fsIRunningOrder()
Definition fsIRunningOrder.cpp:212
virtual void nextLocationSetDo(const fsStr &pNextLocation)
Definition fsIRunningOrder.cpp:126
const std::vector< fsStr > & rawSequenceGet() const
Definition fsIRunningOrder.h:30
fsBool loopsCheck() const
Definition fsIRunningOrder.cpp:131
void replace(const std::vector< fsStr > &pNewOrder)
Definition fsIRunningOrder.cpp:20
virtual std::vector< fsStr >::const_iterator currentLevelIteratorGetDo(const fsStr &pCurrentLocation) const
Definition fsIRunningOrder.cpp:74
virtual void replaceDo(const std::vector< fsStr > &pNewOrder)=0
void nextLocationClear()
Definition fsIRunningOrder.cpp:40
virtual void gameContinueDo()=0
std::vector< fsStr > mSequence
Definition fsIRunningOrder.h:74
void levelCompleteSet()
Definition fsIRunningOrder.cpp:84
virtual void sequenceCheckDo() const
Definition fsIRunningOrder.cpp:144
const fsStr & nextLocationGet() const
Definition fsIRunningOrder.cpp:116
fsBool nextLocationReady() const
Definition fsIRunningOrder.cpp:46
void newGameStart()
Definition fsIRunningOrder.cpp:105
const VarTableMap * resolvedSceneConfigGet(const fsStr &pSceneName) const
Definition fsIRunningOrder.cpp:162
virtual fsStr nextLocationGetDo(const fsStr &pCurrentLocation) const
Definition fsIRunningOrder.cpp:56
fsStr mCurrentLocation
Definition fsIRunningOrder.h:75
void sequenceCheck()
Definition fsIRunningOrder.cpp:137
Definition fsStr.h:23
std::map< fsStr, fsStr > VarTableMap
Definition fsCVariableTable.h:23
bool fsBool
Definition fsBaseTypes.h:26
int fsS32
Definition fsBaseTypes.h:20