Fission FSN
Loading...
Searching...
No Matches
gfCGuestAgentSim.h
Go to the documentation of this file.
1/********************************************************************
2*
3* File: gfCGuestAgentSim.h
4*
5* Purpose: Headless visitor state machine. A visitor arrives, wanders
6* the park, may satisfy several secondary service needs, then
7* leaves. See gfCSlotSim.h.
8*
9*********************************************************************/
10
11#ifndef gfCGuestAgentSimhdr
12#define gfCGuestAgentSimhdr
13
14#include <vector>
15
16#include <fsCore/fsStr.h>
17#include <fsCore/fsBaseTypes.h>
18
20{
22 // Exploring is the primary park activity. Need and visit timers advance
23 // here; neither advances while walking to or using a service.
25 // Assigned a slot but not there yet - just a duration; presentation paces
26 // the sprite to match. Without it, service started before arrival.
32};
33
35{
36public:
37
38 gfCGuestAgentSim(const fsStr& pName, const std::vector<fsStr>& pNeedSlotTypes,
39 fsS32 pSpend, fsS32 pPatienceMs, fsS32 pVisitMs,
40 fsS32 pNeedIntervalMs, const fsStr& pType = "",
41 fsS32 pWalkingSatisfactionPercent = 60,
42 fsS32 pPartySize = 1);
43
44 const fsStr& nameGet() const { return mName; }
45
46 // The catalogue guest-type name (e.g. "familyGuest"). Identity only - the
47 // sim never interprets it; presentation maps it to character art.
48 const fsStr& typeGet() const { return mType; }
49 fsS32 partySizeGet() const { return mPartySize; }
50
51 const fsStr& needSlotTypeGet() const;
52 fsBool needReadyGet() const;
53 fsS32 needsPlannedGet() const { return mNeedsPlanned; }
56 // A complete walking visit is worthwhile on its own (60%). Each planned
57 // secondary need fulfilled contributes an even share of the remaining 40%.
60 fsS32 walkingSatisfactionPercentGet() const { return mWalkingSatisfactionPercent; }
61 void needSatisfied();
62 void needDefer();
63 fsS32 spendGet() const { return mSpend; }
64
65 // The specific slot joined (empty while exploring).
66 const fsStr& slotNameGet() const { return mSlotName; }
67 void slotNameSet(const fsStr& pSlotName) { mSlotName = pSlotName; }
68
69 fsS32 patienceRemainingMsGet() const { return mPatienceRemainingMs; }
70 fsS32 visitRemainingMsGet() const { return mVisitRemainingMs; }
71
72 eGuestSimState stateGet() const { return mState; }
73 void stateSet(eGuestSimState pState) { mState = pState; }
74
75 // Advances exploration and the timer before the next secondary need. Returns
76 // true once the visitor has completed the time they planned to spend here.
77 fsBool wanderTick(fsS32 pDeltaMs);
78
79 // Counts patience down only after committing to a queue.
80 fsBool patienceTick(fsS32 pDeltaMs);
81
82 // Travel to the assigned slot; travelTick() returns true on arrival.
83 // Presentation reads travelRemainingMsGet() to pace the walk.
84 void travelSet(fsS32 pTravelMs) { mTravelRemainingMs = pTravelMs; }
85 fsS32 travelRemainingMsGet() const { return mTravelRemainingMs; }
86 fsBool travelTick(fsS32 pDeltaMs);
87
88private:
89
90 fsStr mName;
91 fsStr mType;
92 std::vector<fsStr> mNeedSlotTypes;
93 fsS32 mNeedsPlanned;
94 fsS32 mNeedIndex;
95 fsStr mSlotName;
96 fsS32 mSpend;
97 fsS32 mPatienceMs;
98 fsS32 mPatienceRemainingMs;
99 fsS32 mVisitRemainingMs;
100 fsS32 mNeedIntervalMs;
101 fsS32 mNeedDelayRemainingMs;
102 fsS32 mWalkingSatisfactionPercent;
103 fsS32 mPartySize;
104 fsS32 mTravelRemainingMs;
105 eGuestSimState mState;
106};
107
108#endif
Definition fsStr.h:23
fsS32 needsPlannedGet() const
Definition gfCGuestAgentSim.h:53
const fsStr & needSlotTypeGet() const
Definition gfCGuestAgentSim.cpp:26
fsS32 visitSatisfactionPercentGet() const
Definition gfCGuestAgentSim.cpp:53
fsS32 patienceRemainingMsGet() const
Definition gfCGuestAgentSim.h:69
void walkingSatisfactionPercentSet(fsS32 pPercent)
Definition gfCGuestAgentSim.cpp:63
fsBool travelTick(fsS32 pDeltaMs)
Definition gfCGuestAgentSim.cpp:104
fsBool wanderTick(fsS32 pDeltaMs)
Definition gfCGuestAgentSim.cpp:115
void stateSet(eGuestSimState pState)
Definition gfCGuestAgentSim.h:73
const fsStr & typeGet() const
Definition gfCGuestAgentSim.h:48
void travelSet(fsS32 pTravelMs)
Definition gfCGuestAgentSim.h:84
fsS32 partySizeGet() const
Definition gfCGuestAgentSim.h:49
const fsStr & slotNameGet() const
Definition gfCGuestAgentSim.h:66
fsBool patienceTick(fsS32 pDeltaMs)
Definition gfCGuestAgentSim.cpp:127
fsS32 travelRemainingMsGet() const
Definition gfCGuestAgentSim.h:85
fsS32 needsRemainingGet() const
Definition gfCGuestAgentSim.cpp:41
const fsStr & nameGet() const
Definition gfCGuestAgentSim.h:44
fsS32 walkingSatisfactionPercentGet() const
Definition gfCGuestAgentSim.h:60
void needDefer()
Definition gfCGuestAgentSim.cpp:90
eGuestSimState stateGet() const
Definition gfCGuestAgentSim.h:72
fsS32 visitRemainingMsGet() const
Definition gfCGuestAgentSim.h:70
fsBool needReadyGet() const
Definition gfCGuestAgentSim.cpp:36
gfCGuestAgentSim(const fsStr &pName, const std::vector< fsStr > &pNeedSlotTypes, fsS32 pSpend, fsS32 pPatienceMs, fsS32 pVisitMs, fsS32 pNeedIntervalMs, const fsStr &pType="", fsS32 pWalkingSatisfactionPercent=60, fsS32 pPartySize=1)
Definition gfCGuestAgentSim.cpp:3
fsS32 spendGet() const
Definition gfCGuestAgentSim.h:63
void needSatisfied()
Definition gfCGuestAgentSim.cpp:79
void slotNameSet(const fsStr &pSlotName)
Definition gfCGuestAgentSim.h:67
fsS32 needsSatisfiedGet() const
Definition gfCGuestAgentSim.cpp:47
eGuestSimState
Definition gfCGuestAgentSim.h:20
@ eARRIVING
Definition gfCGuestAgentSim.h:21
@ eQUEUEING
Definition gfCGuestAgentSim.h:28
@ eLEAVING_HAPPY
Definition gfCGuestAgentSim.h:30
@ eWANDERING
Definition gfCGuestAgentSim.h:24
@ eLEAVING_UNHAPPY
Definition gfCGuestAgentSim.h:31
@ eWALKING
Definition gfCGuestAgentSim.h:27
@ eBEING_SERVED
Definition gfCGuestAgentSim.h:29
bool fsBool
Definition fsBaseTypes.h:26
int fsS32
Definition fsBaseTypes.h:20