2021-09-05 05:52:50 +02:00
|
|
|
#include "framework.h"
|
|
|
|
#include "generic_doors.h"
|
|
|
|
#include "level.h"
|
2021-09-19 23:41:26 +03:00
|
|
|
#include "control/control.h"
|
|
|
|
#include "control/box.h"
|
2021-09-05 05:52:50 +02:00
|
|
|
#include "items.h"
|
2021-09-19 23:41:26 +03:00
|
|
|
#include "control/lot.h"
|
2021-11-16 15:51:50 +03:00
|
|
|
#include "gui.h"
|
2021-09-05 05:52:50 +02:00
|
|
|
#include "input.h"
|
2021-09-11 10:13:04 +03:00
|
|
|
#include "pickup.h"
|
2021-09-05 05:52:50 +02:00
|
|
|
#include "sound.h"
|
2021-09-16 05:06:03 +03:00
|
|
|
#include "animation.h"
|
2021-09-05 05:52:50 +02:00
|
|
|
#include "sphere.h"
|
|
|
|
#include "lara_struct.h"
|
|
|
|
#include "lara.h"
|
|
|
|
#include "trmath.h"
|
|
|
|
#include "misc.h"
|
|
|
|
#include "sequence_door.h"
|
|
|
|
#include "fullblock_switch.h"
|
2021-09-16 05:06:03 +03:00
|
|
|
#include "itemdata/door_data.h"
|
2021-09-05 05:52:50 +02:00
|
|
|
|
|
|
|
using namespace TEN::Entities::Switches;
|
|
|
|
|
|
|
|
namespace TEN::Entities::Doors
|
|
|
|
{
|
|
|
|
void SequenceDoorControl(short itemNumber)
|
|
|
|
{
|
|
|
|
ITEM_INFO* item = &g_Level.Items[itemNumber];
|
|
|
|
DOOR_DATA* door = (DOOR_DATA*)item->data;
|
|
|
|
|
|
|
|
if (CurrentSequence == 3)
|
|
|
|
{
|
|
|
|
if (SequenceResults[Sequences[0]][Sequences[1]][Sequences[2]] == item->triggerFlags)
|
|
|
|
{
|
|
|
|
if (item->currentAnimState == 1)
|
|
|
|
item->goalAnimState = 1;
|
|
|
|
else
|
|
|
|
item->goalAnimState = 0;
|
|
|
|
|
2021-09-15 16:58:53 +03:00
|
|
|
TestTriggers(item, true);
|
2021-09-05 05:52:50 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
CurrentSequence = 4;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (item->currentAnimState == item->goalAnimState)
|
|
|
|
{
|
|
|
|
if (item->currentAnimState == 1)
|
|
|
|
{
|
|
|
|
if (!door->opened)
|
|
|
|
{
|
|
|
|
OpenThatDoor(&door->d1, door);
|
|
|
|
OpenThatDoor(&door->d2, door);
|
|
|
|
OpenThatDoor(&door->d1flip, door);
|
|
|
|
OpenThatDoor(&door->d2flip, door);
|
|
|
|
door->opened = true;
|
|
|
|
item->flags |= 0x3E;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (door->opened)
|
|
|
|
{
|
|
|
|
ShutThatDoor(&door->d1, door);
|
|
|
|
ShutThatDoor(&door->d2, door);
|
|
|
|
ShutThatDoor(&door->d1flip, door);
|
|
|
|
ShutThatDoor(&door->d2flip, door);
|
|
|
|
door->opened = false;
|
|
|
|
item->flags &= 0xC1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
AnimateItem(item);
|
|
|
|
}
|
|
|
|
}
|