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 // Reads home and rotation to aim its drags - the drop still goes through input.
37 friend class gfCAutoTestAim;
38
39public:
40
43 static const fsStr mStartSuffix;
44 static const fsCUniqueId mTypeId;
45 static const fsStr mEntityPrefix;
46
47 static void edgePiecesOnlyToggle();
48
50
51 fsBool isHintableGet() const override;
52 fsBool hintDo() override;
53
54 void gameLogicSet(gfCJigsawLogicComponent* const pParentLogic);
56 void unlink();
57 void link(fsCEntity* pParent);
58 void posSet(fsPoint const& pPos);
59
60 void bordersRegister(fsS32 pTop, fsS32 pBottom);
61
62 void cut(std::shared_ptr<fsCBrush> pTexture, gfIStencil* pStencil);
63
64protected:
65
67
68 void listenersRegisterDo() override;
69 void listenersDeregisterDo() override;
70 fsBool messageProcessDo(const fsCUniqueId& pMessageType,
71 const fsIMessageDispatcher::sMessageParameters& pParam) override;
72
73 void onTap(const fsPoint& pTapPos) override;
74 void onDragStart(const fsPoint& pStartPos) override;
75 void onDragMove(const fsPoint& pCurrPos) override;
76 void onDragEnd(const fsPoint& pEndPos) override;
77
78 void serialiseDo() override;
79 void deserialiseDo() override;
80
81 void resetDo() override;
82 void initialiseDo(const fsCVariableTable& pVars) override;
83 void skipDo() override;
84
85 fsBool acceptingInputGet() const override;
86
87 static fsIComponent* create(fsCEntity* pParent);
88
91
92private:
93
94 void droppedPiece();
95
96 gfCDrawOrderControllerComponent* const drawOrderGet() const;
97 gfCJigsawDeckComponent* const deckGet() const;
98
99 void positionRelativeTo(gfCJigsawMinigameComponent* const pPiece) const;
100
101 void pieceDrop();
102
103 void drawOrderUpdate();
104 void relink();
105
106 void moveHome();
107
108 void staticsReset();
109
110 static void homePositionRangesGet();
111
112 void moveBegin(const fsPoint& pNewDragPos);
113 void move(const fsPoint& pNewDragPos);
114
115 fsCEntity* const moveEntityGet() const;
116 void startEntitiesLocate();
117
118 void homePositonModify(const fsPoint& pAdjustment, fsBool pFirstTime);
119 void shadowCreate();
120 void shadowDestroy();
121
122 void positionRegulate(fsPoint& pDragPos) const;
123
124 void randomPositionSet(const fsCVariableTable& pVars);
125 void randomRotationSet(const fsCVariableTable& pVars);
126
127 void angleRotate();
128 void angleSet(fsBool pPosSetRelativeToRoot);
129 void positionUpdateFromDrag(const fsPoint& pDragPos);
130 void completionFinalise(fsBool pShowCompletion);
131 void completionFinalise();
132 fsBool homePositionWithinLimits();
133
134 void playSFX(const fsStr& pName) const;
135
136 static gfCJigsawMinigameComponent* const namedSiblingsGet(const fsStr& pName);
137 static std::vector<gfCJigsawMinigameComponent*> siblingssGet();
138
139 fsPoint mPrevDragPos;
140
141 fsS32 mNumRotSteps;
142 fsS32 mCurrRotStep;
143
144 fsBool mInHomePosition;
145
146 fsCEntity* mShadowEntity;
147 fsCEntity* mStartPair;
148
149 fsBool mCutFromStencil;
150
151 gfCJigsawMinigameComponent* mNextInCluster;
152 gfCJigsawMinigameComponent* mPrevInCluster;
153
154 gfCJigsawLogicComponent* mGameLogic;
155
156 gfCGhostSpriteComponent* mGhostSprite;
157 gfCGhostSpriteComponent* mOtherGhost;
158
159 static fsS32 mBorderTop;
160 static fsS32 mBorderBottom;
161 static fsPoint mMaxPos;
162 static fsPoint mMinPos;
163 static fsPoint mBaseSize;
164 static fsBool mClusteringEnabled;
165
166 class CHomePosition
167 {
168 public:
169
170 CHomePosition();
171
172 fsPoint get() const;
173 fsPoint originalHomeGet() const;
174 void set(const fsPoint& pPos);
175 void offsetSet(const fsPoint& pPos);
176 const fsPoint& offsetGet() const;
177
178 private:
179
180 fsPoint mAdjustment;
181 fsPoint mPos;
182 } mHomePosition;
183};
184
185#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:45
friend class gfCAutoTestAim
Definition gfCJigsawMinigameComponent.h:37
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:44
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:43
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:41
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:66
static const fsCUniqueId mJigssawDroppedPieceMsg
Definition gfCJigsawMinigameComponent.h:42
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