MCPcopy Create free account
hub / github.com/OpenFodder/openfodder / getRandomXYByTileID

Method getRandomXYByTileID

Source/Map/Random.cpp:151–189  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

149}
150
151cPosition* cRandomMap::getRandomXYByTileID(std::vector<size_t> pTiles, size_t pRadius) {
152 int32 Radius = (int32) pRadius;
153 cPosition* Position = new cPosition();
154
155 cPosition PosStart;
156 PosStart.mX = pRadius + (mParams.mRandom.getu() % (mParams.mWidth - pRadius));
157 PosStart.mY = pRadius + (mParams.mRandom.getu() % (mParams.mHeight - pRadius));
158
159 // Move 1 tile each direction
160 for (Position->mY = PosStart.mY; Position->mY < getHeight() - Radius; Position->mY++) {
161 if (Position->mY != PosStart.mY)
162 PosStart.mX = 0;
163
164 for (Position->mX = PosStart.mX; Position->mX < getWidth() - Radius; Position->mX++) {
165
166 if (CheckRadiusTileID(pTiles, Position, pRadius)) {
167 Position->mX *= TILE_WIDTH_PIXELS;
168 Position->mY *= TILE_HEIGHT_PIXELS;
169 return Position;
170 }
171 }
172 }
173
174 // Return to start of map
175 for (Position->mY = 0; Position->mY < PosStart.mY; Position->mY++) {
176 for (Position->mX = 0; Position->mX <= getWidth() - Radius; Position->mX++) {
177
178 if (CheckRadiusTileID(pTiles, Position, pRadius)) {
179 Position->mX *= TILE_WIDTH_PIXELS;
180 Position->mY *= TILE_HEIGHT_PIXELS;
181 return Position;
182 }
183 }
184 }
185
186 Position->mX = -1;
187 Position->mY = -1;
188 return Position;
189}
190
191
192cPosition* cRandomMap::getRandomXYByFeatures(std::vector<eTerrainFeature> pFeatures, size_t pRadius, bool pIgnoreSprites) {

Callers

nothing calls this directly

Calls 1

getuMethod · 0.80

Tested by

no test coverage detected