Fission FSN
Loading...
Searching...
No Matches
gfCWordSearchMinigameLogicComponent.h
Go to the documentation of this file.
1/********************************************************************
2*
3* Created: 13/1/2015 14:34
4*
5* File: gfCWordSearchMinigameLoaderComponent.h
6*
7* Author: Martin P. King
8*
9* Purpose: Logic for word search - control grid of
10* fsCWordSearchMinigameComponents
11*
12*********************************************************************/
13
14#ifndef gfCWordSearchMinigameLoaderComponenthdr
15#define gfCWordSearchMinigameLoaderComponenthdr
16
17#include <fsCore/fsPoint.h>
18#include <fsCore/fsGrid.h>
19#include <fsCore/fsSColour.h>
20
22
24
25class fsCResourceName;
29
30
32{
33 friend class fsCComponentFactory;
34
35public:
36
41
42 static const fsCUniqueId mTypeId;
43 static const fsStr mEntityPrefix;
44 static const fsStr mSelectionPrefix;
45
47
48 std::vector<fsCEntity*> selectedWordsGet() const;
49
50 void wordSelected();
53 void tileTap(const fsPoint& pTapPos);
54
55 fsStr tileSetGet() const { return mTileSet; }
56
59
61
62protected:
63
64 void skipDo() override;
65
66 void listenersRegisterDo() override;
67 void listenersDeregisterDo() override;
68 fsBool messageProcessDo(const fsCUniqueId& pMessageType,
69 const fsIMessageDispatcher::sMessageParameters& pParam) override;
70
71 void resetDo() override;
72 void deserialiseDo() override;
73 void serialiseDo() override;
74
75 void initialiseFromVariableTableDo(const fsCVariableTable& pVars) override;
76
77 static fsIComponent* create(fsCEntity* pParent);
78
80
81private:
82
83 struct fsSSelection
84 {
85 fsStr mWord = {""};
86 std::vector<fsCEntity*> mLines;
87 std::vector<gfCMinigameLetterTileComponent*> mTiles;
88 std::vector<fsPoint> mGridPoints;
89
90 fsSSelection() = default;
91 ~fsSSelection() = default;
92
93 fsBool empty() const;
94 void tilesTint(fsSColour4B const& pTint);
95 void clear();
96 };
97
98 static const fsSColour4B mTileTint;
99
100 std::vector<fsPoint> selectionLineSmooth(fsSSelection& pSelection);
101 void selectionLineCreate(fsSSelection& pSelection, fsSColour4B const& pTint);
102 void checkWords();
103
104 void snakeWordSelect(fsPoint const& pTapPos);
105 fsBool legalSnakeWord(const fsPoint& pTapPos);
106
107 void tilesSelectionHighlight(fsPoint tileAlignedStart, fsPoint tileAlignedEnd);
108
109 void gridInit(std::vector<std::vector<fsStr>>& pTileGrid, fsPoint const& pOrigin, fsPoint const& pGridDimensions);
110 fsStr wordCandidate();
111
112 void selectionAdjust(fsCEntity* pSelection, fsPoint const& pStart, fsPoint const& pEnd);
113 fsCEntity* selectionSpriteCreate(fsSSelection& pSelection, const fsCResourceName& pBrushName,fsSColour4B const& pTint);
114 void selectionSegmentCreate(fsSSelection& pSelection, fsPoint const& pStart, fsPoint const& pEnd, fsSColour4B const& pTint);
115 void selectionCapAdjust(fsCEntity* pSelection, fsPoint const& pPos, fsF32 pAngle);
116 fsPoint selectionCapOffsetGet(fsCEntity* pSelection, fsPoint const& pStart, fsPoint const& pEnd) const;
117 fsPoint selectionEndConstrainedGet(fsPoint const& pStart, fsPoint const& pEnd) const;
118 fsBool selectionDiagonalGet(fsPoint const& pSize) const;
119 fsF32 selectionAngleGet(fsPoint const& pStart, fsPoint const& pEnd) const;
120 fsBool selection2Available() const;
121
122
123 gfCMinigameLetterTileComponent* const tileComponentGet(fsCEntity* pEnt);
124 gfCMinigameLetterTileComponent* const tileCreate(fsPoint const& pGridPos,
125 std::vector<std::vector<fsStr>>& pLoadingLetterGrid);
126
127 void selectionsClear();
128 void selectionRecreate(fsStr& pSelectedWord);
129 void selectionsRecreate();
130 fsBool wordFindInGrid(fsSSelection& pSelection);
131
132 void wordsEntitiesGenerate();
133
134 static const fsStr mSelectionChunkMarker;
135
136 fsStr mTileSet = {""};
137 fsBool mMaze = {false};
138
139 fsGrid<gfCMinigameLetterTileComponent*> mTileGrid;
140 std::vector<fsStr> mHiddenWords;
141
142 fsSSelection mHintSelection;
143 fsSSelection mActiveSelection;
144
145 std::vector<std::unique_ptr<fsSSelection>> mFoundWords;
146
147 std::unique_ptr<fsCResourceName> mHilight;
148 std::unique_ptr<fsCResourceName> mHilight2;
149 std::unique_ptr<fsCResourceName> mHilight2End;
150};
151
152
153#endif
Definition fsCEntity.h:39
Definition fsCResourceName.h:32
Definition fsCUniqueId.h:21
Definition fsCVariableTable.h:27
Definition fsIComponent.h:26
Definition fsStr.h:23
Definition gfCMazeMinigameGenerateComponent.h:21
Definition gfCMinigameLetterTileComponent.h:20
Definition gfCWordSearchMinigameGenerateComponent.h:20
void initialiseFromVariableTableDo(const fsCVariableTable &pVars) override
Definition gfCWordSearchMinigameLogicComponent.cpp:961
void resetDo() override
Definition gfCWordSearchMinigameLogicComponent.cpp:576
fsBool messageProcessDo(const fsCUniqueId &pMessageType, const fsIMessageDispatcher::sMessageParameters &pParam) override
Definition gfCWordSearchMinigameLogicComponent.cpp:1035
friend class fsCComponentFactory
Definition gfCWordSearchMinigameLogicComponent.h:33
fsBool hintActivate()
Definition gfCWordSearchMinigameLogicComponent.cpp:588
static fsIComponent * create(fsCEntity *pParent)
Definition gfCWordSearchMinigameLogicComponent.cpp:1041
void listenersRegisterDo() override
Definition gfCWordSearchMinigameLogicComponent.cpp:1025
static const fsStr mSelectionPrefix
Definition gfCWordSearchMinigameLogicComponent.h:44
void tileTap(const fsPoint &pTapPos)
Definition gfCWordSearchMinigameLogicComponent.cpp:278
void tilesSelect(gfIOpaqueLensComponent::fsSSwipe const &pSwipe)
Definition gfCWordSearchMinigameLogicComponent.cpp:322
fsStr tileSetGet() const
Definition gfCWordSearchMinigameLogicComponent.h:55
void deserialiseDo() override
Definition gfCWordSearchMinigameLogicComponent.cpp:886
void listenersDeregisterDo() override
Definition gfCWordSearchMinigameLogicComponent.cpp:1030
std::vector< fsCEntity * > selectedWordsGet() const
Definition gfCWordSearchMinigameLogicComponent.cpp:91
void wordSelected()
Definition gfCWordSearchMinigameLogicComponent.cpp:145
void serialiseDo() override
Definition gfCWordSearchMinigameLogicComponent.cpp:892
static const fsStr mEntityPrefix
Definition gfCWordSearchMinigameLogicComponent.h:43
~gfCWordSearchMinigameLogicComponent()
Definition gfCWordSearchMinigameLogicComponent.cpp:1051
gfCWordSearchMinigameLogicComponent(fsCEntity *pParent)
Definition gfCWordSearchMinigameLogicComponent.cpp:1046
void initialiseWithGenerator(gfCWordSearchMinigameGenerateComponent *pGenerator)
Definition gfCWordSearchMinigameLogicComponent.cpp:903
void tilesHilite(gfIOpaqueLensComponent::fsSSwipe const &pSwipe)
Definition gfCWordSearchMinigameLogicComponent.cpp:290
static const fsCUniqueId mTypeId
Definition gfCWordSearchMinigameLogicComponent.h:42
void skipDo() override
Definition gfCWordSearchMinigameLogicComponent.cpp:659
gfIMinigameLogic(fsCEntity *pParent)
Definition gfIMinigameLogic.cpp:38
bool fsBool
Definition fsBaseTypes.h:26
float fsF32
Definition fsBaseTypes.h:28
Definition fsIMessageDispatcher.h:32
Definition fsIMessageDispatcher.h:39
Definition fsPoint.h:17
Definition gfCWordSearchMinigameLogicComponent.h:38
fsCEntity * mEnt
Definition gfCWordSearchMinigameLogicComponent.h:39
Definition gfIOpaqueLensComponent.h:24