Fission FSN
Loading...
Searching...
No Matches
gfCSlidasquareMinigameComponent.h
Go to the documentation of this file.
1/********************************************************************
2*
3* File: gfCSlidasquareMinigameComponent.h
4*
5* Purpose: Sliding squares mini game
6*
7*********************************************************************/
8
9#ifndef gfCSlidasquareMinigameComponenthdr
10#define gfCSlidasquareMinigameComponenthdr
11
12#include <algorithm>
13
15
16class gfIStencil;
17class fsCBrush;
18
19
21{
22 friend class fsCComponentFactory;
23
24public:
25
26 static const fsStr mCloneName;
27 static const fsCUniqueId mTypeId;
28 static const fsStr mEntityPrefix;
29
30 void cut(std::shared_ptr<fsCBrush> pTexture, gfIStencil* pStencil);
31
32protected:
33
34 fsBool homeGet() const override;
35 fsBool fullHomeLock() const override;
36
37 void listenersDeregisterDo() override;
38 void listenersRegisterDo() override;
39 fsBool messageProcessDo(const fsCUniqueId& pMessageType,
40 const fsIMessageDispatcher::sMessageParameters& pParam) override;
41
42 void updateDo(fsS32 pDeltaMs) override;
43
44 void tileSlide(fsS32 pDeltaMs);
45
46 void serialiseDo() override;
47 void deserialiseDo() override;
48
49 void resetDo() override;
50 void initialiseDo(const fsCVariableTable& pVars) override;
51 void skipDo() override;
52
53 fsBool acceptingInputGet() const override;
54
55 static fsIComponent* create(fsCEntity* pParent);
56
59
60private:
61
62 void tileSlideInstantly(const fsPoint& pPos);
63
64 void gameTypeSet(const fsStr& pGameType);
65
66 typedef fsBool (gfCSlidasquareMinigameComponent::*fsTSortMemFnc)(gfCSlidasquareMinigameComponent* pSlida) const;
67 typedef fsBool (gfCSlidasquareMinigameComponent::*fsTMatchMemFnc)(const fsPoint& pPos) const;
68
69 fsBool rowOrder(gfCSlidasquareMinigameComponent* pSlida) const;
70 fsBool columnOrder(gfCSlidasquareMinigameComponent* pSlida) const;
71 fsBool sameRowGet(const fsPoint& pPos) const;
72 fsBool sameColumnGet(const fsPoint& pPos) const;
73
74 fsCEntity* const wrapRoundTileClone();
75 std::vector<gfCSlidasquareMinigameComponent*> stackCollate(fsTMatchMemFnc pMatch, fsTSortMemFnc pSort,
76 fsS32 pDirection);
77 void stackTargetPositionsSet(std::vector<gfCSlidasquareMinigameComponent*>& pStack, fsBool pImmediate);
78
79 void columnSlide(fsS32 pDirection, fsBool pImmediate);
80 void rowSlide(fsS32 pDirection, fsBool pImmediate);
81
82 void slide(const fsPoint& pTapPos, fsBool pImmediate);
83
84 static fsBool holeAdjacent(fsCEntity* pEnt);
85 static void staticsInit(fsS32 pHoleID);
86
87 void randomize();
88
89 void completedCheck();
90
91 std::vector<gfCSlidasquareMinigameComponent*> slidaComponentsGet(fsBool pIncludeClones);
92
93 enum eGameType
94 {
95 eTRADITIONAL_SLIDA,
96 eROW_SLIDE,
97 eCOLUMN_SLIDE,
98 eROW_AND_COLUMN_SLIDE
99 };
100
101
102 fsPoint mHomePosition;
103 fsPoint mTargetPosition;
104
105 static fsBool mCompleted;
106 static fsS32 mHoleID;
107 static fsS32 mSpeed;
108 static eGameType mGameType;
109 static fsCEntity* mHole;
110 static fsCEntity* mSlida;
111
112 static const fsS32 mHoleIDNotSet;
113 static const fsS32 mNoHole;
114};
115
116#endif
Definition fsCBrush.h:26
Definition fsCEntity.h:39
Definition fsCUniqueId.h:21
Definition fsCVariableTable.h:27
Definition fsIComponent.h:26
virtual void initialiseDo()
Definition fsIComponent.h:71
Definition fsStr.h:23
gfCRotateMinigameComponent(fsCEntity *pParent)
Definition gfCRotateMinigameComponent.cpp:264
void deserialiseDo() override
Definition gfCSlidasquareMinigameComponent.cpp:392
fsBool acceptingInputGet() const override
Definition gfCSlidasquareMinigameComponent.cpp:578
fsBool fullHomeLock() const override
Definition gfCSlidasquareMinigameComponent.cpp:292
friend class fsCComponentFactory
Definition gfCSlidasquareMinigameComponent.h:22
fsBool homeGet() const override
Definition gfCSlidasquareMinigameComponent.cpp:297
void listenersRegisterDo() override
Definition gfCSlidasquareMinigameComponent.cpp:184
gfCSlidasquareMinigameComponent(fsCEntity *pParent)
Definition gfCSlidasquareMinigameComponent.cpp:588
void listenersDeregisterDo() override
Definition gfCSlidasquareMinigameComponent.cpp:176
void skipDo() override
Definition gfCSlidasquareMinigameComponent.cpp:559
virtual ~gfCSlidasquareMinigameComponent()
Definition gfCSlidasquareMinigameComponent.cpp:595
static const fsStr mEntityPrefix
Definition gfCSlidasquareMinigameComponent.h:28
void resetDo() override
Definition gfCSlidasquareMinigameComponent.cpp:450
void serialiseDo() override
Definition gfCSlidasquareMinigameComponent.cpp:378
static const fsStr mCloneName
Definition gfCSlidasquareMinigameComponent.h:26
fsBool messageProcessDo(const fsCUniqueId &pMessageType, const fsIMessageDispatcher::sMessageParameters &pParam) override
Definition gfCSlidasquareMinigameComponent.cpp:192
void updateDo(fsS32 pDeltaMs) override
Definition gfCSlidasquareMinigameComponent.cpp:240
static fsIComponent * create(fsCEntity *pParent)
Definition gfCSlidasquareMinigameComponent.cpp:583
void tileSlide(fsS32 pDeltaMs)
Definition gfCSlidasquareMinigameComponent.cpp:302
void cut(std::shared_ptr< fsCBrush > pTexture, gfIStencil *pStencil)
Definition gfCSlidasquareMinigameComponent.cpp:229
static const fsCUniqueId mTypeId
Definition gfCSlidasquareMinigameComponent.h:27
Definition gfIStencil.h:22
bool fsBool
Definition fsBaseTypes.h:26
int fsS32
Definition fsBaseTypes.h:20
Definition fsIMessageDispatcher.h:32
Definition fsPoint.h:17