Fission FSN
Loading...
Searching...
No Matches
gfCWordSearchMinigameGenerateComponent.h
Go to the documentation of this file.
1/********************************************************************
2*
3* File: gfCWordSearchMinigameGenerateComponent.h
4*
5* Purpose: Generate word search files to be consumed by the
6* word search mini game
7*
8*********************************************************************/
9
10#ifndef gfCWordSearchMinigameGenerateComponenthdr
11#define gfCWordSearchMinigameGenerateComponenthdr
12
13#include <vector>
15
17
18
20{
21 friend class fsCComponentFactory;
23
24public:
25
26 fsBool generate(fsStr const& pTileSet, fsStr const& pHilight, fsPoint const& pDimensions, fsPoint const& pOffset,
27 std::vector<fsStr> pWords);
28
29 static const fsCUniqueId mTypeId;
30
31protected:
32
33 static fsIComponent* create(fsCEntity* pParent);
34
37
38private:
39
40 struct gfSGridDirection
41 {
42 gfSGridDirection(gfCWordSearchMinigameGenerateComponent* const pParent, fsS32 pDimensionLimit,
43 fsS32 pDimensionIndex, const fsStr& pWord, fsBool pReverse) :
44 mParent(pParent),
45 mWord(pWord),
46 mDimensionLimit(pDimensionLimit),
47 mDimensionIndex(pDimensionIndex),
48 mReverse(pReverse)
49 {
50 }
51
52 fsS32 wordIndexGet(fsS32 pIndex) const;
53 virtual void copyToGrid(fsS32 pColumn, fsS32 pRow) const;
54 virtual fsS32 startIndexFind();
55
56 fsS32 dimensionLimitGet() const { return mDimensionLimit; }
57 fsS32 wordLengthGet() const { return mWord.lengthGet(); }
58
59 virtual void doCopyToGrid(fsS32 pColumn, fsS32 pRow, fsS32 pCurrChar) const = 0;
60 virtual fsBool legalEntry(fsS32 pIndex) const { return false; }
61
63 const fsStr mWord;
64 const fsS32 mDimensionLimit;
65 const fsS32 mDimensionIndex;
66 const fsBool mReverse;
67 };
68
69 struct gfSColumn : public gfSGridDirection
70 {
71 gfSColumn(gfCWordSearchMinigameGenerateComponent* const pParent, fsS32 pMax, fsS32 pIndex, const fsStr& pWord,
72 fsBool pReverse):
73 gfSGridDirection(pParent, pMax, pIndex, pWord, pReverse)
74 {
75 }
76
77 fsBool legalEntry(fsS32 pIndex) const override;
78 void doCopyToGrid(fsS32 pColumn, fsS32 pRow, fsS32 pCurrChar) const override;
79 };
80
81 struct gfSRow : public gfSGridDirection
82 {
83 gfSRow(gfCWordSearchMinigameGenerateComponent* const pParent, fsS32 pMax, fsS32 pIndex, const fsStr& pWord,
84 fsBool pReverse):
85 gfSGridDirection(pParent, pMax, pIndex, pWord, pReverse)
86 {
87 }
88
89 fsBool legalEntry(fsS32 pIndex) const override;
90 void doCopyToGrid(fsS32 pColumn, fsS32 pRow, fsS32 pCurrChar) const override;
91 };
92
93 struct gfSDiagonalBLTR : public gfSGridDirection
94 {
95 gfSDiagonalBLTR(gfCWordSearchMinigameGenerateComponent* const pParent, fsS32 pMax, fsS32 pIndex,
96 const fsStr& pWord, fsBool pReverse):
97 gfSGridDirection(pParent, pMax, pIndex, pWord, pReverse)
98 {
99 }
100
101 virtual fsBool legalColRowEntry(fsS32 pColumn, fsS32 pRow) const;
102 void doCopyToGrid(fsS32 pColumn, fsS32 pRow, fsS32 pCurrChar) const override;
103 fsS32 startIndexFind() override;
104 };
105
106 struct gfSDiagonalTLBR : public gfSGridDirection
107 {
108 gfSDiagonalTLBR(gfCWordSearchMinigameGenerateComponent* const pParent, fsS32 pMax, fsS32 pIndex,
109 const fsStr& pWord, fsBool pReverse):
110 gfSGridDirection(pParent, pMax, pIndex, pWord, pReverse)
111 {
112 }
113
114 virtual fsBool legalColRowEntry(fsS32 pColumn, fsS32 pRow) const;
115 void doCopyToGrid(fsS32 pColumn, fsS32 pRow, fsS32 pCurrChar) const override;
116 fsS32 startIndexFind() override;
117 };
118
119 static const fsStr mPlaceHolderTile;
120
121 std::vector<fsS32> randommIndicesGet(fsS32 pMaxIndex) const;
122
123 fsStr randomLetterGet() const;
124 void emptyTilesReplaceWithRandomLetter();
125
126 fsS32 startDiagonalBLTRColumnFindInRow(fsS32 pRow, const fsStr& pWord);
127 fsS32 startDiagonalTLBRColumnFindInRow(fsS32 pRow, const fsStr& pWord);
128
129 fsBool wordAddDiagonalTLBR(const fsStr& pWord);
130 fsBool wordAddDiagonalBLTR(const fsStr& pWord);
131 fsBool wordAddVertical(const fsStr& pWord);
132 fsBool wordAddHorizontal(const fsStr& pWord);
133 fsBool wordsAdd(std::vector<fsStr>& pWords);
134
135 void wordListSortLongestFirst(std::vector<fsStr>& pWords);
136
137 void fileSave();
138
139 void gridCreate();
140
141 fsPoint mDimensions;
142 fsPoint mOffest;
143 fsStr mTileSet;
144 fsStr mHilight;
145
146 std::vector<fsStr> mTiles;
147 std::vector<fsStr> mWords;
148};
149
150#endif
Definition fsCEntity.h:39
Definition fsCUniqueId.h:21
fsIComponent(fsCEntity *pParent)
Definition fsIComponent.cpp:86
Definition fsStr.h:23
friend class gfCWordSearchMinigameLogicComponent
Definition gfCWordSearchMinigameGenerateComponent.h:22
friend class fsCComponentFactory
Definition gfCWordSearchMinigameGenerateComponent.h:21
fsBool generate(fsStr const &pTileSet, fsStr const &pHilight, fsPoint const &pDimensions, fsPoint const &pOffset, std::vector< fsStr > pWords)
Definition gfCWordSearchMinigameGenerateComponent.cpp:166
virtual ~gfCWordSearchMinigameGenerateComponent()
Definition gfCWordSearchMinigameGenerateComponent.cpp:195
gfCWordSearchMinigameGenerateComponent(fsCEntity *pParent)
Definition gfCWordSearchMinigameGenerateComponent.cpp:189
static fsIComponent * create(fsCEntity *pParent)
Definition gfCWordSearchMinigameGenerateComponent.cpp:184
static const fsCUniqueId mTypeId
Definition gfCWordSearchMinigameGenerateComponent.h:29
bool fsBool
Definition fsBaseTypes.h:26
int fsS32
Definition fsBaseTypes.h:20
Definition fsPoint.h:17