Fission FSN
Loading...
Searching...
No Matches
gfCSimpleLevelComponent.h
Go to the documentation of this file.
1/********************************************************************
2*
3* File: fsCHogLevel.h
4*
5* Purpose: Create and control game entities.
6*
7*********************************************************************/
8
9#ifndef gfCSimpleLevelComponenthdr
10#define gfCSimpleLevelComponenthdr
11
12#include <vector>
13
14#include <fsCore/fsStr.h>
15
16#include "../gfIHogLevel.h"
19
21{
22 friend class fsCComponentFactory;
23
24public:
25
26 static const fsCUniqueId mTypeId;
27
29
30
31 void listenersDeregisterDo() override;
32 void listenersRegisterDo() override;
33 fsBool messageProcessDo(const fsCUniqueId& pMessageType,
34 const fsIMessageDispatcher::sMessageParameters& pParam) override;
35
36
37protected:
38
39 static fsIComponent* create(fsCEntity* pParent);
40
41 void skipDo() override;
42
43 void updateDo(fsS32 pDeltaMs) override;
44 void renderDo() override;
45
46 virtual void actAdvance();
48
49 virtual void levelResetDo();
50 void abortDo() override;
51
52 void doLevelCreate() override;
53
56
57private:
58
59 template<typename TLogic, typename TMinigame>
60 void minigameLogicAdd(std::vector<gfIMinigameLogic*>& pLogicEntities);
61 template<typename TLogic>
62 void minigameLogicAdd(std::vector<gfIMinigameLogic*>& pLogicEntities, const fsStr& pEntityName = "");
63
64 fsBool devCheatKeyTest(fsS32 pTypedChar);
65 fsBool releaseCheatKeyTest(fsS32 pTypedChar);
66
67 void tutorialAdd();
68
69 void levelReset();
70
71 void reset();
72
73 void miniGameLogicComponentsAdd();
74
75 void actCompleteHandle();
76 fsBool levelSkippedForAnalytics() const;
77 fsS32 adFreeLevelCountGet() const;
78 fsS32 rewardPackSizeGet() const;
79 fsS32 rewardTailGraceCountGet() const;
80 fsS32 rewardUnlockedLevelCountGet(fsS32 pTotalLevels) const;
81 void rewardUnlockedLevelCountSet(fsS32 pUnlockedCount) const;
82 fsBool rewardGateRequiredForNextLevel() const;
83 void rewardUnlockGrantForCurrentBoundary();
84 fsBool interstitialAllowedForCurrentLevel() const;
85 void rewardGatePaywallShow();
86
87 fsBool typedCharacterHandle(fsS32 pTypedChar);
88
89
90 fsBool mResetDuringFade;
91 fsBool mPendingInterstitialOnFadeOut;
92 fsBool mRewardGatePending;
93 fsBool mPaywallDestroyOnFadeOut;
94 fsBool mSkipInterstitialOnce;
95 fsBool mLevelSkippedForAnalytics;
96};
97
98// Always add/collect the logic, using its full construction plan when an entity name is supplied.
99template<typename TLogic>
100void gfCSimpleLevelComponent::minigameLogicAdd(std::vector<gfIMinigameLogic*>& logicEntities,
101 const fsStr& entityName)
102{
103 auto* parent = parentGet();
104 auto* logicEntity = parent->firstChildEntityWithComponentsOfFamilyType<TLogic>();
105
106 if (!logicEntity)
107 {
108 if (entityName.emptyGet())
109 {
110 logicEntity = parent->entityFactoryGet()->emptyEntityCreate("minigameLogic");
111 logicEntity->template componentAdd<TLogic>();
112 }
113 else
114 {
115 logicEntity = parent->entityFactoryGet()->entityConstruct(entityName);
116 }
117 parent->childAdd(logicEntity);
118 }
119
120 auto* logic = logicEntity->template firstComponentOfFamilyType<TLogic>();
121
122 if (std::find(logicEntities.begin(), logicEntities.end(), logic) == logicEntities.end())
123 {
124 logicEntities.push_back(logic);
125 }
126}
127
128// Add/collect the logic only when the minigame exists.
129template<typename TLogic, typename TMinigame>
130void gfCSimpleLevelComponent::minigameLogicAdd(std::vector<gfIMinigameLogic*>& logicEntities)
131{
132 if (!parentGet()->template firstChildEntityWithComponentsOfFamilyType<TMinigame>())
133 {
134 return;
135 }
136
137 minigameLogicAdd<TLogic>(logicEntities);
138}
139#endif
Definition fsCEntity.h:39
Definition fsCUniqueId.h:21
fsIComponent(fsCEntity *pParent)
Definition fsIComponent.cpp:86
void reset()
Definition fsIComponent.cpp:16
Definition fsStr.h:23
fsBool emptyGet() const
Definition fsStr.h:45
gfCSimpleLevelComponent(fsCEntity *pParent)
Definition gfCSimpleLevelComponent.cpp:801
static fsIComponent * create(fsCEntity *pParent)
Definition gfCSimpleLevelComponent.cpp:795
void abortDo() override
Definition gfCSimpleLevelComponent.cpp:327
friend class fsCComponentFactory
Definition gfCSimpleLevelComponent.h:22
fsBool messageProcessDo(const fsCUniqueId &pMessageType, const fsIMessageDispatcher::sMessageParameters &pParam) override
Definition gfCSimpleLevelComponent.cpp:378
void doLevelCreate() override
Definition gfCSimpleLevelComponent.cpp:756
void skipDo() override
Definition gfCSimpleLevelComponent.cpp:242
static const fsCUniqueId mTypeId
Definition gfCSimpleLevelComponent.h:26
static const fsCUniqueId mLevelSkippedMsg
Definition gfCSimpleLevelComponent.h:28
virtual void actAdvance()
Definition gfCSimpleLevelComponent.cpp:572
void updateDo(fsS32 pDeltaMs) override
Definition gfCSimpleLevelComponent.cpp:75
void listenersDeregisterDo() override
Definition gfCSimpleLevelComponent.cpp:336
virtual void levelResetDo()
Definition gfCSimpleLevelComponent.cpp:80
void listenersRegisterDo() override
Definition gfCSimpleLevelComponent.cpp:357
virtual fsStr rewardSequencFileNameGetIfActive()
Definition gfCSimpleLevelComponent.cpp:532
virtual ~gfCSimpleLevelComponent()
Definition gfCSimpleLevelComponent.cpp:812
void renderDo() override
Definition gfCSimpleLevelComponent.cpp:70
fsCEntity *const parentGet() const
Definition gfIHogLevel.cpp:134
gfIHogLevel(fsCEntity *pParent)
Definition gfIHogLevel.cpp:498
bool fsBool
Definition fsBaseTypes.h:26
int fsS32
Definition fsBaseTypes.h:20
Definition fsIMessageDispatcher.h:32