Separate underwater switch objects

This commit is contained in:
Sezz 2023-11-14 20:06:52 +11:00
parent 15a9c0f76e
commit b884c8e69b
6 changed files with 32 additions and 32 deletions

View file

@ -4,8 +4,9 @@ Version 1.3
* Fix crash if title logo is removed from Textures folder.
* Fix crash if unknown player state ID is encountered.
* Fix bug with OCB 2 on pushables.
* Fix pushables "stop" sound bug.
* Fix pushables camera during edge slips bug.
* Fix pushable "stop" sound bug.
* Fix pushable camera bug during edge slip.
* Separate underwater wall and ceiling switch objects into two slots each.
Version 1.2
===========

View file

@ -57,17 +57,7 @@ namespace TEN::Entities::Switches
)
};
void UnderwaterSwitchCollision(short itemNumber, ItemInfo* laraItem, CollisionInfo* coll)
{
auto* switchItem = &g_Level.Items[itemNumber];
if (switchItem->TriggerFlags == 0)
WallUnderwaterSwitchCollision(itemNumber, laraItem, coll);
else
CeilingUnderwaterSwitchCollision(itemNumber, laraItem, coll);
}
void WallUnderwaterSwitchCollision(short itemNumber, ItemInfo* laraItem, CollisionInfo* coll)
void CollideUnderwaterWallSwitch(short itemNumber, ItemInfo* laraItem, CollisionInfo* coll)
{
auto* lara = GetLaraInfo(laraItem);
auto* switchItem = &g_Level.Items[itemNumber];
@ -106,7 +96,7 @@ namespace TEN::Entities::Switches
}
}
void CeilingUnderwaterSwitchCollision(short itemNumber, ItemInfo* laraItem, CollisionInfo* coll)
void CollideUnderwaterCeilingSwitch(short itemNumber, ItemInfo* laraItem, CollisionInfo* coll)
{
auto* lara = GetLaraInfo(laraItem);
auto* switchItem = &g_Level.Items[itemNumber];

View file

@ -5,7 +5,6 @@ struct ItemInfo;
namespace TEN::Entities::Switches
{
void UnderwaterSwitchCollision(short itemNumber, ItemInfo* laraItem, CollisionInfo* coll);
void CeilingUnderwaterSwitchCollision(short itemNumber, ItemInfo* laraItem, CollisionInfo* coll);
void WallUnderwaterSwitchCollision(short itemNumber, ItemInfo* laraItem, CollisionInfo* coll);
void CollideUnderwaterWallSwitch(short itemNumber, ItemInfo* playerItem, CollisionInfo* coll);
void CollideUnderwaterCeilingSwitch(short itemNumber, ItemInfo* playerItem, CollisionInfo* coll);
}

View file

@ -218,13 +218,23 @@ void StartSwitches(ObjectInfo* object)
object->shadowType = ShadowMode::All;
}
for (int objectNumber = ID_UNDERWATER_SWITCH1; objectNumber <= ID_UNDERWATER_SWITCH4; objectNumber++)
for (int objectID = ID_UNDERWATER_WALL_SWITCH_1; objectID <= ID_UNDERWATER_WALL_SWITCH_2; objectID++)
{
object = &Objects[objectNumber];
object = &Objects[objectID];
if (object->loaded)
{
object->control = SwitchControl;
object->collision = UnderwaterSwitchCollision;
object->collision = CollideUnderwaterWallSwitch;
}
}
for (int objectID = ID_UNDERWATER_CEILING_SWITCH_1; objectID <= ID_UNDERWATER_CEILING_SWITCH_2; objectID++)
{
object = &Objects[objectID];
if (object->loaded)
{
object->control = SwitchControl;
object->collision = CollideUnderwaterCeilingSwitch;
}
}

View file

@ -622,10 +622,10 @@ enum GAME_OBJECT_ID : short
ID_SHOOT_SWITCH3,
ID_SHOOT_SWITCH4,
ID_AIRLOCK_SWITCH,
ID_UNDERWATER_SWITCH1,
ID_UNDERWATER_SWITCH2,
ID_UNDERWATER_SWITCH3,
ID_UNDERWATER_SWITCH4,
ID_UNDERWATER_WALL_SWITCH_1,
ID_UNDERWATER_WALL_SWITCH_2,
ID_UNDERWATER_CEILING_SWITCH_1,
ID_UNDERWATER_CEILING_SWITCH_2,
ID_TURN_SWITCH,
ID_COG_SWITCH,
ID_LEVER_SWITCH,

View file

@ -623,10 +623,10 @@ The following constants are inside ObjID.
SHOOT_SWITCH3
SHOOT_SWITCH4
AIRLOCK_SWITCH
UNDERWATER_SWITCH1
UNDERWATER_SWITCH2
UNDERWATER_SWITCH3
UNDERWATER_SWITCH4
ID_UNDERWATER_WALL_SWITCH_1
ID_UNDERWATER_WALL_SWITCH_2
ID_UNDERWATER_CEILING_SWITCH_1
ID_UNDERWATER_CEILING_SWITCH_2
TURN_SWITCH
COG_SWITCH
LEVER_SWITCH
@ -1796,10 +1796,10 @@ static const std::unordered_map<std::string, GAME_OBJECT_ID> kObjIDs {
{ "SHOOT_SWITCH3", ID_SHOOT_SWITCH3 },
{ "SHOOT_SWITCH4", ID_SHOOT_SWITCH4 },
{ "AIRLOCK_SWITCH", ID_AIRLOCK_SWITCH },
{ "UNDERWATER_SWITCH1", ID_UNDERWATER_SWITCH1 },
{ "UNDERWATER_SWITCH2", ID_UNDERWATER_SWITCH2 },
{ "UNDERWATER_SWITCH3", ID_UNDERWATER_SWITCH3 },
{ "UNDERWATER_SWITCH4", ID_UNDERWATER_SWITCH4 },
{ "UNDERWATER_WALL_SWITCH_1", ID_UNDERWATER_WALL_SWITCH_1 },
{ "UNDERWATER_WALL_SWITCH_2", ID_UNDERWATER_WALL_SWITCH_2 },
{ "UNDERWATER_CEILING_SWITCH_1", ID_UNDERWATER_CEILING_SWITCH_1 },
{ "UNDERWATER_CEILING_SWITCH_2", ID_UNDERWATER_CEILING_SWITCH_2 },
{ "TURN_SWITCH", ID_TURN_SWITCH },
{ "COG_SWITCH", ID_COG_SWITCH },
{ "LEVER_SWITCH", ID_LEVER_SWITCH },