mirror of
https://github.com/TombEngine/TombEngine.git
synced 2025-05-10 20:46:47 +03:00
Added bridge collision to FALLING_BLOCK
This commit is contained in:
parent
b87c296986
commit
d878cd1c9e
3 changed files with 64 additions and 24 deletions
|
@ -307,6 +307,7 @@ void LavaBurn(ITEM_INFO* item)
|
||||||
void InitialiseFallingBlock(short itemNumber)
|
void InitialiseFallingBlock(short itemNumber)
|
||||||
{
|
{
|
||||||
g_Level.Items[itemNumber].meshBits = 1;
|
g_Level.Items[itemNumber].meshBits = 1;
|
||||||
|
T5M::Floordata::AddBridge(itemNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FallingBlockCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll)
|
void FallingBlockCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll)
|
||||||
|
@ -367,28 +368,61 @@ void FallingBlockControl(short itemNumber)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void FallingBlockFloor(ITEM_INFO* item, int x, int y, int z, int* height)
|
//void FallingBlockFloor(ITEM_INFO* item, int x, int y, int z, int* height)
|
||||||
|
//{
|
||||||
|
// if (!((x ^ item->pos.xPos) & 0xFFFFFC00) && !((z ^ item->pos.zPos) & 0xFFFFFC00))
|
||||||
|
// {
|
||||||
|
// if (y <= item->pos.yPos)
|
||||||
|
// {
|
||||||
|
// *height = item->pos.yPos;
|
||||||
|
// HeightType = WALL;
|
||||||
|
// OnFloor = 1;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
//void FallingBlockCeiling(ITEM_INFO* item, int x, int y, int z, int* height)
|
||||||
|
//{
|
||||||
|
// if (!((x ^ item->pos.xPos) & 0xFFFFFC00) && !((z ^ item->pos.zPos) & 0xFFFFFC00))
|
||||||
|
// {
|
||||||
|
// if (y > item->pos.yPos)
|
||||||
|
// {
|
||||||
|
// *height = item->pos.yPos + 256;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
std::optional<int> FallingBlockFloor(short itemNumber, int x, int y, int z)
|
||||||
{
|
{
|
||||||
if (!((x ^ item->pos.xPos) & 0xFFFFFC00) && !((z ^ item->pos.zPos) & 0xFFFFFC00))
|
ITEM_INFO* item = &g_Level.Items[itemNumber];
|
||||||
{
|
if (!item->meshBits || item->itemFlags[0] >= 52)
|
||||||
if (y <= item->pos.yPos)
|
return std::nullopt;
|
||||||
{
|
|
||||||
*height = item->pos.yPos;
|
int height = item->pos.yPos;
|
||||||
HeightType = WALL;
|
return std::optional{ height };
|
||||||
OnFloor = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FallingBlockCeiling(ITEM_INFO* item, int x, int y, int z, int* height)
|
std::optional<int> FallingBlockCeiling(short itemNumber, int x, int y, int z)
|
||||||
{
|
{
|
||||||
if (!((x ^ item->pos.xPos) & 0xFFFFFC00) && !((z ^ item->pos.zPos) & 0xFFFFFC00))
|
ITEM_INFO* item = &g_Level.Items[itemNumber];
|
||||||
{
|
|
||||||
if (y > item->pos.yPos)
|
if (!item->meshBits || item->itemFlags[0] >= 52)
|
||||||
{
|
return std::nullopt;
|
||||||
*height = item->pos.yPos + 256;
|
|
||||||
}
|
int height = item->pos.yPos + 256;
|
||||||
}
|
return std::optional{ height };
|
||||||
|
}
|
||||||
|
|
||||||
|
int FallingBlockFloorBorder(short itemNumber)
|
||||||
|
{
|
||||||
|
ITEM_INFO* item = &g_Level.Items[itemNumber];
|
||||||
|
return item->pos.yPos;
|
||||||
|
}
|
||||||
|
|
||||||
|
int FallingBlockCeilingBorder(short itemNumber)
|
||||||
|
{
|
||||||
|
ITEM_INFO* item = &g_Level.Items[itemNumber];
|
||||||
|
return (item->pos.yPos + 256);
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitialiseWreckingBall(short itemNumber)
|
void InitialiseWreckingBall(short itemNumber)
|
||||||
|
|
|
@ -13,8 +13,10 @@ void FlameEmitterControl(short itemNumber);
|
||||||
void InitialiseFallingBlock(short itemNumber);
|
void InitialiseFallingBlock(short itemNumber);
|
||||||
void FallingBlockCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll);
|
void FallingBlockCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll);
|
||||||
void FallingBlockControl(short itemNumber);
|
void FallingBlockControl(short itemNumber);
|
||||||
void FallingBlockFloor(ITEM_INFO* item, int x, int y, int z, int* height);
|
std::optional<int> FallingBlockFloor(short itemNumber, int x, int y, int z);
|
||||||
void FallingBlockCeiling(ITEM_INFO* item, int x, int y, int z, int* height);
|
std::optional<int> FallingBlockCeiling(short itemNumber, int x, int y, int z);
|
||||||
|
int FallingBlockFloorBorder(short itemNumber);
|
||||||
|
int FallingBlockCeilingBorder(short itemNumber);
|
||||||
void InitialiseWreckingBall(short itemNumber);
|
void InitialiseWreckingBall(short itemNumber);
|
||||||
void WreckingBallCollision(short itemNumber, ITEM_INFO* l, COLL_INFO* coll);
|
void WreckingBallCollision(short itemNumber, ITEM_INFO* l, COLL_INFO* coll);
|
||||||
void WreckingBallControl(short itemNumber);
|
void WreckingBallControl(short itemNumber);
|
||||||
|
|
|
@ -492,8 +492,10 @@ void TrapObjects()
|
||||||
obj->initialise = InitialiseFallingBlock;
|
obj->initialise = InitialiseFallingBlock;
|
||||||
obj->collision = FallingBlockCollision;
|
obj->collision = FallingBlockCollision;
|
||||||
obj->control = FallingBlockControl;
|
obj->control = FallingBlockControl;
|
||||||
//obj->floor = FallingBlockFloor;
|
obj->floor = FallingBlockFloor;
|
||||||
//obj->ceiling = FallingBlockCeiling;
|
obj->ceiling = FallingBlockCeiling;
|
||||||
|
obj->floorBorder = FallingBlockFloorBorder;
|
||||||
|
obj->ceilingBorder = FallingBlockCeilingBorder;
|
||||||
obj->saveFlags = true;
|
obj->saveFlags = true;
|
||||||
obj->savePosition = true;
|
obj->savePosition = true;
|
||||||
}
|
}
|
||||||
|
@ -504,8 +506,10 @@ void TrapObjects()
|
||||||
obj->initialise = InitialiseFallingBlock;
|
obj->initialise = InitialiseFallingBlock;
|
||||||
obj->collision = FallingBlockCollision;
|
obj->collision = FallingBlockCollision;
|
||||||
obj->control = FallingBlockControl;
|
obj->control = FallingBlockControl;
|
||||||
//obj->floor = FallingBlockFloor;
|
obj->floor = FallingBlockFloor;
|
||||||
//obj->ceiling = FallingBlockCeiling;
|
obj->ceiling = FallingBlockCeiling;
|
||||||
|
obj->floorBorder = FallingBlockFloorBorder;
|
||||||
|
obj->ceilingBorder = FallingBlockCeilingBorder;
|
||||||
obj->saveFlags = true;
|
obj->saveFlags = true;
|
||||||
obj->savePosition = true;
|
obj->savePosition = true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue