| 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) |
no test coverage detected