mirror of
https://github.com/TombEngine/TombEngine.git
synced 2025-05-02 09:47:58 +03:00
Merge branch 'master' of https://github.com/MontyTRC89/TR5Main
This commit is contained in:
commit
dd33113dd5
10 changed files with 59 additions and 48 deletions
|
@ -195,13 +195,13 @@ function<LaraRoutineFunction> lara_control_routines[NUM_LARA_STATES + 1] = {
|
|||
lara_as_null,//136
|
||||
lara_as_null,//137
|
||||
lara_as_null,//138
|
||||
lara_as_hang_feet,//139
|
||||
lara_as_hang_feet_shimmyr,//140
|
||||
lara_as_hang_feet_shimmyl,//141
|
||||
lara_as_hang_feet_inRcorner,//142
|
||||
lara_as_hang_feet_inLcorner,//143
|
||||
lara_as_hang_feet_outRcorner,//144
|
||||
lara_as_hang_feet_outLcorner,//145
|
||||
lara_as_null,//ara_as_hang_feet,//139
|
||||
lara_as_null,//lara_as_hang_feet_shimmyr,//140
|
||||
lara_as_null,//lara_as_hang_feet_shimmyl,//141
|
||||
lara_as_null,//lara_as_hang_feet_inRcorner,//142
|
||||
lara_as_null,//lara_as_hang_feet_inLcorner,//143
|
||||
lara_as_null,//lara_as_hang_feet_outRcorner,//144
|
||||
lara_as_null,//lara_as_hang_feet_outLcorner,//145
|
||||
lara_as_controlledl,
|
||||
lara_as_null,
|
||||
lara_as_null,
|
||||
|
@ -349,9 +349,9 @@ function<LaraRoutineFunction> lara_collision_routines[NUM_LARA_STATES + 1] = {
|
|||
lara_void_func,
|
||||
lara_void_func,
|
||||
lara_void_func,
|
||||
lara_col_hang_feet,
|
||||
lara_col_hang_feet_shimmyr,
|
||||
lara_col_hang_feet_shimmyl,
|
||||
lara_void_func,//lara_col_hang_feet,
|
||||
lara_void_func,//lara_col_hang_feet_shimmyr,
|
||||
lara_void_func,//lara_col_hang_feet_shimmyl,
|
||||
lara_default_col,
|
||||
lara_default_col,
|
||||
lara_default_col,
|
||||
|
|
|
@ -1091,14 +1091,14 @@ void lara_col_reach(ITEM_INFO* item, COLL_INFO* coll)
|
|||
}
|
||||
else
|
||||
{
|
||||
if (TestHangFeet(item, angle))
|
||||
/* if (TestHangFeet(item, angle))
|
||||
{
|
||||
item->animNumber = LA_REACH_TO_HANG;
|
||||
item->frameNumber = g_Level.Anims[item->animNumber].frameBase;
|
||||
item->currentAnimState = LS_HANG;
|
||||
item->goalAnimState = LS_HANG_FEET;
|
||||
}
|
||||
else
|
||||
else*/
|
||||
{
|
||||
item->animNumber = LA_REACH_TO_HANG;
|
||||
item->frameNumber = g_Level.Anims[item->animNumber].frameBase;
|
||||
|
@ -1683,14 +1683,14 @@ void lara_col_upjump(ITEM_INFO* item, COLL_INFO* coll)
|
|||
}
|
||||
else
|
||||
{
|
||||
if (TestHangFeet(item, angle))
|
||||
/* if (TestHangFeet(item, angle))
|
||||
{
|
||||
item->animNumber = LA_REACH_TO_HANG;
|
||||
item->frameNumber = g_Level.Anims[item->animNumber].frameBase + 12;
|
||||
item->currentAnimState = LS_HANG;
|
||||
item->goalAnimState = LS_HANG_FEET;
|
||||
}
|
||||
else
|
||||
else*/
|
||||
{
|
||||
item->animNumber = LA_REACH_TO_HANG;
|
||||
item->frameNumber = g_Level.Anims[item->animNumber].frameBase + 12;
|
||||
|
|
|
@ -152,7 +152,7 @@ void lara_col_crouch_roll(ITEM_INFO* item, COLL_INFO* coll)
|
|||
coll->badCeiling = 0;
|
||||
coll->slopesAreWalls = true;
|
||||
coll->facing = Lara.moveAngle;
|
||||
GetCollisionInfo(coll, item->pos.xPos, item->pos.yPos, item->pos.zPos, item->roomNumber, LARA_HITE);
|
||||
GetCollisionInfo(coll, item->pos.xPos, item->pos.yPos, item->pos.zPos, item->roomNumber, -400);
|
||||
|
||||
ShiftItem(item, coll);
|
||||
if (coll->midFloor != NO_HEIGHT)
|
||||
|
@ -839,14 +839,14 @@ void lara_col_crawl2hang(ITEM_INFO* item, COLL_INFO* coll)
|
|||
}
|
||||
else
|
||||
{
|
||||
if (TestHangFeet(item, angle))
|
||||
/* if (TestHangFeet(item, angle))
|
||||
{
|
||||
item->animNumber = LA_REACH_TO_HANG;
|
||||
item->frameNumber = g_Level.Anims[item->animNumber].frameBase;
|
||||
item->currentAnimState = LS_HANG;
|
||||
item->goalAnimState = LS_HANG_FEET;
|
||||
}
|
||||
else
|
||||
else*/
|
||||
{
|
||||
item->animNumber = LA_REACH_TO_HANG;
|
||||
item->frameNumber = g_Level.Anims[item->animNumber].frameBase;
|
||||
|
|
|
@ -274,10 +274,10 @@ void lara_as_intcornerr(ITEM_INFO* item, COLL_INFO* coll)
|
|||
-corner anims(works well, tested with placeholder anims)
|
||||
-handstand(not tested)*/
|
||||
|
||||
void lara_as_hang_feet(ITEM_INFO* item, COLL_INFO* coll)
|
||||
/*void lara_as_hang_feet(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 139*/
|
||||
/*collision: lara_col_hang_feet*/
|
||||
/*collision: lara_col_hang_feet
|
||||
Lara.isClimbing = false;
|
||||
|
||||
if (item->hitPoints <= 0)
|
||||
|
@ -298,7 +298,7 @@ void lara_as_hang_feet(ITEM_INFO* item, COLL_INFO* coll)
|
|||
void lara_col_hang_feet(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 139*/
|
||||
/*state code: lara_as_hang_feet*/
|
||||
/*state code: lara_as_hang_feet
|
||||
item->fallspeed = 0;
|
||||
item->gravityStatus = false;
|
||||
|
||||
|
@ -413,7 +413,7 @@ void lara_col_hang_feet(ITEM_INFO* item, COLL_INFO* coll)
|
|||
}
|
||||
}
|
||||
return;
|
||||
}*///commenting till daniel makes anims
|
||||
}
|
||||
|
||||
Lara.moveAngle = item->pos.yRot;
|
||||
LaraHangTest(item, coll);
|
||||
|
@ -423,7 +423,7 @@ void lara_col_hang_feet(ITEM_INFO* item, COLL_INFO* coll)
|
|||
void lara_as_hang_feet_shimmyr(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 140*/
|
||||
/*collision: lara_col_hang_feet_shimmyr*/
|
||||
/*collision: lara_col_hang_feet_shimmyr
|
||||
coll->enableBaddiePush = false;
|
||||
coll->enableSpaz = false;
|
||||
Camera.targetAngle = 0;
|
||||
|
@ -436,7 +436,7 @@ void lara_as_hang_feet_shimmyr(ITEM_INFO* item, COLL_INFO* coll)
|
|||
void lara_col_hang_feet_shimmyr(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 140*/
|
||||
/*state code: lara_as_hang_feet_shimmyr*/
|
||||
/*state code: lara_as_hang_feet_shimmyr
|
||||
Lara.moveAngle = item->pos.yRot + ANGLE(90);
|
||||
coll->radius = LARA_RAD;
|
||||
LaraHangTest(item, coll);
|
||||
|
@ -446,7 +446,7 @@ void lara_col_hang_feet_shimmyr(ITEM_INFO* item, COLL_INFO* coll)
|
|||
void lara_as_hang_feet_shimmyl(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 141*/
|
||||
/*collision: lara_col_hang_feet_shimmyl*/
|
||||
/*collision: lara_col_hang_feet_shimmyl
|
||||
coll->enableBaddiePush = false;
|
||||
coll->enableSpaz = false;
|
||||
Camera.targetAngle = 0;
|
||||
|
@ -458,19 +458,19 @@ void lara_as_hang_feet_shimmyl(ITEM_INFO* item, COLL_INFO* coll)
|
|||
void lara_col_hang_feet_shimmyl(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 141*/
|
||||
/*state code: lara_as_hang_feet_shimmyl*/
|
||||
/*state code: lara_as_hang_feet_shimmyl
|
||||
Lara.moveAngle = item->pos.yRot - ANGLE(90);
|
||||
coll->radius = LARA_RAD;
|
||||
LaraHangTest(item, coll);
|
||||
Lara.moveAngle = item->pos.yRot - ANGLE(90);
|
||||
}
|
||||
|
||||
/*go around corners feet*/
|
||||
/*go around corners feet
|
||||
|
||||
void lara_as_hang_feet_inRcorner(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 142*/
|
||||
/*collision: lara_default_col*/
|
||||
/*collision: lara_default_col
|
||||
Camera.laraNode = 8;
|
||||
Camera.targetElevation = ANGLE(33.0f);
|
||||
if (item->frameNumber == g_Level.Anims[LA_SHIMMY_FEET_RIGHT_CORNER_INNER].frameEnd) // I don't like this either but it's better than adding 4 new 1 frame anims?
|
||||
|
@ -481,7 +481,7 @@ void lara_as_hang_feet_inRcorner(ITEM_INFO* item, COLL_INFO* coll)
|
|||
void lara_as_hang_feet_inLcorner(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 143*/
|
||||
/*collision: lara_default_col*/
|
||||
/*collision: lara_default_col
|
||||
Camera.laraNode = 8;
|
||||
Camera.targetElevation = ANGLE(33.0f);
|
||||
if (item->frameNumber == g_Level.Anims[LA_SHIMMY_FEET_LEFT_CORNER_INNER].frameEnd)
|
||||
|
@ -492,7 +492,7 @@ void lara_as_hang_feet_inLcorner(ITEM_INFO* item, COLL_INFO* coll)
|
|||
void lara_as_hang_feet_outRcorner(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 144*/
|
||||
/*collision: lara_default_col*/
|
||||
/*collision: lara_default_col
|
||||
Camera.laraNode = 8;
|
||||
Camera.targetElevation = ANGLE(33.0f);
|
||||
if (item->frameNumber == g_Level.Anims[LA_SHIMMY_FEET_RIGHT_CORNER_OUTER].frameEnd)
|
||||
|
@ -503,10 +503,10 @@ void lara_as_hang_feet_outRcorner(ITEM_INFO* item, COLL_INFO* coll)
|
|||
void lara_as_hang_feet_outLcorner(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 145*/
|
||||
/*collision: lara_default_col*/
|
||||
/*collision: lara_default_col
|
||||
Camera.laraNode = 8;
|
||||
Camera.targetElevation = ANGLE(33.0f);
|
||||
if (item->frameNumber == g_Level.Anims[LA_SHIMMY_FEET_LEFT_CORNER_OUTER].frameEnd)
|
||||
SetCornerAnimFeet(item, coll, ANGLE(90.0f),
|
||||
item->animNumber = LA_SHIMMY_FEET_LEFT_CORNER_OUTER);
|
||||
}
|
||||
}*/
|
||||
|
|
|
@ -13,15 +13,15 @@ void lara_as_extcornerl(ITEM_INFO* item, COLL_INFO* coll);
|
|||
void lara_as_extcornerr(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void lara_as_intcornerl(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void lara_as_intcornerr(ITEM_INFO* item, COLL_INFO* coll);
|
||||
/*feet hanging and shimmying*/
|
||||
/*feet hanging and shimmying
|
||||
void lara_as_hang_feet(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void lara_col_hang_feet(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void lara_as_hang_feet_shimmyr(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void lara_col_hang_feet_shimmyr(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void lara_as_hang_feet_shimmyl(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void lara_col_hang_feet_shimmyl(ITEM_INFO* item, COLL_INFO* coll);
|
||||
/*go around corners feet*/
|
||||
/*go around corners feet
|
||||
void lara_as_hang_feet_inRcorner(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void lara_as_hang_feet_inLcorner(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void lara_as_hang_feet_outRcorner(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void lara_as_hang_feet_outLcorner(ITEM_INFO* item, COLL_INFO* coll);
|
||||
void lara_as_hang_feet_outLcorner(ITEM_INFO* item, COLL_INFO* coll);*/
|
||||
|
|
|
@ -439,13 +439,13 @@ int LaraHangTest(ITEM_INFO* item, COLL_INFO* coll)
|
|||
item->animNumber = LA_REACH_TO_HANG;
|
||||
item->frameNumber = g_Level.Anims[item->animNumber].frameBase + 21;
|
||||
}
|
||||
else if (item->currentAnimState == LS_SHIMMY_FEET_LEFT || item->currentAnimState == LS_SHIMMY_FEET_RIGHT)
|
||||
/* else if (item->currentAnimState == LS_SHIMMY_FEET_LEFT || item->currentAnimState == LS_SHIMMY_FEET_RIGHT)
|
||||
{
|
||||
item->currentAnimState = LS_HANG_FEET;
|
||||
item->goalAnimState = LS_HANG_FEET;
|
||||
item->animNumber = LA_HANG_FEET_IDLE;
|
||||
item->frameNumber = g_Level.Anims[item->animNumber].frameBase;
|
||||
}
|
||||
}*/
|
||||
result = 1;
|
||||
}
|
||||
}
|
||||
|
@ -470,7 +470,7 @@ int LaraHangTest(ITEM_INFO* item, COLL_INFO* coll)
|
|||
|
||||
int LaraHangLeftCornerTest(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
if (item->animNumber != LA_REACH_TO_HANG && item->animNumber != LA_HANG_FEET_IDLE)
|
||||
if (item->animNumber != LA_REACH_TO_HANG)// && item->animNumber != LA_HANG_FEET_IDLE)
|
||||
return 0;
|
||||
|
||||
if (coll->hitStatic)
|
||||
|
@ -625,7 +625,7 @@ int LaraHangLeftCornerTest(ITEM_INFO* item, COLL_INFO* coll)
|
|||
|
||||
int LaraHangRightCornerTest(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
if (item->animNumber != LA_REACH_TO_HANG && item->animNumber != LA_HANG_FEET_IDLE)
|
||||
if (item->animNumber != LA_REACH_TO_HANG)// && item->animNumber != LA_HANG_FEET_IDLE)
|
||||
return 0;
|
||||
|
||||
if (coll->hitStatic)
|
||||
|
@ -990,7 +990,7 @@ int TestHangSwingIn(ITEM_INFO* item, short angle)
|
|||
return(0);
|
||||
}
|
||||
|
||||
int TestHangFeet(ITEM_INFO* item, short angle)
|
||||
/*int TestHangFeet(ITEM_INFO* item, short angle)
|
||||
{
|
||||
return 0;
|
||||
if (Lara.climbStatus)
|
||||
|
@ -1055,7 +1055,7 @@ int TestHangFeet(ITEM_INFO* item, short angle)
|
|||
}
|
||||
return(1);
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
int CanLaraHangSideways(ITEM_INFO* item, COLL_INFO* coll, short angle)
|
||||
{
|
||||
|
@ -1143,7 +1143,7 @@ void SetCornerAnim(ITEM_INFO* item, COLL_INFO* coll, short rot, short flip)
|
|||
}
|
||||
}
|
||||
|
||||
void SetCornerAnimFeet(ITEM_INFO* item, COLL_INFO* coll, short rot, short flip)
|
||||
/*void SetCornerAnimFeet(ITEM_INFO* item, COLL_INFO* coll, short rot, short flip)
|
||||
{
|
||||
if (item->hitPoints <= 0)
|
||||
{
|
||||
|
@ -1177,7 +1177,7 @@ void SetCornerAnimFeet(ITEM_INFO* item, COLL_INFO* coll, short rot, short flip)
|
|||
|
||||
item->pos.yRot += rot;
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
int LaraFloorFront(ITEM_INFO* item, short ang, int dist)
|
||||
{
|
||||
|
|
|
@ -11,10 +11,10 @@ int LaraTestHangOnClimbWall(ITEM_INFO* item, COLL_INFO* coll);
|
|||
int LaraTestEdgeCatch(ITEM_INFO* item, COLL_INFO* coll, int* edge);
|
||||
int IsValidHangPos(ITEM_INFO* item, COLL_INFO* coll);
|
||||
int TestHangSwingIn(ITEM_INFO* item, short angle);
|
||||
int TestHangFeet(ITEM_INFO* item, short angle);
|
||||
//int TestHangFeet(ITEM_INFO* item, short angle);
|
||||
int CanLaraHangSideways(ITEM_INFO* item, COLL_INFO* coll, short angle);
|
||||
void SetCornerAnim(ITEM_INFO* item, COLL_INFO* coll, short rot, short flip);
|
||||
void SetCornerAnimFeet(ITEM_INFO* item, COLL_INFO* coll, short rot, short flip);
|
||||
//void SetCornerAnimFeet(ITEM_INFO* item, COLL_INFO* coll, short rot, short flip);
|
||||
int LaraFloorFront(ITEM_INFO* item, short ang, int dist);
|
||||
int LaraCeilingFront(ITEM_INFO* item, short ang, int dist, int h);
|
||||
int LaraFallen(ITEM_INFO* item, COLL_INFO* coll);
|
||||
|
|
|
@ -17,6 +17,16 @@ int FLOOR_INFO::SectorPlane(int x, int z) const
|
|||
return vector.x < 0 ? 0 : 1;
|
||||
}
|
||||
|
||||
int FLOOR_INFO::SectorPlaneCeiling(int x, int z) const
|
||||
{
|
||||
const auto point = GetSectorPoint(x, z);
|
||||
auto vector = Vector2(point.x, point.y);
|
||||
const auto matrix = Matrix::CreateRotationZ(CeilingCollision.SplitAngle);
|
||||
Vector2::Transform(vector, matrix, vector);
|
||||
|
||||
return vector.x < 0 ? 0 : 1;
|
||||
}
|
||||
|
||||
std::optional<int> FLOOR_INFO::RoomBelow(int plane) const
|
||||
{
|
||||
const auto room = FloorCollision.Portals[plane];
|
||||
|
@ -52,7 +62,7 @@ std::optional<int> FLOOR_INFO::RoomAbove(int plane) const
|
|||
|
||||
std::optional<int> FLOOR_INFO::RoomAbove(int x, int z) const
|
||||
{
|
||||
return RoomAbove(SectorPlane(x, z));
|
||||
return RoomAbove(SectorPlaneCeiling(x, z));
|
||||
}
|
||||
|
||||
std::optional<int> FLOOR_INFO::RoomAbove(int x, int z, int y) const
|
||||
|
@ -116,7 +126,7 @@ int FLOOR_INFO::BridgeFloorHeight(int x, int z, int y) const
|
|||
|
||||
int FLOOR_INFO::CeilingHeight(int x, int z) const
|
||||
{
|
||||
const auto plane = SectorPlane(x, z);
|
||||
const auto plane = SectorPlaneCeiling(x, z);
|
||||
const auto vector = GetSectorPoint(x, z);
|
||||
|
||||
return CeilingCollision.Planes[plane].x * vector.x + CeilingCollision.Planes[plane].y * vector.y + CeilingCollision.Planes[plane].z;
|
||||
|
@ -169,7 +179,7 @@ Vector2 FLOOR_INFO::CeilingSlope(int plane) const
|
|||
|
||||
Vector2 FLOOR_INFO::CeilingSlope(int x, int z) const
|
||||
{
|
||||
return CeilingSlope(SectorPlane(x, z));
|
||||
return CeilingSlope(SectorPlaneCeiling(x, z));
|
||||
}
|
||||
|
||||
bool FLOOR_INFO::IsWall(int plane) const
|
||||
|
|
|
@ -27,6 +27,7 @@ public:
|
|||
int Room;
|
||||
|
||||
int SectorPlane(int x, int z) const;
|
||||
int SectorPlaneCeiling(int x, int z) const;
|
||||
std::optional<int> RoomBelow(int plane) const;
|
||||
std::optional<int> RoomBelow(int x, int z) const;
|
||||
std::optional<int> RoomBelow(int x, int z, int y) const;
|
||||
|
|
|
@ -947,7 +947,7 @@ void handle_control_settings_input()
|
|||
}
|
||||
}
|
||||
|
||||
if (KeyMap[DIK_RETURN])
|
||||
if (KeyMap[DIK_RETURN] && !(title_selected_option & (1 << 18)) && !(title_selected_option & (1 << 19)))
|
||||
{
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, NULL, 0);
|
||||
CurrentSettings.waitingForkey = 1;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue