mirror of
https://github.com/LostArtefacts/TRX.git
synced 2025-05-01 14:17:58 +03:00
port SwitchCollision2
This commit is contained in:
parent
f966020644
commit
dce2736a1a
4 changed files with 67 additions and 22 deletions
|
@ -34,9 +34,6 @@ static int16_t PickUpBoundsUW[12] = {
|
|||
+45 * PHD_DEGREE,
|
||||
};
|
||||
|
||||
static PHD_VECTOR PickUpPosition = { 0, 0, -100 };
|
||||
static PHD_VECTOR PickUpPositionUW = { 0, -200, -350 };
|
||||
|
||||
static int16_t PickUpScionBounds[12] = {
|
||||
-256,
|
||||
+256,
|
||||
|
@ -51,7 +48,6 @@ static int16_t PickUpScionBounds[12] = {
|
|||
0,
|
||||
0,
|
||||
};
|
||||
static PHD_VECTOR PickUpScionPosition = { 0, 640, -310 };
|
||||
|
||||
static int16_t PickUpScion4Bounds[12] = {
|
||||
-256,
|
||||
|
@ -67,17 +63,16 @@ static int16_t PickUpScion4Bounds[12] = {
|
|||
0,
|
||||
0,
|
||||
};
|
||||
static PHD_VECTOR PickUpScion4Position = { 0, 280, -512 + 105 };
|
||||
|
||||
static int16_t MidasBounds[12] = {
|
||||
-700,
|
||||
700,
|
||||
384 - 100,
|
||||
384 + 100 + 512,
|
||||
+700,
|
||||
+384 - 100,
|
||||
+384 + 100 + 512,
|
||||
-700,
|
||||
700,
|
||||
+700,
|
||||
-10 * PHD_DEGREE,
|
||||
10 * PHD_DEGREE,
|
||||
+10 * PHD_DEGREE,
|
||||
-30 * PHD_DEGREE,
|
||||
+30 * PHD_DEGREE,
|
||||
-10 * PHD_DEGREE,
|
||||
|
@ -87,10 +82,10 @@ static int16_t MidasBounds[12] = {
|
|||
static int16_t Switch1Bounds[12] = {
|
||||
-200,
|
||||
+200,
|
||||
0,
|
||||
0,
|
||||
WALL_L / 2 - 200,
|
||||
WALL_L / 2,
|
||||
+0,
|
||||
+0,
|
||||
+WALL_L / 2 - 200,
|
||||
+WALL_L / 2,
|
||||
-10 * PHD_DEGREE,
|
||||
+10 * PHD_DEGREE,
|
||||
-30 * PHD_DEGREE,
|
||||
|
@ -99,6 +94,18 @@ static int16_t Switch1Bounds[12] = {
|
|||
+10 * PHD_DEGREE,
|
||||
};
|
||||
|
||||
static int16_t Switch2Bounds[12] = {
|
||||
-WALL_L, +WALL_L, -WALL_L, +WALL_L,
|
||||
-WALL_L, +WALL_L / 2, -80 * PHD_DEGREE, +80 * PHD_DEGREE,
|
||||
-80 * PHD_DEGREE, +80 * PHD_DEGREE, -80 * PHD_DEGREE, +80 * PHD_DEGREE,
|
||||
};
|
||||
|
||||
static PHD_VECTOR PickUpPosition = { 0, 0, -100 };
|
||||
static PHD_VECTOR PickUpPositionUW = { 0, -200, -350 };
|
||||
static PHD_VECTOR PickUpScionPosition = { 0, 640, -310 };
|
||||
static PHD_VECTOR PickUpScion4Position = { 0, 280, -512 + 105 };
|
||||
static PHD_VECTOR Switch2Position = { 0, 0, 108 };
|
||||
|
||||
void AnimateLaraUntil(ITEM_INFO* lara_item, int32_t goal)
|
||||
{
|
||||
lara_item->goal_anim_state = goal;
|
||||
|
@ -340,6 +347,43 @@ void SwitchCollision(int16_t item_num, ITEM_INFO* lara_item, COLL_INFO* coll)
|
|||
}
|
||||
}
|
||||
|
||||
void SwitchCollision2(int16_t item_num, ITEM_INFO* lara_item, COLL_INFO* coll)
|
||||
{
|
||||
ITEM_INFO* item = &Items[item_num];
|
||||
|
||||
if (!CHK_ANY(Input, IN_ACTION) || item->status != IS_NOT_ACTIVE
|
||||
|| Lara.water_status != LWS_UNDERWATER) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (lara_item->current_anim_state != AS_TREAD) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!TestLaraPosition(Switch2Bounds, item, lara_item)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (item->current_anim_state == SS_ON
|
||||
|| item->current_anim_state == SS_OFF) {
|
||||
if (!MoveLaraPosition(&Switch2Position, item, lara_item)) {
|
||||
return;
|
||||
}
|
||||
lara_item->fall_speed = 0;
|
||||
AnimateLaraUntil(lara_item, AS_SWITCHON);
|
||||
lara_item->goal_anim_state = AS_TREAD;
|
||||
Lara.gun_status = LGS_HANDSBUSY;
|
||||
item->status = IS_ACTIVE;
|
||||
if (item->current_anim_state == SS_ON) {
|
||||
item->goal_anim_state = SS_OFF;
|
||||
} else {
|
||||
item->goal_anim_state = SS_ON;
|
||||
}
|
||||
AddActiveItem(item_num);
|
||||
AnimateItem(item);
|
||||
}
|
||||
}
|
||||
|
||||
int32_t KeyTrigger(int16_t item_num)
|
||||
{
|
||||
ITEM_INFO* item = &Items[item_num];
|
||||
|
@ -366,5 +410,6 @@ void T1MInjectGamePickup()
|
|||
INJECT(0x004333B0, PickUpScion4Collision);
|
||||
INJECT(0x004334C0, MidasCollision);
|
||||
INJECT(0x004336F0, SwitchCollision);
|
||||
INJECT(0x00433810, SwitchCollision2);
|
||||
INJECT(0x00433EA0, KeyTrigger);
|
||||
}
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
#include <stdint.h>
|
||||
|
||||
// clang-format off
|
||||
#define SwitchCollision2 ((void (*)(int16_t item_num, ITEM_INFO* litem, COLL_INFO* coll))0x00433810)
|
||||
#define KeyHoleCollision ((void (*)(int16_t item_num, ITEM_INFO* litem, COLL_INFO* coll))0x00433900)
|
||||
#define PuzzleHoleCollision ((void (*)(int16_t item_num, ITEM_INFO* litem, COLL_INFO* coll))0x00433B40)
|
||||
#define SwitchControl ((void (*)(int16_t item_num))0x00433DE0)
|
||||
|
@ -21,6 +20,7 @@ void PickUpScion4Collision(
|
|||
int16_t item_num, ITEM_INFO* lara_item, COLL_INFO* coll);
|
||||
void MidasCollision(int16_t item_num, ITEM_INFO* lara_item, COLL_INFO* coll);
|
||||
void SwitchCollision(int16_t item_num, ITEM_INFO* lara_item, COLL_INFO* coll);
|
||||
void SwitchCollision2(int16_t item_num, ITEM_INFO* lara_item, COLL_INFO* coll);
|
||||
int32_t KeyTrigger(int16_t item_num);
|
||||
|
||||
void T1MInjectGamePickup();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue