MCPcopy Create free account
hub / github.com/TombEngine/TombEngine / ResetRoomData

Function ResetRoomData

TombEngine/Game/room.cpp:617–659  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

615}
616
617void ResetRoomData()
618{
619 // Remove all door collisions.
620 for (const auto& item : g_Level.Items)
621 {
622 if (item.ObjectNumber == NO_VALUE || !item.Data.is<DOOR_DATA>())
623 continue;
624
625 auto& doorItem = g_Level.Items[item.Index];
626 auto& door = GetDoorObject(doorItem);
627
628 if (door.opened)
629 continue;
630
631 OpenThatDoor(&door.d1, &door);
632 OpenThatDoor(&door.d2, &door);
633 OpenThatDoor(&door.d1flip, &door);
634 OpenThatDoor(&door.d2flip, &door);
635 DisableDoorCollisionMesh(doorItem);
636 door.opened = true;
637 }
638
639 // Unflip all rooms and remove all bridges and stopper flags.
640 for (int roomNumber = 0; roomNumber < g_Level.Rooms.size(); roomNumber++)
641 {
642 auto& room = g_Level.Rooms[roomNumber];
643 if (room.flippedRoom != NO_VALUE && room.flipNumber != NO_VALUE && FlipStats[room.flipNumber])
644 {
645 auto& flippedRoom = g_Level.Rooms[room.flippedRoom];
646 FlipRooms(roomNumber, room, flippedRoom);
647 }
648
649 for (auto& sector : room.Sectors)
650 {
651 sector.Stopper = false;
652 sector.BridgeItemNumbers.clear();
653 }
654 }
655
656 // Make sure no pathfinding boxes are blocked (either by doors or by other door-like objects).
657 for (int pathfindingBoxID = 0; pathfindingBoxID < g_Level.PathfindingBoxes.size(); pathfindingBoxID++)
658 g_Level.PathfindingBoxes[pathfindingBoxID].flags &= ~BLOCKED;
659}
660
661void DoFlipMap(int group)
662{

Callers 1

FreeLevelFunction · 0.85

Calls 5

OpenThatDoorFunction · 0.85
DisableDoorCollisionMeshFunction · 0.85
FlipRoomsFunction · 0.85
sizeMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected