From 1ba34ae83a88bba22c33e4e61c92bde2ee79432d Mon Sep 17 00:00:00 2001 From: Adngel <60930991+Adngel@users.noreply.github.com> Date: Sat, 28 Jan 2023 00:00:56 +0100 Subject: [PATCH] Fix: Ceiling and Floor trapdoors (#972) Although the trapdoor code were correct, looks like that at some moment, someone merged all the trapdoors to initialize them together with the same values. But Ceiling and Floor Trapdoors must use different Collision functions. So this fix separate those objects from the normal trapdoors and put their right collision functions. --- .../Objects/Generic/generic_objects.cpp | 47 ++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/TombEngine/Objects/Generic/generic_objects.cpp b/TombEngine/Objects/Generic/generic_objects.cpp index a6a11f96d..65633d5a1 100644 --- a/TombEngine/Objects/Generic/generic_objects.cpp +++ b/TombEngine/Objects/Generic/generic_objects.cpp @@ -43,7 +43,7 @@ using namespace TEN::Entities::Generic; static void StartObject(ObjectInfo* object) { - for (int objectNumber = ID_TRAPDOOR1; objectNumber <= ID_CEILING_TRAPDOOR2; objectNumber++) + for (int objectNumber = ID_TRAPDOOR1; objectNumber <= ID_TRAPDOOR3; objectNumber++) { object = &Objects[objectNumber]; if (object->loaded) @@ -59,6 +59,51 @@ static void StartObject(ObjectInfo* object) } } + for (int objectNumber = ID_FLOOR_TRAPDOOR1; objectNumber <= ID_FLOOR_TRAPDOOR2; objectNumber++) + { + object = &Objects[objectNumber]; + if (object->loaded) + { + object->initialise = InitialiseTrapDoor; + object->collision = FloorTrapDoorCollision; + object->control = TrapDoorControl; + object->floorBorder = TrapDoorFloorBorder; + object->ceilingBorder = TrapDoorCeilingBorder; + object->floor = TrapDoorFloor; + object->ceiling = TrapDoorCeiling; + object->SetupHitEffect(true); + } + } + + for (int objectNumber = ID_CEILING_TRAPDOOR1; objectNumber <= ID_CEILING_TRAPDOOR2; objectNumber++) + { + object = &Objects[objectNumber]; + if (object->loaded) + { + object->initialise = InitialiseTrapDoor; + object->collision = CeilingTrapDoorCollision; + object->control = TrapDoorControl; + object->floorBorder = TrapDoorFloorBorder; + object->ceilingBorder = TrapDoorCeilingBorder; + object->floor = TrapDoorFloor; + object->ceiling = TrapDoorCeiling; + object->SetupHitEffect(true); + } + } + + /*object = &Objects[ID_SCALING_TRAPDOOR]; //I don't know what this Object purpose. + if (object->loaded) + { + object->initialise = InitialiseTrapDoor; + object->collision = TrapDoorCollision; + object->control = TrapDoorControl; + object->floorBorder = TrapDoorFloorBorder; + object->ceilingBorder = TrapDoorCeilingBorder; + object->floor = TrapDoorFloor; + object->ceiling = TrapDoorCeiling; + object->SetupHitEffect(true); + }*/ + object = &Objects[ID_BRIDGE_FLAT]; if (object->loaded) {