Fission FSN
Loading...
Searching...
No Matches
gfCJigsawMinigameComponent.h
Go to the documentation of this file.
1/********************************************************************
2*
3* File: gfCJigsawMinigameComponent.h
4*
5* Purpose: Identification of JIG entities.
6*
7*********************************************************************/
8
9#ifndef gfCJigsawMinigameComponenthdr
10#define gfCJigsawMinigameComponenthdr
11
12#include <fsCore/fsPoint.h>
14
18
21
22class gfIStencil;
23class fsCBrush;
27
28
30{
31 friend class gfCJigsawCluster;
33 friend class fsCComponentFactory;
36
37public:
38
41 static const fsStr mStartSuffix;
42 static const fsCUniqueId mTypeId;
43 static const fsStr mEntityPrefix;
44
45 static void edgePiecesOnlyToggle();
46
48
49 fsBool isHintableGet() const override;
50 fsBool hintDo() override;
51
52 void gameLogicSet(gfCJigsawLogicComponent* const pParentLogic);
54 void unlink();
55 void link(fsCEntity* pParent);
56 void posSet(fsPoint const& pPos);
57
58 void bordersRegister(fsS32 pTop, fsS32 pBottom);
59
60 void cut(std::shared_ptr<fsCBrush> pTexture, gfIStencil* pStencil);
61
62protected:
63
65
66 void listenersRegisterDo() override;
67 void listenersDeregisterDo() override;
68 fsBool messageProcessDo(const fsCUniqueId& pMessageType,
69 const fsIMessageDispatcher::sMessageParameters& pParam) override;
70
71 void onTap(const fsPoint& pTapPos) override;
72 void onDragStart(const fsPoint& pStartPos) override;
73 void onDragMove(const fsPoint& pCurrPos) override;
74 void onDragEnd(const fsPoint& pEndPos) override;
75
76 void serialiseDo() override;
77 void deserialiseDo() override;
78
79 void resetDo() override;
80 void initialiseDo(const fsCVariableTable& pVars) override;
81 void skipDo() override;
82
83 fsBool acceptingInputGet() const override;
84
85 static fsIComponent* create(fsCEntity* pParent);
86
89
90private:
91
92 void droppedPiece();
93
94 gfCDrawOrderControllerComponent* const drawOrderGet() const;
95 gfCJigsawDeckComponent* const deckGet() const;
96
97 void positionRelativeTo(gfCJigsawMinigameComponent* const pPiece) const;
98
99 void pieceDrop();
100
101 void drawOrderUpdate();
102 void relink();
103
104 void moveHome();
105
106 void staticsReset();
107
108 static void homePositionRangesGet();
109
110 void moveBegin(const fsPoint& pNewDragPos);
111 void move(const fsPoint& pNewDragPos);
112
113 fsCEntity* const moveEntityGet() const;
114 void startEntitiesLocate();
115
116 void homePositonModify(const fsPoint& pAdjustment, fsBool pFirstTime);
117 void shadowCreate();
118 void shadowDestroy();
119
120 void positionRegulate(fsPoint& pDragPos) const;
121
122 void randomPositionSet(const fsCVariableTable& pVars);
123 void randomRotationSet(const fsCVariableTable& pVars);
124
125 void angleRotate();
126 void angleSet(fsBool pPosSetRelativeToRoot);
127 void positionUpdateFromDrag(const fsPoint& pDragPos);
128 void completionFinalise(fsBool pShowCompletion);
129 void completionFinalise();
130 fsBool homePositionWithinLimits();
131
132 void playSFX(const fsStr& pName) const;
133
134 static gfCJigsawMinigameComponent* const namedSiblingsGet(const fsStr& pName);
135 static std::vector<gfCJigsawMinigameComponent*> siblingssGet();
136
137 fsPoint mPrevDragPos;
138
139 fsS32 mNumRotSteps;
140 fsS32 mCurrRotStep;
141
142 fsBool mInHomePosition;
143
144 fsCEntity* mShadowEntity;
145 fsCEntity* mStartPair;
146
147 fsBool mCutFromStencil;
148
149 gfCJigsawMinigameComponent* mNextInCluster;
150 gfCJigsawMinigameComponent* mPrevInCluster;
151
152 gfCJigsawLogicComponent* mGameLogic;
153
154 gfCGhostSpriteComponent* mGhostSprite;
155 gfCGhostSpriteComponent* mOtherGhost;
156
157 static fsS32 mBorderTop;
158 static fsS32 mBorderBottom;
159 static fsPoint mMaxPos;
160 static fsPoint mMinPos;
161 static fsPoint mBaseSize;
162 static fsBool mClusteringEnabled;
163
164 class CHomePosition
165 {
166 public:
167
168 CHomePosition();
169
170 fsPoint get() const;
171 fsPoint originalHomeGet() const;
172 void set(const fsPoint& pPos);
173 void offsetSet(const fsPoint& pPos);
174 const fsPoint& offsetGet() const;
175
176 private:
177
178 fsPoint mAdjustment;
179 fsPoint mPos;
180 } mHomePosition;
181};
182
183#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
Definition gfCDrawOrderControllerComponent.h:23
Definition gfCGhostSpriteComponent.h:24
Definition gfCJigsawDeckComponent.h:18
Definition gfCJigsawLogicComponent.h:16
void unlink()
Definition gfCJigsawMinigameComponent.cpp:84
friend class gfCDrawOrderStateComponent
Definition gfCJigsawMinigameComponent.h:35
static const fsStr mEntityPrefix
Definition gfCJigsawMinigameComponent.h:43
fsBool messageProcessDo(const fsCUniqueId &pMessageType, const fsIMessageDispatcher::sMessageParameters &pParam) override
Definition gfCJigsawMinigameComponent.cpp:187
void gameLogicSet(gfCJigsawLogicComponent *const pParentLogic)
Definition gfCJigsawMinigameComponent.cpp:50
friend class fsCComponentFactory
Definition gfCJigsawMinigameComponent.h:33
static fsIComponent * create(fsCEntity *pParent)
Definition gfCJigsawMinigameComponent.cpp:791
static const fsCUniqueId mTypeId
Definition gfCJigsawMinigameComponent.h:42
void listenersDeregisterDo() override
Definition gfCJigsawMinigameComponent.cpp:248
fsBool activePickAndPlaceStartPiece() const
Definition gfCJigsawMinigameComponent.cpp:55
void listenersRegisterDo() override
Definition gfCJigsawMinigameComponent.cpp:256
gfCJigsawMinigameComponent(fsCEntity *pParent)
Definition gfCJigsawMinigameComponent.cpp:825
void deserialiseDo() override
Definition gfCJigsawMinigameComponent.cpp:547
fsBool isHintableGet() const override
Definition gfCJigsawMinigameComponent.cpp:850
friend class gfCJigsawComponentCutter
Definition gfCJigsawMinigameComponent.h:34
void skipDo() override
Definition gfCJigsawMinigameComponent.cpp:669
static void edgePiecesOnlyToggle()
Definition gfCJigsawMinigameComponent.cpp:154
static const fsStr mStartSuffix
Definition gfCJigsawMinigameComponent.h:41
void link(fsCEntity *pParent)
Definition gfCJigsawMinigameComponent.cpp:94
void onDragEnd(const fsPoint &pEndPos) override
Definition gfCJigsawMinigameComponent.cpp:360
void hintPieceAndHomeSlot()
Definition gfCJigsawMinigameComponent.cpp:630
virtual ~gfCJigsawMinigameComponent()
Definition gfCJigsawMinigameComponent.cpp:861
void cut(std::shared_ptr< fsCBrush > pTexture, gfIStencil *pStencil)
Definition gfCJigsawMinigameComponent.cpp:264
void serialiseDo() override
Definition gfCJigsawMinigameComponent.cpp:532
friend class gfCJigsawCluster
Definition gfCJigsawMinigameComponent.h:31
static const fsCUniqueId mToggleEdgesMsg
Definition gfCJigsawMinigameComponent.h:39
friend class gfCDrawOrderControllerComponent
Definition gfCJigsawMinigameComponent.h:32
void posSet(fsPoint const &pPos)
Definition gfCJigsawMinigameComponent.cpp:379
fsBool acceptingInputGet() const override
Definition gfCJigsawMinigameComponent.cpp:786
void onDragStart(const fsPoint &pStartPos) override
Definition gfCJigsawMinigameComponent.cpp:349
void bordersRegister(fsS32 pTop, fsS32 pBottom)
Definition gfCJigsawMinigameComponent.cpp:172
static fsS32 mHomePositionThreshold
Definition gfCJigsawMinigameComponent.h:64
static const fsCUniqueId mJigssawDroppedPieceMsg
Definition gfCJigsawMinigameComponent.h:40
void resetDo() override
Definition gfCJigsawMinigameComponent.cpp:636
void onTap(const fsPoint &pTapPos) override
Definition gfCJigsawMinigameComponent.cpp:278
fsBool hintDo() override
Definition gfCJigsawMinigameComponent.cpp:855
void onDragMove(const fsPoint &pCurrPos) override
Definition gfCJigsawMinigameComponent.cpp:355
gfIMinigameComponent(fsCEntity *pParent, fsBool pHandleTaps, fsBool pHandleDragEvent, fsBool pHandlePinchEvents)
Definition gfIMinigameComponent.cpp:161
Definition gfIMinigameHintable.h:16
Definition gfIStencil.h:22
bool fsBool
Definition fsBaseTypes.h:26
int fsS32
Definition fsBaseTypes.h:20
Definition fsIMessageDispatcher.h:32
Definition fsPoint.h:17