MCPcopy Create free account
hub / github.com/OpenLoco/OpenLoco / insertElementEnd

Function insertElementEnd

src/OpenLoco/src/Map/TileManager.cpp:249–277  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

247 }
248
249 static TileElement* insertElementEnd(ElementType type, uint8_t baseZ, uint8_t occupiedQuads, TileElement* source, TileElement* dest, bool lastFound)
250 {
251 auto* newElement = dest++;
252 // Clear the element
253 *newElement = TileElement{};
254
255 newElement->setType(type);
256 newElement->setBaseZ(baseZ);
257 newElement->setClearZ(baseZ);
258 newElement->setOccupiedQuarter(occupiedQuads);
259
260 if (lastFound)
261 {
262 newElement->setLastFlag(true);
263 }
264 else
265 {
266 // Copy all of the elements that are above the new tile
267 do
268 {
269 *dest = *source;
270 source->setBaseZ(0xFFU);
271 source++;
272 } while (!dest++->isLast());
273 }
274 _elementsEnd = std::distance(&*_elements.begin(), dest);
275
276 return newElement;
277 }
278
279 // 0x004616D6
280 TileElement* insertElement(ElementType type, const Pos2& pos, uint8_t baseZ, uint8_t occupiedQuads)

Callers 3

insertElementFunction · 0.85
insertElementRoadFunction · 0.85

Calls 7

setBaseZMethod · 0.80
setClearZMethod · 0.80
setOccupiedQuarterMethod · 0.80
setLastFlagMethod · 0.80
setTypeMethod · 0.45
isLastMethod · 0.45
beginMethod · 0.45

Tested by

no test coverage detected