TombEngine/TR5Main/Game/control/trigger.h

77 lines
1.7 KiB
C
Raw Normal View History

#pragma once
Merge branch 'master' into item_data # Conflicts: # TR5Main/Game/Lara/lara.cpp # TR5Main/Game/Lara/lara_collide.cpp # TR5Main/Game/Lara/lara_monkey.cpp # TR5Main/Game/Lara/lara_struct.h # TR5Main/Game/Lara/lara_tests.cpp # TR5Main/Game/collide.h # TR5Main/Game/control.h # TR5Main/Game/effect.h # TR5Main/Game/effect2.cpp # TR5Main/Game/flipeffect.cpp # TR5Main/Game/floordata.h # TR5Main/Game/hair.cpp # TR5Main/Game/health.cpp # TR5Main/Game/items.cpp # TR5Main/Game/newinv2.cpp # TR5Main/Game/spotcam.cpp # TR5Main/Objects/Effects/tr4_bubbles.cpp # TR5Main/Objects/TR1/Entity/tr1_ape.cpp # TR5Main/Objects/TR1/Entity/tr1_bigrat.cpp # TR5Main/Objects/TR1/Entity/tr1_doppelganger.cpp # TR5Main/Objects/TR2/Entity/tr2_birdmonster.cpp # TR5Main/Objects/TR2/Entity/tr2_shark.cpp # TR5Main/Objects/TR2/Entity/tr2_spider.cpp # TR5Main/Objects/TR2/Entity/tr2_yeti.cpp # TR5Main/Objects/TR3/Entity/tr3_fishemitter.cpp # TR5Main/Objects/TR3/Entity/tr3_flamethrower.cpp # TR5Main/Objects/TR3/Entity/tr3_monkey.cpp # TR5Main/Objects/TR3/Entity/tr3_raptor.cpp # TR5Main/Objects/TR3/Entity/tr3_scuba.cpp # TR5Main/Objects/TR3/Entity/tr3_trex.cpp # TR5Main/Objects/TR3/Vehicles/kayak.cpp # TR5Main/Objects/TR3/Vehicles/minecart.cpp # TR5Main/Objects/TR4/Entity/tr4_bat.cpp # TR5Main/Objects/TR4/Entity/tr4_big_beetle.cpp # TR5Main/Objects/TR4/Entity/tr4_bigscorpion.cpp # TR5Main/Objects/TR4/Entity/tr4_demigod.cpp # TR5Main/Objects/TR4/Entity/tr4_dog.cpp # TR5Main/Objects/TR4/Entity/tr4_hammerhead.cpp # TR5Main/Objects/TR4/Entity/tr4_harpy.cpp # TR5Main/Objects/TR4/Entity/tr4_mutant.cpp # TR5Main/Objects/TR4/Entity/tr4_smallscorpion.cpp # TR5Main/Objects/TR4/Entity/tr4_troops.cpp # TR5Main/Objects/TR4/Entity/tr4_wildboar.cpp # TR5Main/Objects/TR4/Trap/tr4_joby_spikes.cpp # TR5Main/Objects/TR4/Vehicles/motorbike.cpp # TR5Main/Objects/TR5/Entity/tr5_doberman.cpp # TR5Main/Objects/TR5/Entity/tr5_imp.cpp # TR5Main/Objects/TR5/Entity/tr5_larson.cpp # TR5Main/Objects/TR5/Entity/tr5_lion.cpp # TR5Main/Objects/TR5/Entity/tr5_reaper.cpp # TR5Main/Objects/TR5/Object/tr5_pushableblock.cpp # TR5Main/Objects/TR5/Object/tr5_rollingball.cpp # TR5Main/Objects/TR5/Trap/tr5_fallingceiling.cpp # TR5Main/Renderer/Renderer11Draw2D.cpp # TR5Main/Specific/input.cpp # TR5Main/Specific/level.cpp # TR5Main/TombEngine.vcxproj.filters
2021-08-31 17:37:15 +02:00
struct ITEM_INFO;
2021-11-04 05:33:15 +03:00
class FLOOR_INFO;
2021-09-15 10:12:42 +03:00
#define TRIG_BITS(T) ((T & 0x3FFF) >> 10)
constexpr auto ONESHOT = 0x0100;
constexpr auto SWONESHOT = 0x0040;
constexpr auto ATONESHOT = 0x0080;
constexpr auto VALUE_BITS = 0x03FF;
constexpr auto CODE_BITS = 0x3E00;
constexpr auto END_BIT = 0x8000;
constexpr auto TRIGGERED = 0x20;
2021-09-15 10:12:42 +03:00
enum FLOORDATA_MASKS
{
FD_MASK_FUNCTION = 0x001F,
FD_MASK_SUBFUNCTION = 0x7F00,
FD_MASK_END_DATA = 0x8000
};
2021-09-11 22:41:25 +03:00
enum TRIGGER_TYPES
{
TRIGGER,
PAD,
SWITCH,
KEY,
PICKUP,
HEAVY,
ANTIPAD,
COMBAT,
DUMMY,
ANTITRIGGER,
HEAVYSWITCH,
HEAVYANTITRIGGER,
MONKEY,
TIGHTROPE_T,
CRAWLDUCK_T,
2021-09-13 01:18:06 +03:00
CLIMB_T
2021-09-11 22:41:25 +03:00
};
enum TRIGOBJECTS_TYPES
{
TO_OBJECT,
TO_CAMERA,
TO_SINK,
TO_FLIPMAP,
TO_FLIPON,
TO_FLIPOFF,
TO_TARGET,
TO_FINISH,
TO_CD,
TO_FLIPEFFECT,
TO_SECRET,
TO_BODYBAG,
TO_FLYBY,
TO_CUTSCENE
};
extern int TriggerTimer;
2021-09-15 17:40:00 +03:00
extern int KeyTriggerActive;
2021-09-15 10:12:42 +03:00
bool GetKeyTrigger(ITEM_INFO* item);
int GetSwitchTrigger(ITEM_INFO* item, short* itemNos, int attatchedToSwitch);
int SwitchTrigger(short itemNum, short timer);
2021-09-15 17:20:42 +03:00
int KeyTrigger(short itemNum);
int PickupTrigger(short itemNum);
2021-10-04 03:14:05 +03:00
void RefreshCamera(short type, short* data);
2021-08-30 17:52:38 +03:00
int TriggerActive(ITEM_INFO* item);
short* GetTriggerIndex(FLOOR_INFO* floor, int x, int y, int z);
short* GetTriggerIndex(ITEM_INFO* item);
2021-10-01 18:31:06 +03:00
void TestTriggers(FLOOR_INFO* floor, int x, int y, int z, bool heavy, int heavyFlags = 0);
2021-09-15 16:58:53 +03:00
void TestTriggers(int x, int y, int z, short roomNumber, bool heavy, int heavyFlags = 0);
void TestTriggers(ITEM_INFO* item, bool heavy, int heavyFlags = 0);
void ProcessSectorFlags(FLOOR_INFO* floor);
void ProcessSectorFlags(int x, int y, int z, short roomNumber);
void ProcessSectorFlags(ITEM_INFO* item);