mirror of
https://github.com/TombEngine/TombEngine.git
synced 2025-05-06 19:01:06 +03:00
Merge branch 'master' into PushableOCB
This commit is contained in:
commit
6eb1a5e963
49 changed files with 1672 additions and 1360 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -20,3 +20,4 @@ x64/
|
|||
*.wav
|
||||
*.trc
|
||||
*.str
|
||||
/TR5Main/Release
|
||||
|
|
10
TR5Main.sln
10
TR5Main.sln
|
@ -1,24 +1,18 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.28803.452
|
||||
# Visual Studio 15
|
||||
VisualStudioVersion = 15.0.28307.1300
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TR5Main", "TR5Main\TR5Main.vcxproj", "{15AB0220-541C-4DA1-94EB-ED3C47E4582E}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{15AB0220-541C-4DA1-94EB-ED3C47E4582E}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
{15AB0220-541C-4DA1-94EB-ED3C47E4582E}.Debug|x64.Build.0 = Debug|Win32
|
||||
{15AB0220-541C-4DA1-94EB-ED3C47E4582E}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{15AB0220-541C-4DA1-94EB-ED3C47E4582E}.Debug|x86.Build.0 = Debug|Win32
|
||||
{15AB0220-541C-4DA1-94EB-ED3C47E4582E}.Release|x64.ActiveCfg = Release|Win32
|
||||
{15AB0220-541C-4DA1-94EB-ED3C47E4582E}.Release|x64.Build.0 = Release|Win32
|
||||
{15AB0220-541C-4DA1-94EB-ED3C47E4582E}.Release|x86.ActiveCfg = Release|Win32
|
||||
{15AB0220-541C-4DA1-94EB-ED3C47E4582E}.Release|x86.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
|
|
|
@ -358,7 +358,7 @@ function<LaraRoutineFunction> lara_collision_routines[NUM_LARA_STATES + 1] = {
|
|||
lara_default_col
|
||||
};
|
||||
|
||||
void LaraControl(short itemNumber) // (AF) (D)
|
||||
void LaraControl(short itemNumber)
|
||||
{
|
||||
ITEM_INFO* item = LaraItem;
|
||||
|
||||
|
@ -931,7 +931,7 @@ void LaraAboveWater(ITEM_INFO* item, COLL_INFO* coll) //hmmmm
|
|||
TestTriggers(coll->trigger, FALSE, 0);
|
||||
}
|
||||
|
||||
void LaraUnderWater(ITEM_INFO* item, COLL_INFO* coll)//4BFB4, 4C418 (F)
|
||||
void LaraUnderWater(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
coll->badPos = 32512;
|
||||
coll->badNeg = -400;
|
||||
|
@ -1041,7 +1041,7 @@ void LaraUnderWater(ITEM_INFO* item, COLL_INFO* coll)//4BFB4, 4C418 (F)
|
|||
TestTriggers(coll->trigger, 0, 0);
|
||||
}
|
||||
|
||||
void LaraSurface(ITEM_INFO* item, COLL_INFO* coll)//4D684, 4DAE8 (F)
|
||||
void LaraSurface(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
Camera.targetElevation = -ANGLE(22);
|
||||
|
||||
|
@ -1098,7 +1098,7 @@ void LaraSurface(ITEM_INFO* item, COLL_INFO* coll)//4D684, 4DAE8 (F)
|
|||
TestTriggers(coll->trigger, 0, 0);
|
||||
}
|
||||
|
||||
void LaraCheat(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
void LaraCheat(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
LaraItem->hitPoints = 1000;
|
||||
LaraUnderWater(item, coll);
|
||||
|
|
|
@ -14,12 +14,12 @@
|
|||
bool DoJump = false;
|
||||
|
||||
/*generic functions*/
|
||||
void lara_void_func(ITEM_INFO* item, COLL_INFO* coll)//19928(<), 19A5C(<) (F)
|
||||
void lara_void_func(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
void lara_default_col(ITEM_INFO* item, COLL_INFO* coll)//1C80C(<), 1C940(<) (F)
|
||||
void lara_default_col(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
Lara.moveAngle = item->pos.yRot;
|
||||
coll->badPos = 384;
|
||||
|
@ -31,20 +31,20 @@ void lara_default_col(ITEM_INFO* item, COLL_INFO* coll)//1C80C(<), 1C940(<) (F)
|
|||
GetCollisionInfo(coll, item->pos.xPos, item->pos.yPos, item->pos.zPos, item->roomNumber, LARA_HITE);
|
||||
}
|
||||
|
||||
void lara_as_special(ITEM_INFO* item, COLL_INFO* coll)//1ADDC(<), 1AF10(<) (F)
|
||||
void lara_as_special(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
Camera.flags = CF_FOLLOW_CENTER;
|
||||
Camera.targetAngle = ANGLE(170.0f);
|
||||
Camera.targetElevation = -ANGLE(25.0f);
|
||||
}
|
||||
|
||||
void lara_as_null(ITEM_INFO* item, COLL_INFO* coll)//1A5DC(<), 1A710(<) (F)
|
||||
void lara_as_null(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
coll->enableBaddiePush = false;
|
||||
coll->enableSpaz = false;
|
||||
}
|
||||
|
||||
void lara_as_controlled(ITEM_INFO* item, COLL_INFO* coll)//1B0FC(<), 1B230(<) (F)
|
||||
void lara_as_controlled(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
Lara.look = false;
|
||||
coll->enableBaddiePush = false;
|
||||
|
@ -57,7 +57,7 @@ void lara_as_controlled(ITEM_INFO* item, COLL_INFO* coll)//1B0FC(<), 1B230(<) (F
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_controlledl(ITEM_INFO* item, COLL_INFO* coll)//1B180(<), 1B2B4(<) (F)
|
||||
void lara_as_controlledl(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
Lara.look = false;
|
||||
coll->enableBaddiePush = false;
|
||||
|
@ -67,7 +67,7 @@ void lara_as_controlledl(ITEM_INFO* item, COLL_INFO* coll)//1B180(<), 1B2B4(<) (
|
|||
/*end generic functions*/
|
||||
/*-*/
|
||||
/*basic movement*/
|
||||
void lara_as_walk(ITEM_INFO* item, COLL_INFO* coll)//191B8(<), 192EC(<) (F)
|
||||
void lara_as_walk(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 0*/
|
||||
/*collision: lara_col_walk*/
|
||||
|
@ -114,7 +114,7 @@ void lara_as_walk(ITEM_INFO* item, COLL_INFO* coll)//191B8(<), 192EC(<) (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_col_walk(ITEM_INFO* item, COLL_INFO* coll)//1B3E8, 1B51C (F)
|
||||
void lara_col_walk(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 0*/
|
||||
/*state code: lara_as_walk*/
|
||||
|
@ -180,7 +180,7 @@ void lara_col_walk(ITEM_INFO* item, COLL_INFO* coll)//1B3E8, 1B51C (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_run(ITEM_INFO* item, COLL_INFO* coll)//192EC, 19420 (F)
|
||||
void lara_as_run(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 1*/
|
||||
/*collision: lara_col_run*/
|
||||
|
@ -283,7 +283,7 @@ void lara_as_run(ITEM_INFO* item, COLL_INFO* coll)//192EC, 19420 (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_col_run(ITEM_INFO* item, COLL_INFO* coll)//1B64C, 1B780 (F)
|
||||
void lara_col_run(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 1*/
|
||||
/*state code: lara_col_run*/
|
||||
|
@ -531,7 +531,7 @@ void lara_as_stop(ITEM_INFO* item, COLL_INFO* coll)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_col_stop(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
void lara_col_stop(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 2*/
|
||||
/*state code: lara_as_stop*/
|
||||
|
@ -568,7 +568,7 @@ void lara_col_stop(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
|||
#endif
|
||||
}
|
||||
|
||||
void lara_as_forwardjump(ITEM_INFO* item, COLL_INFO* coll)//18A34, 18B68 (F)
|
||||
void lara_as_forwardjump(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 3*/
|
||||
/*collision: */
|
||||
|
@ -609,7 +609,7 @@ void lara_as_forwardjump(ITEM_INFO* item, COLL_INFO* coll)//18A34, 18B68 (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_col_forwardjump(ITEM_INFO* item, COLL_INFO* coll)//18B88, 18CBC (F)
|
||||
void lara_col_forwardjump(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 3*/
|
||||
/*state code: lara_as_forwardjump*/
|
||||
|
@ -661,14 +661,14 @@ void lara_col_forwardjump(ITEM_INFO* item, COLL_INFO* coll)//18B88, 18CBC (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_col_pose(ITEM_INFO* item, COLL_INFO* coll)//1B87C(<), 1B9B0(<) (F)
|
||||
void lara_col_pose(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 4*/
|
||||
/*state code: lara_void_func*/
|
||||
lara_col_stop(item, coll);
|
||||
}
|
||||
|
||||
void lara_as_fastback(ITEM_INFO* item, COLL_INFO* coll)//1959C(<), 196D0(<) (F)
|
||||
void lara_as_fastback(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state: 5*/
|
||||
/*collision: lara_col_fastback*/
|
||||
|
@ -687,7 +687,7 @@ void lara_as_fastback(ITEM_INFO* item, COLL_INFO* coll)//1959C(<), 196D0(<) (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_col_fastback(ITEM_INFO* item, COLL_INFO* coll)//1B89C, 1B9D0 (F)
|
||||
void lara_col_fastback(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state: 5*/
|
||||
/*state code: lara_as_fastback*/
|
||||
|
@ -730,7 +730,7 @@ void lara_col_fastback(ITEM_INFO* item, COLL_INFO* coll)//1B89C, 1B9D0 (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_turn_r(ITEM_INFO* item, COLL_INFO* coll)//19628(<), 1975C(<) (F)
|
||||
void lara_as_turn_r(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state: 6*/
|
||||
/*collision: */
|
||||
|
@ -780,7 +780,7 @@ void lara_as_turn_r(ITEM_INFO* item, COLL_INFO* coll)//19628(<), 1975C(<) (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_col_turn_r(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
void lara_col_turn_r(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state: 6*/
|
||||
/*state code: lara_as_turn_r*/
|
||||
|
@ -824,7 +824,7 @@ void lara_col_turn_r(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
|||
#endif
|
||||
}
|
||||
|
||||
void lara_as_turn_l(ITEM_INFO* item, COLL_INFO* coll)//1972C(<), 19860(<) (F)
|
||||
void lara_as_turn_l(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 7*/
|
||||
/*collision: lara_col_turn_l*/
|
||||
|
@ -873,14 +873,14 @@ void lara_as_turn_l(ITEM_INFO* item, COLL_INFO* coll)//1972C(<), 19860(<) (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_col_turn_l(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
void lara_col_turn_l(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 7*/
|
||||
/*state code: lara_as_turn_l*/
|
||||
lara_col_turn_r(item, coll);
|
||||
}
|
||||
|
||||
void lara_as_death(ITEM_INFO* item, COLL_INFO* coll)//19830(<), 19964(<) (F)
|
||||
void lara_as_death(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 8*/
|
||||
/*collision: lara_col_death*/
|
||||
|
@ -897,7 +897,7 @@ void lara_as_death(ITEM_INFO* item, COLL_INFO* coll)//19830(<), 19964(<) (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_col_death(ITEM_INFO* item, COLL_INFO* coll)//1BADC(<), 1BC10(<) (F)
|
||||
void lara_col_death(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 8*/
|
||||
/*state code: lara_as_death*/
|
||||
|
@ -920,7 +920,7 @@ void lara_col_death(ITEM_INFO* item, COLL_INFO* coll)//1BADC(<), 1BC10(<) (F)
|
|||
item->pos.yPos += coll->midFloor;
|
||||
}
|
||||
|
||||
void lara_as_fastfall(ITEM_INFO* item, COLL_INFO* coll)//198BC(<), 199F0(<) (F)
|
||||
void lara_as_fastfall(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 9*/
|
||||
/*collision: lara_col_fastfall*/
|
||||
|
@ -929,7 +929,7 @@ void lara_as_fastfall(ITEM_INFO* item, COLL_INFO* coll)//198BC(<), 199F0(<) (F)
|
|||
SoundEffect(SFX_LARA_FALL, &item->pos, 0);
|
||||
}
|
||||
|
||||
void lara_col_fastfall(ITEM_INFO* item, COLL_INFO* coll)//1BB88, 1BCBC (F)
|
||||
void lara_col_fastfall(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 9*/
|
||||
/*state code: lara_as_fastfall*/
|
||||
|
@ -967,7 +967,7 @@ void lara_col_fastfall(ITEM_INFO* item, COLL_INFO* coll)//1BB88, 1BCBC (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_reach(ITEM_INFO* item, COLL_INFO* coll)//18CE0(<), 18E14(<) (F)
|
||||
void lara_as_reach(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 11*/
|
||||
/*collision: lara_col_reach*/
|
||||
|
@ -976,7 +976,7 @@ void lara_as_reach(ITEM_INFO* item, COLL_INFO* coll)//18CE0(<), 18E14(<) (F)
|
|||
item->goalAnimState = LS_FREEFALL;
|
||||
}
|
||||
|
||||
void lara_col_reach(ITEM_INFO* item, COLL_INFO* coll)//18D0C, 18E40 (F)
|
||||
void lara_col_reach(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 11*/
|
||||
/*state code: lara_as_reach*/
|
||||
|
@ -1141,12 +1141,12 @@ void lara_col_reach(ITEM_INFO* item, COLL_INFO* coll)//18D0C, 18E40 (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_splat(ITEM_INFO* item, COLL_INFO* coll)//1A340(<), 1A474(<) (F)
|
||||
void lara_as_splat(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
Lara.look = false;
|
||||
}
|
||||
|
||||
void lara_col_splat(ITEM_INFO* item, COLL_INFO* coll)//1BC74(<), 1BDA8(<) (F)
|
||||
void lara_col_splat(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
Lara.moveAngle = item->pos.yRot;
|
||||
|
||||
|
@ -1165,7 +1165,7 @@ void lara_col_splat(ITEM_INFO* item, COLL_INFO* coll)//1BC74(<), 1BDA8(<) (F)
|
|||
item->pos.yPos += coll->midFloor;
|
||||
}
|
||||
|
||||
void lara_col_land(ITEM_INFO* item, COLL_INFO* coll)//1BD10(<), 1BE44(<) (F)
|
||||
void lara_col_land(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 14*/
|
||||
/*state code: lara_void_func*/
|
||||
|
@ -1204,7 +1204,7 @@ void lara_as_compress(ITEM_INFO* item, COLL_INFO* coll)
|
|||
item->goalAnimState = LS_FREEFALL;
|
||||
}
|
||||
|
||||
void lara_col_compress(ITEM_INFO* item, COLL_INFO* coll)//1BD30, 1BE64 (F)
|
||||
void lara_col_compress(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 15*/
|
||||
/*state code: lara_as_compress*/
|
||||
|
@ -1241,7 +1241,7 @@ void lara_col_compress(ITEM_INFO* item, COLL_INFO* coll)//1BD30, 1BE64 (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_back(ITEM_INFO* item, COLL_INFO* coll)//1A4F0(<), 1A624(<) (F)
|
||||
void lara_as_back(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 16*/
|
||||
/*collision: lara_col_back*/
|
||||
|
@ -1273,7 +1273,7 @@ void lara_as_back(ITEM_INFO* item, COLL_INFO* coll)//1A4F0(<), 1A624(<) (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_col_back(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
void lara_col_back(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 16*/
|
||||
/*state code: lara_as_back*/
|
||||
|
@ -1321,7 +1321,7 @@ void lara_col_back(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
|||
#endif
|
||||
}
|
||||
|
||||
void lara_as_fastturn(ITEM_INFO* item, COLL_INFO* coll)//1A5F8(<), 1A72C(<) (F)
|
||||
void lara_as_fastturn(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 20*/
|
||||
/*collision: lara_col_fastturn*/
|
||||
|
@ -1347,14 +1347,14 @@ void lara_as_fastturn(ITEM_INFO* item, COLL_INFO* coll)//1A5F8(<), 1A72C(<) (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_col_fastturn(ITEM_INFO* item, COLL_INFO* coll)//1A65C(<), 1A790(<) (F)
|
||||
void lara_col_fastturn(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 20*/
|
||||
/*state code: lara_as_fastturn*/
|
||||
lara_col_stop(item, coll);
|
||||
}
|
||||
|
||||
void lara_as_stepright(ITEM_INFO* item, COLL_INFO* coll)//1A67C(<), 1A7B0(<) (F)
|
||||
void lara_as_stepright(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 21*/
|
||||
/*collision: lara_col_stepright*/
|
||||
|
@ -1388,7 +1388,7 @@ void lara_as_stepright(ITEM_INFO* item, COLL_INFO* coll)//1A67C(<), 1A7B0(<) (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_col_stepright(ITEM_INFO* item, COLL_INFO* coll)//1BFB0, 1C0E4 (F)
|
||||
void lara_col_stepright(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 21*/
|
||||
/*state code: lara_as_stepright*/
|
||||
|
@ -1424,7 +1424,7 @@ void lara_col_stepright(ITEM_INFO* item, COLL_INFO* coll)//1BFB0, 1C0E4 (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_stepleft(ITEM_INFO* item, COLL_INFO* coll)//1A750(<), 1A884(<) (F)
|
||||
void lara_as_stepleft(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 22*/
|
||||
/*collision: lara_col_stepleft*/
|
||||
|
@ -1458,14 +1458,14 @@ void lara_as_stepleft(ITEM_INFO* item, COLL_INFO* coll)//1A750(<), 1A884(<) (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_col_stepleft(ITEM_INFO* item, COLL_INFO* coll)//1C0E8(<), 1C21C(<) (F)
|
||||
void lara_col_stepleft(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 22*/
|
||||
/*state code: lara_as_stepleft*/
|
||||
lara_col_stepright(item, coll);
|
||||
}
|
||||
|
||||
void lara_col_roll2(ITEM_INFO* item, COLL_INFO* coll)//1C384, 1C4B8 (F)
|
||||
void lara_col_roll2(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 23*/
|
||||
/*state code: lara_void_func*/
|
||||
|
@ -1505,7 +1505,7 @@ void lara_col_roll2(ITEM_INFO* item, COLL_INFO* coll)//1C384, 1C4B8 (F)
|
|||
item->pos.yPos += coll->midFloor;
|
||||
}
|
||||
|
||||
void lara_as_backjump(ITEM_INFO* item, COLL_INFO* coll)//1A854(<), 1A988(<) (F)
|
||||
void lara_as_backjump(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 25*/
|
||||
/*collision: lara_col_backjump*/
|
||||
|
@ -1527,7 +1527,7 @@ void lara_as_backjump(ITEM_INFO* item, COLL_INFO* coll)//1A854(<), 1A988(<) (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_col_backjump(ITEM_INFO* item, COLL_INFO* coll)//1C130(<), 1C264(<) (F)
|
||||
void lara_col_backjump(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 25*/
|
||||
/*state code: lara_as_backjump*/
|
||||
|
@ -1535,7 +1535,7 @@ void lara_col_backjump(ITEM_INFO* item, COLL_INFO* coll)//1C130(<), 1C264(<) (F)
|
|||
lara_col_jumper(item, coll);
|
||||
}
|
||||
|
||||
void lara_as_rightjump(ITEM_INFO* item, COLL_INFO* coll)//1A8C4(<), 1A9F8(<) (F)
|
||||
void lara_as_rightjump(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 26*/
|
||||
/*collision: lara_col_rightjump*/
|
||||
|
@ -1546,7 +1546,7 @@ void lara_as_rightjump(ITEM_INFO* item, COLL_INFO* coll)//1A8C4(<), 1A9F8(<) (F)
|
|||
item->goalAnimState = LS_JUMP_ROLL_180;
|
||||
}
|
||||
|
||||
void lara_col_rightjump(ITEM_INFO* item, COLL_INFO* coll)//1C15C(<), 1C290(<) (F)
|
||||
void lara_col_rightjump(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 26*/
|
||||
/*state code: lara_as_rightjump*/
|
||||
|
@ -1554,7 +1554,7 @@ void lara_col_rightjump(ITEM_INFO* item, COLL_INFO* coll)//1C15C(<), 1C290(<) (F
|
|||
lara_col_jumper(item, coll);
|
||||
}
|
||||
|
||||
void lara_as_leftjump(ITEM_INFO* item, COLL_INFO* coll)//1A92C(<), 1AA60(<) (F)
|
||||
void lara_as_leftjump(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 27*/
|
||||
/*collision: lara_col_leftjump*/
|
||||
|
@ -1565,7 +1565,7 @@ void lara_as_leftjump(ITEM_INFO* item, COLL_INFO* coll)//1A92C(<), 1AA60(<) (F)
|
|||
item->goalAnimState = LS_JUMP_ROLL_180;
|
||||
}
|
||||
|
||||
void lara_col_leftjump(ITEM_INFO* item, COLL_INFO* coll)//1C188(<), 1C2BC(<) (F)
|
||||
void lara_col_leftjump(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 27*/
|
||||
/*state code: lara_as_leftjump*/
|
||||
|
@ -1600,7 +1600,7 @@ void lara_col_jumper(ITEM_INFO* item, COLL_INFO* coll)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_upjump(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
void lara_as_upjump(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 28*/
|
||||
/*collision: lara_col_upjump*/
|
||||
|
@ -1610,7 +1610,7 @@ void lara_as_upjump(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_col_upjump(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
void lara_col_upjump(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 28*/
|
||||
/*state code: lara_as_upjump*/
|
||||
|
@ -1774,7 +1774,7 @@ void lara_col_upjump(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_fallback(ITEM_INFO* item, COLL_INFO* coll)//1959C(<), 196D0(<) (F)
|
||||
void lara_as_fallback(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 29*/
|
||||
/*collision: lara_col_fallback*/
|
||||
|
@ -1786,7 +1786,7 @@ void lara_as_fallback(ITEM_INFO* item, COLL_INFO* coll)//1959C(<), 196D0(<) (F)
|
|||
item->goalAnimState = LS_REACH;
|
||||
}
|
||||
|
||||
void lara_col_fallback(ITEM_INFO* item, COLL_INFO* coll)//1C1B4(<), 1C2E8(<) (F)
|
||||
void lara_col_fallback(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 29*/
|
||||
/*state code: lara_as_fallback*/
|
||||
|
@ -1815,7 +1815,7 @@ void lara_col_fallback(ITEM_INFO* item, COLL_INFO* coll)//1C1B4(<), 1C2E8(<) (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_col_roll(ITEM_INFO* item, COLL_INFO* coll)//1C2B0, 1C3E4 (F)
|
||||
void lara_col_roll(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 45*/
|
||||
/*state code: lara_void_func*/
|
||||
|
@ -1851,7 +1851,7 @@ void lara_col_roll(ITEM_INFO* item, COLL_INFO* coll)//1C2B0, 1C3E4 (F)
|
|||
item->pos.yPos += coll->midFloor;
|
||||
}
|
||||
|
||||
void lara_as_swandive(ITEM_INFO* item, COLL_INFO* coll)//1AE08(<), 1AF3C(<) (F)
|
||||
void lara_as_swandive(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 52*/
|
||||
/*collision: lara_col_swandive*/
|
||||
|
@ -1861,7 +1861,7 @@ void lara_as_swandive(ITEM_INFO* item, COLL_INFO* coll)//1AE08(<), 1AF3C(<) (F)
|
|||
item->goalAnimState = LS_SWANDIVE_END;
|
||||
}
|
||||
|
||||
void lara_col_swandive(ITEM_INFO* item, COLL_INFO* coll)//1C4A0(<), 1C5D4(<) (F)
|
||||
void lara_col_swandive(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 52*/
|
||||
/*state code: lara_as_swandive*/
|
||||
|
@ -1886,7 +1886,7 @@ void lara_col_swandive(ITEM_INFO* item, COLL_INFO* coll)//1C4A0(<), 1C5D4(<) (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_fastdive(ITEM_INFO* item, COLL_INFO* coll)//1AE4C(<), 1AF80(<) (F)
|
||||
void lara_as_fastdive(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 53*/
|
||||
/*collision: lara_col_fastdive*/
|
||||
|
@ -1897,7 +1897,7 @@ void lara_as_fastdive(ITEM_INFO* item, COLL_INFO* coll)//1AE4C(<), 1AF80(<) (F)
|
|||
item->speed = (item->speed * 95) / 100;
|
||||
}
|
||||
|
||||
void lara_col_fastdive(ITEM_INFO* item, COLL_INFO* coll)//1C558(<), 1C68C(<) (F)
|
||||
void lara_col_fastdive(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 53*/
|
||||
/*state code: lara_as_fastdive*/
|
||||
|
@ -1926,7 +1926,7 @@ void lara_col_fastdive(ITEM_INFO* item, COLL_INFO* coll)//1C558(<), 1C68C(<) (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_gymnast(ITEM_INFO* item, COLL_INFO* coll)//1AEC8(<), 1AFFC(<) (F)
|
||||
void lara_as_gymnast(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 54*/
|
||||
/*collision: lara_default_col*/
|
||||
|
@ -1934,7 +1934,7 @@ void lara_as_gymnast(ITEM_INFO* item, COLL_INFO* coll)//1AEC8(<), 1AFFC(<) (F)
|
|||
coll->enableSpaz = false;
|
||||
}
|
||||
|
||||
void lara_as_wade(ITEM_INFO* item, COLL_INFO* coll)//1AF10, 1B044 (F)
|
||||
void lara_as_wade(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 65*/
|
||||
/*collision: lara_col_wade*/
|
||||
|
@ -2078,7 +2078,7 @@ void lara_col_wade(ITEM_INFO* item, COLL_INFO* coll)
|
|||
item->pos.yPos += SWAMP_GRAVITY;
|
||||
}
|
||||
|
||||
void lara_as_dash(ITEM_INFO* item, COLL_INFO* coll)//15A28, 15B5C (F)
|
||||
void lara_as_dash(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 73*/
|
||||
/*collision: lara_col_dash*/
|
||||
|
@ -2143,7 +2143,7 @@ void lara_as_dash(ITEM_INFO* item, COLL_INFO* coll)//15A28, 15B5C (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_col_dash(ITEM_INFO* item, COLL_INFO* coll)//15C50, 15D84 (F)
|
||||
void lara_col_dash(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 73*/
|
||||
/*state code: lara_as_dash*/
|
||||
|
@ -2205,7 +2205,7 @@ void lara_col_dash(ITEM_INFO* item, COLL_INFO* coll)//15C50, 15D84 (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_dashdive(ITEM_INFO* item, COLL_INFO* coll)//15E1C(<), 15F50(<) (F)
|
||||
void lara_as_dashdive(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 74*/
|
||||
/*collision: lara_col_dashdive*/
|
||||
|
@ -2216,7 +2216,7 @@ void lara_as_dashdive(ITEM_INFO* item, COLL_INFO* coll)//15E1C(<), 15F50(<) (F)
|
|||
item->goalAnimState = LS_FREEFALL;
|
||||
}
|
||||
|
||||
void lara_col_dashdive(ITEM_INFO* item, COLL_INFO* coll)//15E5C, 15F90 (F)
|
||||
void lara_col_dashdive(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 74*/
|
||||
/*state code: lara_as_dashdive*/
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
extern GameFlow* g_GameFlow;
|
||||
int NoCheatCounter;
|
||||
|
||||
void lara_as_swimcheat(ITEM_INFO* item, COLL_INFO* coll)//4C3A8, 4C80C (F)
|
||||
void lara_as_swimcheat(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
if (TrInput & IN_FORWARD)
|
||||
{
|
||||
|
@ -63,7 +63,7 @@ void lara_as_swimcheat(ITEM_INFO* item, COLL_INFO* coll)//4C3A8, 4C80C (F)
|
|||
}
|
||||
}
|
||||
|
||||
void LaraCheatyBits() // (F) (D)
|
||||
void LaraCheatyBits()
|
||||
{
|
||||
if (g_GameFlow->FlyCheat)
|
||||
{
|
||||
|
@ -108,7 +108,7 @@ void LaraCheatyBits() // (F) (D)
|
|||
NoCheatCounter--;
|
||||
}
|
||||
|
||||
void LaraCheatGetStuff() // (F) (D)
|
||||
void LaraCheatGetStuff()
|
||||
{
|
||||
Lara.NumFlares = -1;
|
||||
Lara.NumSmallMedipacks = -1;
|
||||
|
@ -126,7 +126,7 @@ void LaraCheatGetStuff() // (F) (D)
|
|||
Lara.Weapons[WEAPON_REVOLVER].SelectedAmmo = WEAPON_AMMO1;
|
||||
Lara.Weapons[WEAPON_REVOLVER].HasLasersight = false;
|
||||
Lara.Weapons[WEAPON_REVOLVER].HasSilencer = false;
|
||||
Lara.Weapons[WEAPON_REVOLVER].Ammo[WEAPON_AMMO1] = -1;
|
||||
Lara.Weapons[WEAPON_REVOLVER].Ammo[WEAPON_AMMO1].setInfinite(true);
|
||||
}
|
||||
|
||||
if (Objects[ID_UZI_ITEM].loaded)
|
||||
|
@ -135,7 +135,7 @@ void LaraCheatGetStuff() // (F) (D)
|
|||
Lara.Weapons[WEAPON_UZI].SelectedAmmo = WEAPON_AMMO1;
|
||||
Lara.Weapons[WEAPON_UZI].HasLasersight = false;
|
||||
Lara.Weapons[WEAPON_UZI].HasSilencer = false;
|
||||
Lara.Weapons[WEAPON_UZI].Ammo[WEAPON_AMMO1] = -1;
|
||||
Lara.Weapons[WEAPON_UZI].Ammo[WEAPON_AMMO1].setInfinite(true);
|
||||
}
|
||||
|
||||
if (Objects[ID_SHOTGUN_ITEM].loaded)
|
||||
|
@ -144,7 +144,7 @@ void LaraCheatGetStuff() // (F) (D)
|
|||
Lara.Weapons[WEAPON_SHOTGUN].SelectedAmmo = WEAPON_AMMO1;
|
||||
Lara.Weapons[WEAPON_SHOTGUN].HasLasersight = false;
|
||||
Lara.Weapons[WEAPON_SHOTGUN].HasSilencer = false;
|
||||
Lara.Weapons[WEAPON_SHOTGUN].Ammo[WEAPON_AMMO1] = -1;
|
||||
Lara.Weapons[WEAPON_SHOTGUN].Ammo[WEAPON_AMMO1].setInfinite(true);
|
||||
}
|
||||
|
||||
if (Objects[ID_HARPOON_ITEM].loaded)
|
||||
|
@ -153,7 +153,7 @@ void LaraCheatGetStuff() // (F) (D)
|
|||
Lara.Weapons[WEAPON_HARPOON_GUN].SelectedAmmo = WEAPON_AMMO1;
|
||||
Lara.Weapons[WEAPON_HARPOON_GUN].HasLasersight = false;
|
||||
Lara.Weapons[WEAPON_HARPOON_GUN].HasSilencer = false;
|
||||
Lara.Weapons[WEAPON_HARPOON_GUN].Ammo[WEAPON_AMMO1] = -1;
|
||||
Lara.Weapons[WEAPON_HARPOON_GUN].Ammo[WEAPON_AMMO1].setInfinite(true);
|
||||
}
|
||||
|
||||
if (Objects[ID_GRENADE_GUN_ITEM].loaded)
|
||||
|
@ -161,9 +161,9 @@ void LaraCheatGetStuff() // (F) (D)
|
|||
Lara.Weapons[WEAPON_GRENADE_LAUNCHER].Present = true;
|
||||
Lara.Weapons[WEAPON_GRENADE_LAUNCHER].SelectedAmmo = WEAPON_AMMO1;
|
||||
Lara.Weapons[WEAPON_GRENADE_LAUNCHER].HasSilencer = false;
|
||||
Lara.Weapons[WEAPON_GRENADE_LAUNCHER].Ammo[WEAPON_AMMO1] = -1;
|
||||
Lara.Weapons[WEAPON_GRENADE_LAUNCHER].Ammo[WEAPON_AMMO2] = -1;
|
||||
Lara.Weapons[WEAPON_GRENADE_LAUNCHER].Ammo[WEAPON_AMMO3] = -1;
|
||||
Lara.Weapons[WEAPON_GRENADE_LAUNCHER].Ammo[WEAPON_AMMO1].setInfinite(true);
|
||||
Lara.Weapons[WEAPON_GRENADE_LAUNCHER].Ammo[WEAPON_AMMO2].setInfinite(true);
|
||||
Lara.Weapons[WEAPON_GRENADE_LAUNCHER].Ammo[WEAPON_AMMO3].setInfinite(true);
|
||||
}
|
||||
|
||||
if (Objects[ID_ROCKET_LAUNCHER_ITEM].loaded)
|
||||
|
@ -172,7 +172,7 @@ void LaraCheatGetStuff() // (F) (D)
|
|||
Lara.Weapons[WEAPON_ROCKET_LAUNCHER].SelectedAmmo = WEAPON_AMMO1;
|
||||
Lara.Weapons[WEAPON_ROCKET_LAUNCHER].HasLasersight = false;
|
||||
Lara.Weapons[WEAPON_ROCKET_LAUNCHER].HasSilencer = false;
|
||||
Lara.Weapons[WEAPON_ROCKET_LAUNCHER].Ammo[WEAPON_AMMO1] = -1;
|
||||
Lara.Weapons[WEAPON_ROCKET_LAUNCHER].Ammo[WEAPON_AMMO1].setInfinite(true);
|
||||
}
|
||||
|
||||
if (Objects[ID_HK_ITEM].loaded)
|
||||
|
@ -181,7 +181,7 @@ void LaraCheatGetStuff() // (F) (D)
|
|||
Lara.Weapons[WEAPON_HK].SelectedAmmo = WEAPON_AMMO1;
|
||||
Lara.Weapons[WEAPON_HK].HasLasersight = false;
|
||||
Lara.Weapons[WEAPON_HK].HasSilencer = false;
|
||||
Lara.Weapons[WEAPON_HK].Ammo[WEAPON_AMMO1] = -1;
|
||||
Lara.Weapons[WEAPON_HK].Ammo[WEAPON_AMMO1].setInfinite(true);
|
||||
}
|
||||
|
||||
if (Objects[ID_CROSSBOW_ITEM].loaded)
|
||||
|
@ -190,15 +190,15 @@ void LaraCheatGetStuff() // (F) (D)
|
|||
Lara.Weapons[WEAPON_CROSSBOW].SelectedAmmo = WEAPON_AMMO1;
|
||||
Lara.Weapons[WEAPON_CROSSBOW].HasLasersight = false;
|
||||
Lara.Weapons[WEAPON_CROSSBOW].HasSilencer = false;
|
||||
Lara.Weapons[WEAPON_CROSSBOW].Ammo[WEAPON_AMMO1] = -1;
|
||||
Lara.Weapons[WEAPON_CROSSBOW].Ammo[WEAPON_AMMO2] = -1;
|
||||
Lara.Weapons[WEAPON_CROSSBOW].Ammo[WEAPON_AMMO3] = -1;
|
||||
Lara.Weapons[WEAPON_CROSSBOW].Ammo[WEAPON_AMMO1].setInfinite(true);
|
||||
Lara.Weapons[WEAPON_CROSSBOW].Ammo[WEAPON_AMMO2].setInfinite(true);
|
||||
Lara.Weapons[WEAPON_CROSSBOW].Ammo[WEAPON_AMMO3].setInfinite(true);
|
||||
}
|
||||
|
||||
g_Inventory.LoadObjects(false);
|
||||
}
|
||||
|
||||
void DelsGiveLaraItemsCheat() // (AF) (D)
|
||||
void DelsGiveLaraItemsCheat()
|
||||
{
|
||||
int i;
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ short LeftExtRightIntTab[4] = // offset 0xA0B84
|
|||
0x0200, 0x0400, 0x0800, 0x0100
|
||||
};
|
||||
|
||||
short GetClimbTrigger(int x, int y, int z, short roomNumber) // (F) (D)
|
||||
short GetClimbTrigger(int x, int y, int z, short roomNumber)
|
||||
{
|
||||
GetFloorHeight(GetFloor(x, y, z, &roomNumber), x, y, z);
|
||||
|
||||
|
@ -37,12 +37,12 @@ short GetClimbTrigger(int x, int y, int z, short roomNumber) // (F) (D)
|
|||
return (*data & DATA_TYPE) == CLIMB_TYPE ? *data : 0;
|
||||
}
|
||||
|
||||
void lara_col_climbend(ITEM_INFO* item, COLL_INFO* coll)//46E30(<), 47294(<) (F)
|
||||
void lara_col_climbend(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
void lara_as_climbend(ITEM_INFO* item, COLL_INFO* coll)//46DF8(<), 4725C(<) (F)
|
||||
void lara_as_climbend(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
coll->enableBaddiePush = false;
|
||||
coll->enableSpaz = false;
|
||||
|
@ -51,7 +51,7 @@ void lara_as_climbend(ITEM_INFO* item, COLL_INFO* coll)//46DF8(<), 4725C(<) (F)
|
|||
Camera.targetAngle = -ANGLE(45);
|
||||
}
|
||||
|
||||
void lara_col_climbdown(ITEM_INFO* item, COLL_INFO* coll)//46BD0, 47034 (F)
|
||||
void lara_col_climbdown(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
if (LaraCheckForLetGo(item, coll)
|
||||
|| item->animNumber != LA_LADDER_DOWN)
|
||||
|
@ -132,7 +132,7 @@ void lara_col_climbdown(ITEM_INFO* item, COLL_INFO* coll)//46BD0, 47034 (F)
|
|||
AnimateLara(item);
|
||||
}
|
||||
|
||||
void lara_as_climbdown(ITEM_INFO* item, COLL_INFO* coll)//46BA4(<), 47008(<) (F)
|
||||
void lara_as_climbdown(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
coll->enableBaddiePush = false;
|
||||
coll->enableSpaz = false;
|
||||
|
@ -140,7 +140,7 @@ void lara_as_climbdown(ITEM_INFO* item, COLL_INFO* coll)//46BA4(<), 47008(<) (F)
|
|||
Camera.targetElevation = -ANGLE(45);
|
||||
}
|
||||
|
||||
void lara_col_climbing(ITEM_INFO* item, COLL_INFO* coll)//469B0, 46E14 (F)
|
||||
void lara_col_climbing(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
if (!LaraCheckForLetGo(item, coll) && item->animNumber == LA_LADDER_UP)
|
||||
{
|
||||
|
@ -212,7 +212,7 @@ void lara_col_climbing(ITEM_INFO* item, COLL_INFO* coll)//469B0, 46E14 (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_climbing(ITEM_INFO* item, COLL_INFO* coll)//46984(<), 46DE8(<) (F)
|
||||
void lara_as_climbing(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
coll->enableBaddiePush = false;
|
||||
coll->enableSpaz = false;
|
||||
|
@ -220,7 +220,7 @@ void lara_as_climbing(ITEM_INFO* item, COLL_INFO* coll)//46984(<), 46DE8(<) (F)
|
|||
Camera.targetElevation = ANGLE(30);
|
||||
}
|
||||
|
||||
void lara_col_climbright(ITEM_INFO* item, COLL_INFO* coll)//46908(<), 46D6C(<) (F)
|
||||
void lara_col_climbright(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
if (!LaraCheckForLetGo(item, coll))
|
||||
{
|
||||
|
@ -230,7 +230,7 @@ void lara_col_climbright(ITEM_INFO* item, COLL_INFO* coll)//46908(<), 46D6C(<) (
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_climbright(ITEM_INFO* item, COLL_INFO* coll)//468B8(<), 46D1C(<) (F)
|
||||
void lara_as_climbright(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
coll->enableBaddiePush = false;
|
||||
coll->enableSpaz = false;
|
||||
|
@ -242,7 +242,7 @@ void lara_as_climbright(ITEM_INFO* item, COLL_INFO* coll)//468B8(<), 46D1C(<) (F
|
|||
item->goalAnimState = LS_LADDER_IDLE;
|
||||
}
|
||||
|
||||
void lara_col_climbleft(ITEM_INFO* item, COLL_INFO* coll)//46834(<), 46C98(<) (F)
|
||||
void lara_col_climbleft(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
if (!LaraCheckForLetGo(item, coll))
|
||||
{
|
||||
|
@ -252,7 +252,7 @@ void lara_col_climbleft(ITEM_INFO* item, COLL_INFO* coll)//46834(<), 46C98(<) (F
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_climbleft(ITEM_INFO* item, COLL_INFO* coll)//467E4(<), 46C48(<) (F)
|
||||
void lara_as_climbleft(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
coll->enableBaddiePush = false;
|
||||
coll->enableSpaz = false;
|
||||
|
@ -264,7 +264,7 @@ void lara_as_climbleft(ITEM_INFO* item, COLL_INFO* coll)//467E4(<), 46C48(<) (F)
|
|||
item->goalAnimState = LS_LADDER_IDLE;
|
||||
}
|
||||
|
||||
void lara_col_climbstnc(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
void lara_col_climbstnc(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
int yShift;
|
||||
int resultRight, resultLeft;
|
||||
|
@ -360,7 +360,7 @@ void lara_col_climbstnc(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_climbstnc(ITEM_INFO* item, COLL_INFO* coll)//463F0, 46854 (F)
|
||||
void lara_as_climbstnc(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
Lara.isClimbing = true;
|
||||
|
||||
|
@ -422,7 +422,7 @@ void lara_as_stepoff_right(ITEM_INFO* item, COLL_INFO* coll)
|
|||
item->pos.yRot += ANGLE(90.0f);
|
||||
}
|
||||
|
||||
int LaraTestClimbPos(ITEM_INFO* item, int front, int right, int origin, int height, int* shift) // (F) (D)
|
||||
int LaraTestClimbPos(ITEM_INFO* item, int front, int right, int origin, int height, int* shift)
|
||||
{
|
||||
int x;
|
||||
int z;
|
||||
|
@ -460,7 +460,7 @@ int LaraTestClimbPos(ITEM_INFO* item, int front, int right, int origin, int heig
|
|||
return LaraTestClimb(x, item->pos.yPos + origin, z, xFront, zFront, height, item->roomNumber, shift);
|
||||
}
|
||||
|
||||
void LaraDoClimbLeftRight(ITEM_INFO* item, COLL_INFO* coll, int result, int shift)//46100, 46564 (F)
|
||||
void LaraDoClimbLeftRight(ITEM_INFO* item, COLL_INFO* coll, int result, int shift)
|
||||
{
|
||||
if (result == 1)
|
||||
{
|
||||
|
@ -592,7 +592,7 @@ void LaraDoClimbLeftRight(ITEM_INFO* item, COLL_INFO* coll, int result, int shif
|
|||
AnimateLara(item);
|
||||
}
|
||||
|
||||
int LaraClimbRightCornerTest(ITEM_INFO* item, COLL_INFO* coll)//45DE4, 46248
|
||||
int LaraClimbRightCornerTest(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
int result = 0;
|
||||
|
||||
|
@ -690,7 +690,7 @@ int LaraClimbRightCornerTest(ITEM_INFO* item, COLL_INFO* coll)//45DE4, 46248
|
|||
return result;
|
||||
}
|
||||
|
||||
int LaraClimbLeftCornerTest(ITEM_INFO* item, COLL_INFO* coll)//45ABC, 45F20
|
||||
int LaraClimbLeftCornerTest(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
int result = 0;
|
||||
|
||||
|
@ -790,7 +790,7 @@ int LaraClimbLeftCornerTest(ITEM_INFO* item, COLL_INFO* coll)//45ABC, 45F20
|
|||
return result;
|
||||
}
|
||||
|
||||
int LaraTestClimb(int x, int y, int z, int xFront, int zFront, int itemHeight, int itemRoom, int* shift)//457F0, 45C54
|
||||
int LaraTestClimb(int x, int y, int z, int xFront, int zFront, int itemHeight, int itemRoom, int* shift)
|
||||
{
|
||||
|
||||
*shift = 0;
|
||||
|
@ -886,7 +886,7 @@ int LaraTestClimb(int x, int y, int z, int xFront, int zFront, int itemHeight, i
|
|||
return -1;
|
||||
}
|
||||
|
||||
int LaraTestClimbUpPos(ITEM_INFO* item, int front, int right, int* shift, int* ledge)//45530, 45994
|
||||
int LaraTestClimbUpPos(ITEM_INFO* item, int front, int right, int* shift, int* ledge)
|
||||
{
|
||||
int y = item->pos.yPos - 768;
|
||||
|
||||
|
@ -987,7 +987,7 @@ int LaraTestClimbUpPos(ITEM_INFO* item, int front, int right, int* shift, int* l
|
|||
return -2;
|
||||
}
|
||||
|
||||
int LaraCheckForLetGo(ITEM_INFO* item, COLL_INFO* coll)//45434, 45898 (F)
|
||||
int LaraCheckForLetGo(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
short roomNumber = item->roomNumber;
|
||||
|
||||
|
@ -999,7 +999,7 @@ int LaraCheckForLetGo(ITEM_INFO* item, COLL_INFO* coll)//45434, 45898 (F)
|
|||
|
||||
coll->trigger = TriggerIndex;
|
||||
|
||||
if (TrInput & IN_ACTION && item->hitPoints > 0)
|
||||
if (TrInput & IN_ACTION && item->hitPoints > 0 || item->animNumber == LA_ONWATER_TO_LADDER)//can't let go on this anim
|
||||
return 0;
|
||||
|
||||
Lara.torsoYrot = 0;
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
/*this file has all the generic **collision** test functions called in lara's state code*/
|
||||
|
||||
int LaraDeflectEdge(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
int LaraDeflectEdge(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
if (coll->collType == CT_FRONT || coll->collType == CT_TOP_FRONT)
|
||||
{
|
||||
|
@ -33,7 +33,7 @@ int LaraDeflectEdge(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
|||
return 0;
|
||||
}
|
||||
|
||||
void LaraDeflectEdgeJump(ITEM_INFO* item, COLL_INFO* coll)//12904, 129B4 (F)
|
||||
void LaraDeflectEdgeJump(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
ShiftItem(item, coll);
|
||||
|
||||
|
@ -96,7 +96,7 @@ void LaraDeflectEdgeJump(ITEM_INFO* item, COLL_INFO* coll)//12904, 129B4 (F)
|
|||
}
|
||||
}
|
||||
|
||||
int LaraDeflectEdgeDuck(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
int LaraDeflectEdgeDuck(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
if (coll->collType == CT_FRONT || coll->collType == CT_TOP_FRONT)
|
||||
{
|
||||
|
@ -122,7 +122,7 @@ int LaraDeflectEdgeDuck(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int LaraHitCeiling(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
int LaraHitCeiling(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
if (coll->collType == CT_TOP || coll->collType == CT_CLAMP)
|
||||
{
|
||||
|
@ -145,7 +145,7 @@ int LaraHitCeiling(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
|||
return 0;
|
||||
}
|
||||
|
||||
void LaraCollideStop(ITEM_INFO* item, COLL_INFO* coll)//126F0(<), 127A0(<) (F)
|
||||
void LaraCollideStop(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
switch (coll->oldAnimState)
|
||||
{
|
||||
|
@ -177,7 +177,7 @@ void LaraCollideStop(ITEM_INFO* item, COLL_INFO* coll)//126F0(<), 127A0(<) (F)
|
|||
}
|
||||
}
|
||||
|
||||
void SnapLaraToEdgeOfBlock(ITEM_INFO* item, COLL_INFO* coll, short angle) // (F) (D)
|
||||
void SnapLaraToEdgeOfBlock(ITEM_INFO* item, COLL_INFO* coll, short angle)
|
||||
{
|
||||
if (item->currentAnimState == LS_SHIMMY_RIGHT)
|
||||
{
|
||||
|
@ -260,12 +260,12 @@ void SnapLaraToEdgeOfBlock(ITEM_INFO* item, COLL_INFO* coll, short angle) // (F)
|
|||
}
|
||||
}
|
||||
|
||||
short GetDirOctant(int rot)//160B4(<), 161E8(<) (F)
|
||||
short GetDirOctant(int rot)
|
||||
{
|
||||
return abs(rot) >= ANGLE(45) && abs(rot) <= ANGLE(135.0f);
|
||||
}
|
||||
|
||||
void GetLaraDeadlyBounds() // (F) (D)
|
||||
void GetLaraDeadlyBounds()
|
||||
{
|
||||
BOUNDING_BOX* bounds;
|
||||
BOUNDING_BOX tbounds;
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
/*this file has all the related functions to ducking and crawling*/
|
||||
|
||||
/*crouch/duck start*/
|
||||
void lara_as_duck(ITEM_INFO* item, COLL_INFO* coll)//14688, 14738 (F)
|
||||
void lara_as_duck(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 71*/
|
||||
/*collision: lara_col_duck*/
|
||||
|
@ -79,7 +79,7 @@ void lara_as_duck(ITEM_INFO* item, COLL_INFO* coll)//14688, 14738 (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_col_duck(ITEM_INFO* item, COLL_INFO* coll)//147C4, 148CC (F)
|
||||
void lara_col_duck(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 71*/
|
||||
/*state code: lara_as_duck*/
|
||||
|
@ -161,7 +161,7 @@ void lara_col_crouch_roll(ITEM_INFO* item, COLL_INFO* coll)
|
|||
/*crouch/duck end*/
|
||||
/*-*/
|
||||
/*crawl start*/
|
||||
void lara_as_all4s(ITEM_INFO* item, COLL_INFO* coll)//14970, 14A78 (F)
|
||||
void lara_as_all4s(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 80*/
|
||||
/*collision: lara_col_all4s*/
|
||||
|
@ -336,7 +336,7 @@ void lara_as_all4s(ITEM_INFO* item, COLL_INFO* coll)//14970, 14A78 (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_col_all4s(ITEM_INFO* item, COLL_INFO* coll)//14B40, 14C74 (F)
|
||||
void lara_col_all4s(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 80*/
|
||||
/*state code: lara_as_all4s*/
|
||||
|
@ -393,7 +393,7 @@ void lara_col_all4s(ITEM_INFO* item, COLL_INFO* coll)//14B40, 14C74 (F)
|
|||
short heightl = 0;
|
||||
short heightr = 0;
|
||||
|
||||
if (height != NO_HEIGHT && height <= 256)
|
||||
if (height != NO_HEIGHT && height <= -256)
|
||||
{
|
||||
if (TrInput & IN_ACTION)
|
||||
{
|
||||
|
@ -426,15 +426,13 @@ void lara_col_all4s(ITEM_INFO* item, COLL_INFO* coll)//14B40, 14C74 (F)
|
|||
slope < 120)
|
||||
{
|
||||
int tmp;
|
||||
ITEM_INFO* tmp1;
|
||||
MESH_INFO* tmp2;
|
||||
int x = item->pos.xPos;
|
||||
int z = item->pos.zPos;
|
||||
|
||||
item->pos.xPos -= 100 * phd_sin(coll->facing);
|
||||
item->pos.zPos -= 100 * phd_cos(coll->facing);
|
||||
|
||||
tmp = GetCollidedObjects(item, 100, 1, &tmp1, &tmp2, 0);
|
||||
tmp = GetCollidedObjects(item, 100, 1, CollidedItems, CollidedMeshes, 0);
|
||||
|
||||
item->pos.xPos = x;
|
||||
item->pos.zPos = z;
|
||||
|
@ -496,7 +494,7 @@ void lara_col_all4s(ITEM_INFO* item, COLL_INFO* coll)//14B40, 14C74 (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_crawl(ITEM_INFO* item, COLL_INFO* coll)//150F4, 15228 (F)
|
||||
void lara_as_crawl(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 81*/
|
||||
/*collision: lara_col_crawl*/
|
||||
|
@ -542,7 +540,7 @@ void lara_as_crawl(ITEM_INFO* item, COLL_INFO* coll)//150F4, 15228 (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_col_crawl(ITEM_INFO* item, COLL_INFO* coll)//1523C, 15370 (F)
|
||||
void lara_col_crawl(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 81*/
|
||||
/*state code: lara_as_crawl*/
|
||||
|
@ -588,7 +586,7 @@ void lara_col_crawl(ITEM_INFO* item, COLL_INFO* coll)//1523C, 15370 (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_all4turnl(ITEM_INFO* item, COLL_INFO* coll)//15390(<), 154C4(<) (F)
|
||||
void lara_as_all4turnl(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 84*/
|
||||
/*collision: lara_col_all4turnlr*/
|
||||
|
@ -609,7 +607,7 @@ void lara_as_all4turnl(ITEM_INFO* item, COLL_INFO* coll)//15390(<), 154C4(<) (F)
|
|||
item->goalAnimState = LS_CRAWL_IDLE;
|
||||
}
|
||||
|
||||
void lara_as_all4turnr(ITEM_INFO* item, COLL_INFO* coll)//15484(<), 155B8(<) (F)
|
||||
void lara_as_all4turnr(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 85*/
|
||||
/*collision: lara_col_all4turnlr*/
|
||||
|
@ -630,7 +628,7 @@ void lara_as_all4turnr(ITEM_INFO* item, COLL_INFO* coll)//15484(<), 155B8(<) (F)
|
|||
item->goalAnimState = LS_CRAWL_IDLE;
|
||||
}
|
||||
|
||||
void lara_col_all4turnlr(ITEM_INFO* item, COLL_INFO* coll)//153FC, 15530 (F)
|
||||
void lara_col_all4turnlr(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*states 84 and 85*/
|
||||
/*state code: lara_as_all4turnl(84) and lara_as_all4turnr(85)*/
|
||||
|
@ -643,7 +641,7 @@ void lara_col_all4turnlr(ITEM_INFO* item, COLL_INFO* coll)//153FC, 15530 (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_crawlb(ITEM_INFO* item, COLL_INFO* coll)//154F0, 15624 (F)
|
||||
void lara_as_crawlb(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 86*/
|
||||
/*collision: lara_col_crawlb*/
|
||||
|
@ -685,7 +683,7 @@ void lara_as_crawlb(ITEM_INFO* item, COLL_INFO* coll)//154F0, 15624 (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_col_crawlb(ITEM_INFO* item, COLL_INFO* coll)//15614, 15748 (F)
|
||||
void lara_col_crawlb(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 86*/
|
||||
/*state code: lara_as_crawlb*/
|
||||
|
@ -731,7 +729,7 @@ void lara_col_crawlb(ITEM_INFO* item, COLL_INFO* coll)//15614, 15748 (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_duckl(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
void lara_as_duckl(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 105*/
|
||||
/*collision: lara_col_ducklr*/
|
||||
|
@ -741,7 +739,7 @@ void lara_as_duckl(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
|||
item->pos.yRot -= ANGLE(1.5f);
|
||||
}
|
||||
|
||||
void lara_as_duckr(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
void lara_as_duckr(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 106*/
|
||||
/*collision: lara_col_ducklr*/
|
||||
|
@ -751,7 +749,7 @@ void lara_as_duckr(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
|||
item->pos.yRot += ANGLE(1.5f);
|
||||
}
|
||||
|
||||
void lara_col_ducklr(ITEM_INFO* item, COLL_INFO* coll)//14534, 145E4 (F)
|
||||
void lara_col_ducklr(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 105 and 106*/
|
||||
/*state code: lara_as_duckl(105) and lara_col_ducklr(106)*/
|
||||
|
@ -792,7 +790,7 @@ void lara_col_ducklr(ITEM_INFO* item, COLL_INFO* coll)//14534, 145E4 (F)
|
|||
}
|
||||
/*crawling end*/
|
||||
|
||||
void lara_col_crawl2hang(ITEM_INFO* item, COLL_INFO* coll)//15770, 158A4 (F)
|
||||
void lara_col_crawl2hang(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
Camera.targetAngle = 0;
|
||||
Camera.targetElevation = -ANGLE(45.0f);
|
||||
|
|
|
@ -258,7 +258,7 @@ bool MonksAttackLara;
|
|||
ITEM_INFO* LastTargets[8];
|
||||
ITEM_INFO* TargetList[8];
|
||||
|
||||
int WeaponObject(int weaponType) // (F) (D)
|
||||
GAME_OBJECT_ID WeaponObject(int weaponType)
|
||||
{
|
||||
switch (weaponType)
|
||||
{
|
||||
|
@ -285,7 +285,7 @@ int WeaponObject(int weaponType) // (F) (D)
|
|||
}
|
||||
}
|
||||
|
||||
void AimWeapon(WEAPON_INFO* winfo, LARA_ARM* arm) // (F) (D)
|
||||
void AimWeapon(WEAPON_INFO* winfo, LARA_ARM* arm)
|
||||
{
|
||||
short rotY, rotX, speed, x, y;
|
||||
|
||||
|
@ -328,14 +328,14 @@ void AimWeapon(WEAPON_INFO* winfo, LARA_ARM* arm) // (F) (D)
|
|||
arm->zRot = 0;
|
||||
}
|
||||
|
||||
void SmashItem(short itemNum) // (F) (D)
|
||||
void SmashItem(short itemNum)
|
||||
{
|
||||
ITEM_INFO* item = &g_Level.Items[itemNum];
|
||||
if (item->objectNumber >= ID_SMASH_OBJECT1 && item->objectNumber <= ID_SMASH_OBJECT8)
|
||||
SmashObject(itemNum);
|
||||
}
|
||||
|
||||
void LaraGun() // (F) (D)
|
||||
void LaraGun()
|
||||
{
|
||||
if (Lara.leftArm.flash_gun > 0)
|
||||
--Lara.leftArm.flash_gun;
|
||||
|
@ -522,7 +522,7 @@ void LaraGun() // (F) (D)
|
|||
|
||||
if (TrInput & IN_ACTION)
|
||||
{
|
||||
if (!*GetAmmo(Lara.gunType))
|
||||
if (!GetAmmo(Lara.gunType))
|
||||
{
|
||||
Lara.requestGunType = Objects[ID_PISTOLS_ITEM].loaded ? WEAPON_PISTOLS : WEAPON_NONE;
|
||||
return;
|
||||
|
@ -594,9 +594,8 @@ void LaraGun() // (F) (D)
|
|||
}
|
||||
}
|
||||
|
||||
short* GetAmmo(int weaponType)
|
||||
{
|
||||
return &Lara.Weapons[weaponType].Ammo[Lara.Weapons[weaponType].SelectedAmmo];
|
||||
Ammo& GetAmmo(int weaponType){
|
||||
return Lara.Weapons[weaponType].Ammo[Lara.Weapons[weaponType].SelectedAmmo];
|
||||
}
|
||||
|
||||
void InitialiseNewWeapon()
|
||||
|
@ -651,8 +650,7 @@ void InitialiseNewWeapon()
|
|||
}
|
||||
}
|
||||
|
||||
int WeaponObjectMesh(int weaponType)
|
||||
{
|
||||
GAME_OBJECT_ID WeaponObjectMesh(int weaponType) {
|
||||
switch (weaponType)
|
||||
{
|
||||
case WEAPON_REVOLVER:
|
||||
|
@ -722,13 +720,13 @@ void HitTarget(ITEM_INFO* item, GAME_VECTOR* hitPos, int damage, int flag)
|
|||
}
|
||||
}
|
||||
|
||||
FireWeaponType FireWeapon(int weaponType, ITEM_INFO* target, ITEM_INFO* src, short* angles) // (F) (D)
|
||||
FireWeaponType FireWeapon(int weaponType, ITEM_INFO* target, ITEM_INFO* src, short* angles)
|
||||
{
|
||||
short* ammo = GetAmmo(weaponType);
|
||||
if (*ammo == 0)
|
||||
Ammo& ammo = GetAmmo(weaponType);
|
||||
if (ammo.getCount() == 0 && !ammo.hasInfinite())
|
||||
return FW_NOAMMO;
|
||||
if (*ammo != -1)
|
||||
*ammo--;
|
||||
if (!ammo.hasInfinite())
|
||||
ammo--;
|
||||
|
||||
WEAPON_INFO* weapon = &Weapons[weaponType];
|
||||
int r;
|
||||
|
@ -847,7 +845,7 @@ FireWeaponType FireWeapon(int weaponType, ITEM_INFO* target, ITEM_INFO* src, sho
|
|||
}
|
||||
}
|
||||
|
||||
void find_target_point(ITEM_INFO* item, GAME_VECTOR* target) // (F) (D)
|
||||
void find_target_point(ITEM_INFO* item, GAME_VECTOR* target)
|
||||
{
|
||||
BOUNDING_BOX* bounds;
|
||||
int x, y, z;
|
||||
|
@ -866,7 +864,7 @@ void find_target_point(ITEM_INFO* item, GAME_VECTOR* target) // (F) (D)
|
|||
target->roomNumber = item->roomNumber;
|
||||
}
|
||||
|
||||
void LaraTargetInfo(WEAPON_INFO* weapon) // (F) (D)
|
||||
void LaraTargetInfo(WEAPON_INFO* weapon)
|
||||
{
|
||||
if (Lara.target == nullptr)
|
||||
{
|
||||
|
@ -933,7 +931,7 @@ void LaraTargetInfo(WEAPON_INFO* weapon) // (F) (D)
|
|||
Lara.targetAngles[1] = angles[1];
|
||||
}
|
||||
|
||||
bool CheckForHoldingState(int state) // (F) (D)
|
||||
bool CheckForHoldingState(int state)
|
||||
{
|
||||
#if 0
|
||||
if (Lara.ExtraAnim != NO_ITEM)
|
||||
|
@ -951,7 +949,7 @@ bool CheckForHoldingState(int state) // (F) (D)
|
|||
return false;
|
||||
}
|
||||
|
||||
void LaraGetNewTarget(WEAPON_INFO* weapon) // (F) (D)
|
||||
void LaraGetNewTarget(WEAPON_INFO* weapon)
|
||||
{
|
||||
GAME_VECTOR src, target;
|
||||
PHD_VECTOR muzzleOffset;
|
||||
|
|
|
@ -24,23 +24,24 @@ typedef struct WEAPON_INFO
|
|||
short sampleNum;
|
||||
byte explosiveDamage;
|
||||
};
|
||||
|
||||
constexpr auto WSTATE_AIM = 0;
|
||||
constexpr auto WSTATE_DRAW = 1;
|
||||
constexpr auto WSTATE_UW_AIM = 6;
|
||||
constexpr auto WSTATE_RECOIL = 2;
|
||||
constexpr auto WSTATE_UW_RECOIL = 8;
|
||||
constexpr auto WSTATE_UNAIM = 4;
|
||||
constexpr auto WSTATE_UW_UNAIM = 7;
|
||||
enum WeaponState {
|
||||
WSTATE_AIM =0,
|
||||
WSTATE_DRAW = 1,
|
||||
WSTATE_RECOIL = 2,
|
||||
WSTATE_UNAIM = 4,
|
||||
WSTATE_UW_AIM = 6,
|
||||
WSTATE_UW_UNAIM = 7,
|
||||
WSTATE_UW_RECOIL = 8
|
||||
};
|
||||
|
||||
extern WEAPON_INFO Weapons[static_cast<int>(LARA_WEAPON_TYPE::NUM_WEAPONS)];
|
||||
|
||||
void SmashItem(short itemNum);
|
||||
int WeaponObject(int weaponType);
|
||||
GAME_OBJECT_ID WeaponObject(int weaponType);
|
||||
void LaraGun();
|
||||
short* GetAmmo(int weaponType);
|
||||
Ammo& GetAmmo(int weaponType);
|
||||
void InitialiseNewWeapon();
|
||||
int WeaponObjectMesh(int weaponType);
|
||||
GAME_OBJECT_ID WeaponObjectMesh(int weaponType);
|
||||
void AimWeapon(WEAPON_INFO* winfo, LARA_ARM* arm);
|
||||
void HitTarget(ITEM_INFO* item, GAME_VECTOR* hitPos, int damage, int flag);
|
||||
FireWeaponType FireWeapon(int weaponType, ITEM_INFO* target, ITEM_INFO* src, short* angles);
|
||||
|
|
|
@ -19,7 +19,7 @@ constexpr std::array<float, 28> FlareFlickerTableLow = { 0.7590,0.1880,0.0790,0.
|
|||
|
||||
using namespace T5M::Math::Random;
|
||||
|
||||
void FlareControl(short itemNumber) // (AF) (D)
|
||||
void FlareControl(short itemNumber)
|
||||
{
|
||||
ITEM_INFO* item = &g_Level.Items[itemNumber];
|
||||
|
||||
|
@ -88,7 +88,7 @@ void FlareControl(short itemNumber) // (AF) (D)
|
|||
item->data = (void*)age;
|
||||
}
|
||||
|
||||
void ready_flare() // (F) (D)
|
||||
void ready_flare()
|
||||
{
|
||||
Lara.gunStatus = LG_NO_ARMS;
|
||||
Lara.leftArm.zRot = 0;
|
||||
|
@ -102,17 +102,17 @@ void ready_flare() // (F) (D)
|
|||
Lara.target = NULL;
|
||||
}
|
||||
|
||||
void undraw_flare_meshes() // (F) (D)
|
||||
void undraw_flare_meshes()
|
||||
{
|
||||
Lara.meshPtrs[LM_LHAND] = Objects[ID_LARA_SKIN].meshIndex + LM_LHAND;
|
||||
}
|
||||
|
||||
void draw_flare_meshes() // (F) (D)
|
||||
void draw_flare_meshes()
|
||||
{
|
||||
Lara.meshPtrs[LM_LHAND] = Objects[ID_LARA_FLARE_ANIM].meshIndex + LM_LHAND;
|
||||
}
|
||||
|
||||
void undraw_flare() // (F) (D)
|
||||
void undraw_flare()
|
||||
{
|
||||
Lara.flareControlLeft = true;
|
||||
|
||||
|
@ -225,7 +225,7 @@ void undraw_flare() // (F) (D)
|
|||
set_flare_arm(Lara.leftArm.frameNumber);
|
||||
}
|
||||
|
||||
void draw_flare() // (F) (D)
|
||||
void draw_flare()
|
||||
{
|
||||
short frame;
|
||||
|
||||
|
@ -275,7 +275,7 @@ void draw_flare() // (F) (D)
|
|||
}
|
||||
}
|
||||
|
||||
void set_flare_arm(int frame) // (F) (D)
|
||||
void set_flare_arm(int frame)
|
||||
{
|
||||
short anim = Objects[ID_LARA_FLARE_ANIM].animIndex;
|
||||
|
||||
|
@ -300,7 +300,7 @@ void set_flare_arm(int frame) // (F) (D)
|
|||
Lara.leftArm.frameBase = g_Level.Anims[anim].framePtr;
|
||||
}
|
||||
|
||||
void CreateFlare(short objectNum, int thrown) // (F) (D)
|
||||
void CreateFlare(short objectNum, int thrown)
|
||||
{
|
||||
short itemNum = CreateItem();
|
||||
if (itemNum != NO_ITEM)
|
||||
|
@ -383,7 +383,7 @@ void DrawFlareInAir(ITEM_INFO* item)
|
|||
printf("DrawFlareInAir() not implemented !");
|
||||
}
|
||||
|
||||
void DoFlareInHand(int flare_age) // (AF) (D)
|
||||
void DoFlareInHand(int flare_age)
|
||||
{
|
||||
PHD_VECTOR pos;
|
||||
|
||||
|
@ -408,7 +408,7 @@ void DoFlareInHand(int flare_age) // (AF) (D)
|
|||
}
|
||||
}
|
||||
|
||||
int DoFlareLight(PHD_VECTOR* pos, int age)//49708, 49B6C (F)
|
||||
int DoFlareLight(PHD_VECTOR* pos, int age)
|
||||
{
|
||||
int x, y, z;
|
||||
int r, g, b;
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
/*this file has all the lara_as/lara_col functions related to hanging*/
|
||||
|
||||
/*normal hanging and shimmying*/
|
||||
void lara_as_hang(ITEM_INFO* item, COLL_INFO* coll)//19A28, 19B5C (F)
|
||||
void lara_as_hang(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 10*/
|
||||
/*collision: lara_col_hang*/
|
||||
|
@ -28,7 +28,7 @@ void lara_as_hang(ITEM_INFO* item, COLL_INFO* coll)//19A28, 19B5C (F)
|
|||
Camera.targetElevation = -ANGLE(45.0f);
|
||||
}
|
||||
|
||||
void lara_col_hang(ITEM_INFO* item, COLL_INFO* coll)//19AC8, 19BFC (F)
|
||||
void lara_col_hang(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 10*/
|
||||
/*state code: lara_as_hang*/
|
||||
|
@ -174,7 +174,7 @@ void lara_col_hang(ITEM_INFO* item, COLL_INFO* coll)//19AC8, 19BFC (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_hangleft(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
void lara_as_hangleft(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 30*/
|
||||
/*collision: lara_col_hangleft*/
|
||||
|
@ -186,7 +186,7 @@ void lara_as_hangleft(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
|||
item->goalAnimState = LS_HANG;
|
||||
}
|
||||
|
||||
void lara_col_hangleft(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
void lara_col_hangleft(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 30*/
|
||||
/*state code: lara_as_hangleft*/
|
||||
|
@ -196,7 +196,7 @@ void lara_col_hangleft(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
|||
Lara.moveAngle = item->pos.yRot - ANGLE(90);
|
||||
}
|
||||
|
||||
void lara_as_hangright(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
void lara_as_hangright(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 31*/
|
||||
/*collision: lara_col_hangright*/
|
||||
|
@ -208,7 +208,7 @@ void lara_as_hangright(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
|||
item->goalAnimState = LS_HANG;
|
||||
}
|
||||
|
||||
void lara_col_hangright(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
void lara_col_hangright(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 31*/
|
||||
/*state code: lara_as_hangright*/
|
||||
|
@ -220,45 +220,49 @@ void lara_col_hangright(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
|||
|
||||
/*go around corners*/
|
||||
|
||||
void lara_as_extcornerl(ITEM_INFO* item, COLL_INFO* coll)//1A1F0(<), 1A324(<) (F)
|
||||
void lara_as_extcornerl(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 107*/
|
||||
/*collision: lara_default_col*/
|
||||
Camera.laraNode = 8;
|
||||
Camera.targetElevation = ANGLE(33.0f);
|
||||
Camera.laraNode = LM_TORSO;
|
||||
Camera.targetAngle = 0;
|
||||
Camera.targetElevation = -ANGLE(33.0f);
|
||||
SetCornerAnim(item, coll, ANGLE(90.0f),
|
||||
item->animNumber == LA_SHIMMY_LEFT_CORNER_OUTER_END ||
|
||||
item->animNumber == LA_LADDER_LEFT_CORNER_OUTER_END);
|
||||
}
|
||||
|
||||
void lara_as_extcornerr(ITEM_INFO* item, COLL_INFO* coll)//1A244(<), 1A378(<) (F)
|
||||
void lara_as_extcornerr(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 108*/
|
||||
/*collision: lara_default_col*/
|
||||
Camera.laraNode = 8;
|
||||
Camera.targetElevation = ANGLE(33.0f);
|
||||
Camera.laraNode = LM_TORSO;
|
||||
Camera.targetAngle = 0;
|
||||
Camera.targetElevation = -ANGLE(33.0f);
|
||||
SetCornerAnim(item, coll, -ANGLE(90.0f),
|
||||
item->animNumber == LA_SHIMMY_RIGHT_CORNER_OUTER_END ||
|
||||
item->animNumber == LA_LADDER_RIGHT_CORNER_OUTER_END);
|
||||
}
|
||||
|
||||
void lara_as_intcornerl(ITEM_INFO* item, COLL_INFO* coll)//1A298(<), 1A3CC(<) (F)
|
||||
void lara_as_intcornerl(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 109*/
|
||||
/*collision: lara_default_col*/
|
||||
Camera.laraNode = 8;
|
||||
Camera.targetElevation = ANGLE(33.0f);
|
||||
Camera.targetAngle = 0;
|
||||
Camera.laraNode = LM_TORSO;
|
||||
Camera.targetElevation = -ANGLE(33.0f);
|
||||
SetCornerAnim(item, coll, -ANGLE(90.0f),
|
||||
item->animNumber == LA_SHIMMY_LEFT_CORNER_INNER_END ||
|
||||
item->animNumber == LA_LADDER_LEFT_CORNER_INNER_END);
|
||||
}
|
||||
|
||||
void lara_as_intcornerr(ITEM_INFO* item, COLL_INFO* coll)//1A2EC(<), 1A420(<) (F)
|
||||
void lara_as_intcornerr(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 110*/
|
||||
/*collision: lara_default_col*/
|
||||
Camera.laraNode = 8;
|
||||
Camera.targetElevation = ANGLE(33.0f);
|
||||
Camera.laraNode = LM_TORSO;
|
||||
Camera.targetAngle = 0;
|
||||
Camera.targetElevation = -ANGLE(33.0f);
|
||||
SetCornerAnim(item, coll, ANGLE(90.0f),
|
||||
item->animNumber == LA_SHIMMY_RIGHT_CORNER_INNER_END ||
|
||||
item->animNumber == LA_LADDER_RIGHT_CORNER_INNER_END);
|
||||
|
|
|
@ -75,7 +75,7 @@ void InitialiseLara(int restore)
|
|||
if (gun == WEAPON_PISTOLS)
|
||||
{
|
||||
Lara.Weapons[WEAPON_PISTOLS].Present = true;
|
||||
Lara.Weapons[WEAPON_PISTOLS].Ammo[WEAPON_AMMO1] = -1;
|
||||
Lara.Weapons[WEAPON_PISTOLS].Ammo[WEAPON_AMMO1].setInfinite(true);
|
||||
}
|
||||
else if (gun == WEAPON_HK)
|
||||
{
|
||||
|
@ -102,7 +102,7 @@ void InitialiseLara(int restore)
|
|||
Lara.wetcloth = CLOTH_MISSING;
|
||||
}
|
||||
|
||||
void LaraInitialiseMeshes() // (AF) (D)
|
||||
void LaraInitialiseMeshes()
|
||||
{
|
||||
for (int i = 0; i < NUM_LARA_MESHES; i++)
|
||||
{
|
||||
|
@ -135,7 +135,7 @@ void LaraInitialiseMeshes() // (AF) (D)
|
|||
Lara.leftArm.lock = false;
|
||||
}
|
||||
|
||||
void InitialiseLaraAnims(ITEM_INFO* item) // (F) (D)
|
||||
void InitialiseLaraAnims(ITEM_INFO* item)
|
||||
{
|
||||
if (g_Level.Rooms[item->roomNumber].flags & ENV_FLAG_WATER)
|
||||
{
|
||||
|
@ -156,7 +156,7 @@ void InitialiseLaraAnims(ITEM_INFO* item) // (F) (D)
|
|||
}
|
||||
}
|
||||
|
||||
void InitialiseLaraLoad(short itemNum) // (F) (D)
|
||||
void InitialiseLaraLoad(short itemNum)
|
||||
{
|
||||
Lara.itemNumber = itemNum;
|
||||
LaraItem = &g_Level.Items[itemNum];
|
||||
|
|
|
@ -10,7 +10,7 @@ using namespace T5M::Floordata;
|
|||
/*this file has all the related functions to monkeyswinging*/
|
||||
|
||||
/*monkeyswing state handling functions*/
|
||||
void lara_as_hang2(ITEM_INFO* item, COLL_INFO* coll)//1630C(<), 16440(<) (F)
|
||||
void lara_as_hang2(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 75*/
|
||||
/*collision: lara_col_hang2*/
|
||||
|
@ -39,7 +39,7 @@ void lara_as_hang2(ITEM_INFO* item, COLL_INFO* coll)//1630C(<), 16440(<) (F)
|
|||
LookUpDown();
|
||||
}
|
||||
|
||||
void lara_col_hang2(ITEM_INFO* item, COLL_INFO* coll)//163DC, 16510 (F)
|
||||
void lara_col_hang2(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 75*/
|
||||
/*state code: lara_as_hang2*/
|
||||
|
@ -148,7 +148,7 @@ void lara_col_hang2(ITEM_INFO* item, COLL_INFO* coll)//163DC, 16510 (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_monkeyswing(ITEM_INFO* item, COLL_INFO* coll)//1670C, 16840 (F)
|
||||
void lara_as_monkeyswing(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 76*/
|
||||
/*collision: lara_col_monkeyswing*/
|
||||
|
@ -188,7 +188,7 @@ void lara_as_monkeyswing(ITEM_INFO* item, COLL_INFO* coll)//1670C, 16840 (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_col_monkeyswing(ITEM_INFO* item, COLL_INFO* coll)//16828, 1695C (F)
|
||||
void lara_col_monkeyswing(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 76*/
|
||||
/*state code: lara_as_monkeyswing*/
|
||||
|
@ -242,7 +242,7 @@ void lara_col_monkeyswing(ITEM_INFO* item, COLL_INFO* coll)//16828, 1695C (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_monkeyr(ITEM_INFO* item, COLL_INFO* coll)//16B24(<), 16C58(<) (F)
|
||||
void lara_as_monkeyr(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 78*/
|
||||
/*collision: lara_col_monkeyr*/
|
||||
|
@ -270,7 +270,7 @@ void lara_as_monkeyr(ITEM_INFO* item, COLL_INFO* coll)//16B24(<), 16C58(<) (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_col_monkeyr(ITEM_INFO* item, COLL_INFO* coll)//16B9C(<), 16CD0(<) (F)
|
||||
void lara_col_monkeyr(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 78*/
|
||||
/*state code: lara_as_monkeyr*/
|
||||
|
@ -294,7 +294,7 @@ void lara_col_monkeyr(ITEM_INFO* item, COLL_INFO* coll)//16B9C(<), 16CD0(<) (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_monkeyl(ITEM_INFO* item, COLL_INFO* coll)//16A0C(<), 16B40(<) (F)
|
||||
void lara_as_monkeyl(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 77*/
|
||||
/*collision: lara_col_monkeyl*/
|
||||
|
@ -323,7 +323,7 @@ void lara_as_monkeyl(ITEM_INFO* item, COLL_INFO* coll)//16A0C(<), 16B40(<) (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_col_monkeyl(ITEM_INFO* item, COLL_INFO* coll)//16A80(<), 16BB4(<) (F)
|
||||
void lara_col_monkeyl(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 77*/
|
||||
/*state code: lara_as_monkeyl*/
|
||||
|
@ -347,7 +347,7 @@ void lara_col_monkeyl(ITEM_INFO* item, COLL_INFO* coll)//16A80(<), 16BB4(<) (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_monkey180(ITEM_INFO* item, COLL_INFO* coll)//16DB8(<), 16EEC(<) (F)
|
||||
void lara_as_monkey180(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 79*/
|
||||
/*collision: lara_col_monkey180*/
|
||||
|
@ -356,14 +356,14 @@ void lara_as_monkey180(ITEM_INFO* item, COLL_INFO* coll)//16DB8(<), 16EEC(<) (F)
|
|||
item->goalAnimState = LS_MONKEYSWING_IDLE;
|
||||
}
|
||||
|
||||
void lara_col_monkey180(ITEM_INFO* item, COLL_INFO* coll)//16DDC, 16F10 (F)
|
||||
void lara_col_monkey180(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 79*/
|
||||
/*state code: lara_as_monkey180*/
|
||||
lara_col_monkeyswing(item, coll);
|
||||
}
|
||||
|
||||
void lara_as_hangturnr(ITEM_INFO* item, COLL_INFO* coll)//16D64(<), 16E98(<) (F)
|
||||
void lara_as_hangturnr(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 83*/
|
||||
/*collision: lara_col_hangturnlr*/
|
||||
|
@ -382,7 +382,7 @@ void lara_as_hangturnr(ITEM_INFO* item, COLL_INFO* coll)//16D64(<), 16E98(<) (F)
|
|||
item->goalAnimState = LS_MONKEYSWING_IDLE;
|
||||
}
|
||||
//both lara_as_hangturnl and lara_as_hangturnr states use lara_col_hangturnlr for collision//
|
||||
void lara_as_hangturnl(ITEM_INFO* item, COLL_INFO* coll)//16C40(<), 16D74(<) (F)
|
||||
void lara_as_hangturnl(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 82*/
|
||||
/*collision: lara_col_hangturnlr*/
|
||||
|
@ -401,7 +401,7 @@ void lara_as_hangturnl(ITEM_INFO* item, COLL_INFO* coll)//16C40(<), 16D74(<) (F)
|
|||
item->goalAnimState = LS_MONKEYSWING_IDLE;
|
||||
}
|
||||
|
||||
void lara_col_hangturnlr(ITEM_INFO* item, COLL_INFO* coll)//16C94(<), 16DC8(<) (F)
|
||||
void lara_col_hangturnlr(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 82 and 83*/
|
||||
/*state code: lara_as_hangturnr(83), lara_as_hangturnl(82)*/
|
||||
|
@ -428,7 +428,7 @@ void lara_col_hangturnlr(ITEM_INFO* item, COLL_INFO* coll)//16C94(<), 16DC8(<) (
|
|||
|
||||
/*tests and other functions*/
|
||||
|
||||
short TestMonkeyRight(ITEM_INFO* item, COLL_INFO* coll)//161EC(<), 16320(<) (F)
|
||||
short TestMonkeyRight(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
short oct;
|
||||
|
||||
|
@ -464,7 +464,7 @@ short TestMonkeyRight(ITEM_INFO* item, COLL_INFO* coll)//161EC(<), 16320(<) (F)
|
|||
return 0;
|
||||
}
|
||||
|
||||
short TestMonkeyLeft(ITEM_INFO* item, COLL_INFO* coll)//160CC(<), 16200(<) (F)
|
||||
short TestMonkeyLeft(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
short oct;
|
||||
|
||||
|
@ -501,7 +501,7 @@ short TestMonkeyLeft(ITEM_INFO* item, COLL_INFO* coll)//160CC(<), 16200(<) (F)
|
|||
return 0;
|
||||
}
|
||||
|
||||
void MonkeySwingSnap(ITEM_INFO* item, COLL_INFO* coll)//1605C(<), 16190(<) (F)
|
||||
void MonkeySwingSnap(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
ROOM_VECTOR location = GetRoom(item->location, item->pos.xPos, item->pos.yPos, item->pos.zPos);
|
||||
int height = GetCeilingHeight(location, item->pos.xPos, item->pos.zPos).value_or(NO_HEIGHT);
|
||||
|
@ -509,7 +509,7 @@ void MonkeySwingSnap(ITEM_INFO* item, COLL_INFO* coll)//1605C(<), 16190(<) (F)
|
|||
item->pos.yPos = height + 704;
|
||||
}
|
||||
|
||||
void MonkeySwingFall(ITEM_INFO* item)//16004(<), 16138(<) (F)
|
||||
void MonkeySwingFall(ITEM_INFO* item)
|
||||
{
|
||||
item->goalAnimState = LS_JUMP_UP;
|
||||
item->currentAnimState = LS_JUMP_UP;
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
/*This file has "all" lara_as/lara_col functions where Lara is interacting with an object.*/
|
||||
|
||||
/*pickups*/
|
||||
void lara_as_pickup(ITEM_INFO* item, COLL_INFO* coll)//1AB00(<), 1AC34(<) (F)
|
||||
void lara_as_pickup(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 39, 98*/
|
||||
/*collision: lara_default_col*/
|
||||
|
@ -21,7 +21,7 @@ void lara_as_pickup(ITEM_INFO* item, COLL_INFO* coll)//1AB00(<), 1AC34(<) (F)
|
|||
Camera.targetDistance = SECTOR(1);
|
||||
}
|
||||
|
||||
void lara_as_pickupflare(ITEM_INFO* item, COLL_INFO* coll)//1AB5C(<), 1AC90(<) (F)
|
||||
void lara_as_pickupflare(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 67*/
|
||||
/*collison: lara_default_col*/
|
||||
|
@ -37,7 +37,7 @@ void lara_as_pickupflare(ITEM_INFO* item, COLL_INFO* coll)//1AB5C(<), 1AC90(<) (
|
|||
/*end pickups*/
|
||||
/*-*/
|
||||
/*switches*/
|
||||
void lara_as_switchon(ITEM_INFO* item, COLL_INFO* coll)//1ABEC(<), 1AD20(<) (F)
|
||||
void lara_as_switchon(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*states 40, 126*/
|
||||
/*collision: lara_default_col*/
|
||||
|
@ -50,7 +50,7 @@ void lara_as_switchon(ITEM_INFO* item, COLL_INFO* coll)//1ABEC(<), 1AD20(<) (F)
|
|||
Camera.speed = 6;
|
||||
}
|
||||
|
||||
void lara_as_switchoff(ITEM_INFO* item, COLL_INFO* coll)//1AC54(<), 1AD88(<) (F)
|
||||
void lara_as_switchoff(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 41*/
|
||||
/*collision: lara_default_col*/
|
||||
|
@ -63,7 +63,7 @@ void lara_as_switchoff(ITEM_INFO* item, COLL_INFO* coll)//1AC54(<), 1AD88(<) (F)
|
|||
Camera.speed = 6;
|
||||
}
|
||||
|
||||
void lara_col_turnswitch(ITEM_INFO* item, COLL_INFO* coll)//1B1B4(<), 1B2E8(<) (F)
|
||||
void lara_col_turnswitch(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 95*/
|
||||
/*state code: lara_as_controlledl*/
|
||||
|
@ -89,7 +89,7 @@ void lara_col_turnswitch(ITEM_INFO* item, COLL_INFO* coll)//1B1B4(<), 1B2E8(<) (
|
|||
/*end switches*/
|
||||
/*-*/
|
||||
/*puzzles and keys*/
|
||||
void lara_as_usekey(ITEM_INFO* item, COLL_INFO* coll)//1ACBC(<), 1ADF0(<) (F)
|
||||
void lara_as_usekey(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 42*/
|
||||
/*collision: lara_default_col*/
|
||||
|
@ -101,7 +101,7 @@ void lara_as_usekey(ITEM_INFO* item, COLL_INFO* coll)//1ACBC(<), 1ADF0(<) (F)
|
|||
Camera.targetDistance = SECTOR(1);
|
||||
}
|
||||
|
||||
void lara_as_usepuzzle(ITEM_INFO* item, COLL_INFO* coll)//1AD18(<), 1AE4C(<) (F)
|
||||
void lara_as_usepuzzle(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 43*/
|
||||
/*collision: lara_default_col*/
|
||||
|
@ -127,7 +127,7 @@ void lara_as_usepuzzle(ITEM_INFO* item, COLL_INFO* coll)//1AD18(<), 1AE4C(<) (F)
|
|||
/*end puzzles and keys*/
|
||||
/*-*/
|
||||
/*pushables*/
|
||||
void lara_as_pushblock(ITEM_INFO* item, COLL_INFO* coll)//1AA04(<), 1AB38(<) (F)
|
||||
void lara_as_pushblock(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 36*/
|
||||
/*collision: lara_default_col*/
|
||||
|
@ -139,7 +139,7 @@ void lara_as_pushblock(ITEM_INFO* item, COLL_INFO* coll)//1AA04(<), 1AB38(<) (F)
|
|||
Camera.targetElevation = -ANGLE(25.0f);
|
||||
}
|
||||
|
||||
void lara_as_pullblock(ITEM_INFO* item, COLL_INFO* coll)//1AA60(<), 1AB94(<) (F)
|
||||
void lara_as_pullblock(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 37*/
|
||||
/*collision: lara_default_col*/
|
||||
|
@ -151,7 +151,7 @@ void lara_as_pullblock(ITEM_INFO* item, COLL_INFO* coll)//1AA60(<), 1AB94(<) (F)
|
|||
Camera.targetElevation = -ANGLE(25.0f);
|
||||
}
|
||||
|
||||
void lara_as_ppready(ITEM_INFO* item, COLL_INFO* coll)//1AABC(<), 1ABF0(<) (F)
|
||||
void lara_as_ppready(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 38*/
|
||||
/*collision: lara_default_col*/
|
||||
|
@ -164,7 +164,7 @@ void lara_as_ppready(ITEM_INFO* item, COLL_INFO* coll)//1AABC(<), 1ABF0(<) (F)
|
|||
/*end pushables*/
|
||||
/*-*/
|
||||
/*pulley*/
|
||||
void lara_as_pulley(ITEM_INFO* item, COLL_INFO* coll)//1B288, 1B3BC (F)
|
||||
void lara_as_pulley(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 104*/
|
||||
/*collision: lara_default_col*/
|
||||
|
@ -229,7 +229,7 @@ void lara_as_parallelbars(ITEM_INFO* item, COLL_INFO* coll)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_pbleapoff(ITEM_INFO* item, COLL_INFO* coll)//1D244, 1D3D8 (F)
|
||||
void lara_as_pbleapoff(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 129*/
|
||||
/*collision: lara_default_col*/
|
||||
|
@ -425,7 +425,7 @@ void lara_as_trfall(ITEM_INFO* item, COLL_INFO* coll)
|
|||
/*end tightropes*/
|
||||
/*-*/
|
||||
/*ropes*/
|
||||
void lara_as_ropel(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
void lara_as_ropel(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 90*/
|
||||
/*collision: lara_void_func*/
|
||||
|
@ -446,7 +446,7 @@ void lara_as_ropel(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_roper(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
void lara_as_roper(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
if (TrInput & IN_ACTION)
|
||||
{
|
||||
|
@ -465,7 +465,7 @@ void lara_as_roper(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_rope(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
void lara_as_rope(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*states 111, 114, 115*/
|
||||
/*collison: lara_col_rope(111), lara_col_ropefwd(114, 115)*/
|
||||
|
@ -476,7 +476,7 @@ void lara_as_rope(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
|||
LookUpDown();
|
||||
}
|
||||
|
||||
void lara_col_rope(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
void lara_col_rope(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state: 111*/
|
||||
/*state code: lara_as_rope*/
|
||||
|
@ -517,7 +517,7 @@ void lara_col_rope(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_col_ropefwd(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
void lara_col_ropefwd(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*states 114, 115*/
|
||||
/*state code: lara_as_rope(for both)*/
|
||||
|
@ -577,7 +577,7 @@ void lara_col_ropefwd(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_climbrope(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
void lara_as_climbrope(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 112*/
|
||||
/*collision: lara_void_func*/
|
||||
|
@ -600,7 +600,7 @@ void lara_as_climbrope(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_climbroped(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
void lara_as_climbroped(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 113*/
|
||||
/*collision: lara_void_func*/
|
||||
|
@ -609,7 +609,7 @@ void lara_as_climbroped(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
|||
/*end ropes*/
|
||||
/*-*/
|
||||
/*poles*/
|
||||
void lara_col_polestat(ITEM_INFO* item, COLL_INFO* coll)//16DFC, 16F30 (F)
|
||||
void lara_col_polestat(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 99*/
|
||||
/*state code: lara_as_null*/
|
||||
|
@ -684,7 +684,7 @@ void lara_col_polestat(ITEM_INFO* item, COLL_INFO* coll)//16DFC, 16F30 (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_col_poleup(ITEM_INFO* item, COLL_INFO* coll)//170D8(<), 1720C(<) (F)
|
||||
void lara_col_poleup(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state: 100*/
|
||||
/*state code: lara_as_null*/
|
||||
|
@ -705,7 +705,7 @@ void lara_col_poleup(ITEM_INFO* item, COLL_INFO* coll)//170D8(<), 1720C(<) (F)
|
|||
item->goalAnimState = LS_POLE_IDLE;
|
||||
}
|
||||
|
||||
void lara_col_poledown(ITEM_INFO* item, COLL_INFO* coll)//171A0, 172D4 (F)
|
||||
void lara_col_poledown(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state: 101*/
|
||||
/*state code: lara_as_null*/
|
||||
|
@ -770,7 +770,7 @@ void lara_col_poledown(ITEM_INFO* item, COLL_INFO* coll)//171A0, 172D4 (F)
|
|||
item->pos.yPos += item->itemFlags[2] / 256;
|
||||
}
|
||||
|
||||
void lara_as_poleleft(ITEM_INFO* item, COLL_INFO* coll)//17020(<), 17154(<) (F)
|
||||
void lara_as_poleleft(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 102*/
|
||||
/*collision: lara_void_func*/
|
||||
|
@ -782,7 +782,7 @@ void lara_as_poleleft(ITEM_INFO* item, COLL_INFO* coll)//17020(<), 17154(<) (F)
|
|||
item->pos.yRot += 256;
|
||||
}
|
||||
|
||||
void lara_as_poleright(ITEM_INFO* item, COLL_INFO* coll)//1707C(<), 171B0(<) (F)
|
||||
void lara_as_poleright(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state: 103*/
|
||||
/*collision: lara_void_func*/
|
||||
|
@ -796,7 +796,7 @@ void lara_as_poleright(ITEM_INFO* item, COLL_INFO* coll)//1707C(<), 171B0(<) (F)
|
|||
/*end poles*/
|
||||
/*-*/
|
||||
/*deathslide*/
|
||||
void lara_as_deathslide(ITEM_INFO* item, COLL_INFO* coll)//1B038, 1B16C (F)
|
||||
void lara_as_deathslide(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 70*/
|
||||
/*collision: lara_void_func*/
|
||||
|
|
|
@ -35,8 +35,8 @@ extern GameFlow* g_GameFlow;
|
|||
|
||||
void FireHarpoon()
|
||||
{
|
||||
short* ammos = GetAmmo(WEAPON_CROSSBOW);
|
||||
if (*ammos != 0)
|
||||
Ammo& ammos = GetAmmo(WEAPON_CROSSBOW);
|
||||
if (ammos.getCount() != 0)
|
||||
{
|
||||
Lara.hasFired = true;
|
||||
|
||||
|
@ -44,8 +44,8 @@ void FireHarpoon()
|
|||
short itemNumber = CreateItem();
|
||||
if (itemNumber != NO_ITEM)
|
||||
{
|
||||
if (*ammos != -1)
|
||||
(*ammos)--;
|
||||
if (!ammos.hasInfinite())
|
||||
(ammos)--;
|
||||
|
||||
GAME_VECTOR pos;
|
||||
ITEM_INFO* item = &g_Level.Items[itemNumber];
|
||||
|
@ -292,8 +292,8 @@ void FireGrenade()
|
|||
int y = 0;
|
||||
int z = 0;
|
||||
|
||||
short* ammo = GetAmmo(WEAPON_GRENADE_LAUNCHER);
|
||||
if (*ammo != 0)
|
||||
Ammo& ammo = GetAmmo(WEAPON_GRENADE_LAUNCHER);
|
||||
if (ammo != 0)
|
||||
{
|
||||
Lara.hasFired = true;
|
||||
|
||||
|
@ -365,8 +365,8 @@ void FireGrenade()
|
|||
|
||||
AddActiveItem(itemNumber);
|
||||
|
||||
if (*ammo != -1)
|
||||
(*ammo)--;
|
||||
if (!ammo.hasInfinite())
|
||||
(ammo)--;
|
||||
|
||||
item->itemFlags[0] = Lara.Weapons[WEAPON_GRENADE_LAUNCHER].SelectedAmmo;
|
||||
|
||||
|
@ -1516,8 +1516,8 @@ void RifleHandler(int weaponType)
|
|||
|
||||
void FireCrossbow(PHD_3DPOS* pos)
|
||||
{
|
||||
short* ammos = GetAmmo(WEAPON_CROSSBOW);
|
||||
if (*ammos != 0)
|
||||
Ammo& ammos = GetAmmo(WEAPON_CROSSBOW);
|
||||
if (ammos)
|
||||
{
|
||||
Lara.hasFired = true;
|
||||
|
||||
|
@ -1542,8 +1542,8 @@ void FireCrossbow(PHD_3DPOS* pos)
|
|||
}
|
||||
else
|
||||
{
|
||||
if (*ammos != -1)
|
||||
(*ammos)--;
|
||||
if (!ammos.hasInfinite())
|
||||
(ammos)--;
|
||||
|
||||
PHD_VECTOR jointPos;
|
||||
jointPos.x = 0;
|
||||
|
@ -1600,9 +1600,8 @@ void FireCrossbow(PHD_3DPOS* pos)
|
|||
|
||||
void FireRocket()
|
||||
{
|
||||
short* ammos = GetAmmo(WEAPON_ROCKET_LAUNCHER);
|
||||
if (*ammos != 0)
|
||||
{
|
||||
Ammo& ammos = GetAmmo(WEAPON_ROCKET_LAUNCHER);
|
||||
if (ammos) {
|
||||
Lara.hasFired = true;
|
||||
|
||||
short itemNumber = CreateItem();
|
||||
|
@ -1612,8 +1611,8 @@ void FireRocket()
|
|||
item->objectNumber = ID_ROCKET;
|
||||
item->roomNumber = LaraItem->roomNumber;
|
||||
|
||||
if (*ammos != -1)
|
||||
(*ammos)--;
|
||||
if (!ammos.hasInfinite())
|
||||
(ammos)--;
|
||||
|
||||
PHD_VECTOR jointPos;
|
||||
jointPos.x = 0;
|
||||
|
|
|
@ -9,7 +9,7 @@ short OldAngle = 1;
|
|||
/*this file has all the related functions to sliding*/
|
||||
|
||||
/*tests and others*/
|
||||
int TestLaraSlide(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
int TestLaraSlide(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
if (abs(coll->tiltX) <= 2 && abs(coll->tiltZ) <= 2)
|
||||
return 0;
|
||||
|
@ -58,7 +58,7 @@ int TestLaraSlide(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
|||
return 1;
|
||||
}
|
||||
|
||||
void lara_slide_slope(ITEM_INFO* item, COLL_INFO* coll)//127BC, 1286C (F)
|
||||
void lara_slide_slope(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
coll->badPos = NO_BAD_POS;
|
||||
coll->badNeg = -512;
|
||||
|
@ -115,7 +115,7 @@ void lara_slide_slope(ITEM_INFO* item, COLL_INFO* coll)//127BC, 1286C (F)
|
|||
}
|
||||
}
|
||||
|
||||
void LaraSlideEdgeJump(ITEM_INFO* item, COLL_INFO* coll)//12B18, 12BC8 (F)
|
||||
void LaraSlideEdgeJump(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
ShiftItem(item, coll);
|
||||
|
||||
|
@ -152,7 +152,7 @@ void LaraSlideEdgeJump(ITEM_INFO* item, COLL_INFO* coll)//12B18, 12BC8 (F)
|
|||
/*end tests and others*/
|
||||
/*-*/
|
||||
/*Lara state code*/
|
||||
void lara_as_slide(ITEM_INFO* item, COLL_INFO* coll)//1A824(<), 1A958(<) (F)
|
||||
void lara_as_slide(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 24*/
|
||||
/*collision: lara_col_slide*/
|
||||
|
@ -161,7 +161,7 @@ void lara_as_slide(ITEM_INFO* item, COLL_INFO* coll)//1A824(<), 1A958(<) (F)
|
|||
item->goalAnimState = LS_JUMP_FORWARD;
|
||||
}
|
||||
|
||||
void lara_col_slide(ITEM_INFO* item, COLL_INFO* coll)//1C108(<), 1C23C(<) (F)
|
||||
void lara_col_slide(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 24*/
|
||||
/*state code: lara_as_slide*/
|
||||
|
@ -169,7 +169,7 @@ void lara_col_slide(ITEM_INFO* item, COLL_INFO* coll)//1C108(<), 1C23C(<) (F)
|
|||
lara_slide_slope(item, coll);
|
||||
}
|
||||
|
||||
void lara_as_slideback(ITEM_INFO* item, COLL_INFO* coll)//1A9E0(<), 1AB14(<) (F)
|
||||
void lara_as_slideback(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 32*/
|
||||
/*collision: lara_col_slideback*/
|
||||
|
@ -179,7 +179,7 @@ void lara_as_slideback(ITEM_INFO* item, COLL_INFO* coll)//1A9E0(<), 1AB14(<) (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_col_slideback(ITEM_INFO* item, COLL_INFO* coll)//1C284(<), 1C3B8(<) (F)
|
||||
void lara_col_slideback(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
/*state 32*/
|
||||
/*state code: lara_as_slideback*/
|
||||
|
|
|
@ -827,11 +827,97 @@ struct HolsterInfo {
|
|||
HOLSTER_SLOT rightHolster;
|
||||
HOLSTER_SLOT backHolster;
|
||||
};
|
||||
struct Ammo {
|
||||
using CountType = uint16_t;
|
||||
private:
|
||||
CountType count;
|
||||
bool isInfinite;
|
||||
public:
|
||||
|
||||
Ammo& operator --() {
|
||||
--count;
|
||||
return *this;
|
||||
}
|
||||
|
||||
Ammo operator --(int) {
|
||||
Ammo tmp = *this;
|
||||
--*this;
|
||||
return tmp;
|
||||
}
|
||||
|
||||
Ammo& operator ++() {
|
||||
++count;
|
||||
return *this;
|
||||
}
|
||||
|
||||
Ammo operator ++(int) {
|
||||
Ammo tmp = *this;
|
||||
++*this;
|
||||
return tmp;
|
||||
}
|
||||
|
||||
Ammo& operator =(size_t val) {
|
||||
count = clamp(val);
|
||||
return *this;
|
||||
}
|
||||
|
||||
bool operator ==(size_t val) {
|
||||
return count == clamp(val);
|
||||
}
|
||||
|
||||
Ammo& operator =(Ammo& rhs) {
|
||||
count = rhs.count;
|
||||
isInfinite = rhs.count;
|
||||
return *this;
|
||||
}
|
||||
|
||||
Ammo operator +(size_t val) {
|
||||
Ammo tmp = *this;
|
||||
tmp += val;
|
||||
return tmp;
|
||||
}
|
||||
|
||||
Ammo operator -(size_t val) {
|
||||
Ammo tmp = *this;
|
||||
tmp -= val;
|
||||
return tmp;
|
||||
}
|
||||
|
||||
Ammo& operator +=(size_t val) {
|
||||
int tmp = this->count + val;
|
||||
this->count = clamp(tmp);
|
||||
return *this;
|
||||
}
|
||||
|
||||
Ammo& operator -=(size_t val) {
|
||||
int tmp = this->count - val;
|
||||
this->count = clamp(tmp);
|
||||
return *this;
|
||||
}
|
||||
|
||||
operator bool() {
|
||||
return isInfinite || (count > 0);
|
||||
}
|
||||
static CountType clamp(int val) {
|
||||
return std::clamp(val, 0, static_cast<int>(std::numeric_limits<CountType>::max()));
|
||||
}
|
||||
|
||||
bool hasInfinite() const {
|
||||
return isInfinite;
|
||||
}
|
||||
|
||||
CountType getCount() const {
|
||||
return count;
|
||||
}
|
||||
|
||||
void setInfinite(bool infinite) {
|
||||
isInfinite = infinite;
|
||||
}
|
||||
};
|
||||
typedef struct CarriedWeaponInfo
|
||||
{
|
||||
bool Present;
|
||||
short Ammo[MAX_AMMOTYPE];
|
||||
Ammo Ammo[MAX_AMMOTYPE];
|
||||
int SelectedAmmo; // WeaponAmmoType_enum
|
||||
bool HasLasersight;
|
||||
bool HasSilencer;
|
||||
|
|
|
@ -29,25 +29,25 @@ void lara_col_surftread(ITEM_INFO* item, COLL_INFO* coll)
|
|||
LaraSurfaceCollision(item, coll);
|
||||
}
|
||||
|
||||
void lara_col_surfright(ITEM_INFO* item, COLL_INFO* coll)//4DD90(<), 4E1F4(<) (F)
|
||||
void lara_col_surfright(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
Lara.moveAngle = item->pos.yRot + ANGLE(90);
|
||||
LaraSurfaceCollision(item, coll);
|
||||
}
|
||||
|
||||
void lara_col_surfleft(ITEM_INFO* item, COLL_INFO* coll)//4DD64(<), 4E1C8(<) (F)
|
||||
void lara_col_surfleft(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
Lara.moveAngle = item->pos.yRot - ANGLE(90);
|
||||
LaraSurfaceCollision(item, coll);
|
||||
}
|
||||
|
||||
void lara_col_surfback(ITEM_INFO* item, COLL_INFO* coll)//4DD38(<), 4E19C(<) (F)
|
||||
void lara_col_surfback(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
Lara.moveAngle = item->pos.yRot + ANGLE(180);
|
||||
LaraSurfaceCollision(item, coll);
|
||||
}
|
||||
|
||||
void lara_col_surfswim(ITEM_INFO* item, COLL_INFO* coll)//4DCE8(<), 4E14C(<) (F)
|
||||
void lara_col_surfswim(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
coll->badNeg = -384;
|
||||
Lara.moveAngle = item->pos.yRot;
|
||||
|
@ -56,7 +56,7 @@ void lara_col_surfswim(ITEM_INFO* item, COLL_INFO* coll)//4DCE8(<), 4E14C(<) (F)
|
|||
LaraTestLadderClimbOut(item, coll);
|
||||
}
|
||||
|
||||
void lara_as_surftread(ITEM_INFO* item, COLL_INFO* coll)//4DBA0, 4E004 (F)
|
||||
void lara_as_surftread(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
item->fallspeed -= 4;
|
||||
if (item->fallspeed < 0)
|
||||
|
@ -113,7 +113,7 @@ void lara_as_surftread(ITEM_INFO* item, COLL_INFO* coll)//4DBA0, 4E004 (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_surfright(ITEM_INFO* item, COLL_INFO* coll)//4DAF8, 4DF5C (F)
|
||||
void lara_as_surfright(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
if (item->hitPoints <= 0)
|
||||
{
|
||||
|
@ -142,7 +142,7 @@ void lara_as_surfright(ITEM_INFO* item, COLL_INFO* coll)//4DAF8, 4DF5C (F)
|
|||
item->fallspeed = 60;
|
||||
}
|
||||
|
||||
void lara_as_surfleft(ITEM_INFO* item, COLL_INFO* coll)//4DA50(<), 4DEB4(<) (F)
|
||||
void lara_as_surfleft(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
if (item->hitPoints <= 0)
|
||||
{
|
||||
|
@ -171,7 +171,7 @@ void lara_as_surfleft(ITEM_INFO* item, COLL_INFO* coll)//4DA50(<), 4DEB4(<) (F)
|
|||
item->fallspeed = 60;
|
||||
}
|
||||
|
||||
void lara_as_surfback(ITEM_INFO* item, COLL_INFO* coll)//4D9A8(<), 4DE0C(<) (F)
|
||||
void lara_as_surfback(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
if (item->hitPoints <= 0)
|
||||
{
|
||||
|
@ -200,7 +200,7 @@ void lara_as_surfback(ITEM_INFO* item, COLL_INFO* coll)//4D9A8(<), 4DE0C(<) (F)
|
|||
item->fallspeed = 60;
|
||||
}
|
||||
|
||||
void lara_as_surfswim(ITEM_INFO* item, COLL_INFO* coll)//4D8E4(<), 4DD48(<) (F)
|
||||
void lara_as_surfswim(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
if (item->hitPoints <= 0)
|
||||
{
|
||||
|
@ -229,7 +229,7 @@ void lara_as_surfswim(ITEM_INFO* item, COLL_INFO* coll)//4D8E4(<), 4DD48(<) (F)
|
|||
item->fallspeed = 60;
|
||||
}
|
||||
|
||||
void LaraSurfaceCollision(ITEM_INFO* item, COLL_INFO* coll)//4D4F0(<), 4D954(<) (F)
|
||||
void LaraSurfaceCollision(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
coll->facing = Lara.moveAngle;
|
||||
|
||||
|
@ -269,7 +269,7 @@ void LaraSurfaceCollision(ITEM_INFO* item, COLL_INFO* coll)//4D4F0(<), 4D954(<)
|
|||
}
|
||||
}
|
||||
|
||||
int LaraTestWaterClimbOut(ITEM_INFO* item, COLL_INFO* coll)//4D22C, 4D690
|
||||
int LaraTestWaterClimbOut(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
if (coll->collType != CT_FRONT || !(TrInput & IN_ACTION))
|
||||
return 0;
|
||||
|
@ -388,7 +388,7 @@ int LaraTestWaterClimbOut(ITEM_INFO* item, COLL_INFO* coll)//4D22C, 4D690
|
|||
return 1;
|
||||
}
|
||||
|
||||
int LaraTestWaterStepOut(ITEM_INFO* item, COLL_INFO* coll)//4D100, 4D564 (F)
|
||||
int LaraTestWaterStepOut(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
if (coll->collType == CT_FRONT
|
||||
|| coll->midType == BIG_SLOPE
|
||||
|
@ -490,6 +490,7 @@ int LaraTestLadderClimbOut(ITEM_INFO* item, COLL_INFO* coll) // NEW function for
|
|||
AnimateLara(item);
|
||||
|
||||
item->pos.yRot = rot;
|
||||
item->pos.yPos -= 10;//otherwise she falls back into the water
|
||||
Lara.gunStatus = LG_HANDS_BUSY;
|
||||
item->pos.zRot = 0;
|
||||
item->pos.xRot = 0;
|
||||
|
@ -501,7 +502,7 @@ int LaraTestLadderClimbOut(ITEM_INFO* item, COLL_INFO* coll) // NEW function for
|
|||
return 1;
|
||||
}
|
||||
|
||||
void lara_as_waterout(ITEM_INFO* item, COLL_INFO* coll)//1AEE4(<), 1B018(<) (F)
|
||||
void lara_as_waterout(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
coll->enableBaddiePush = false;
|
||||
coll->enableSpaz = false;
|
||||
|
|
|
@ -26,7 +26,7 @@ typedef struct SUBSUIT_INFO
|
|||
SUBSUIT_INFO Subsuit;
|
||||
byte SubHitCount = 0;
|
||||
|
||||
void LaraWaterCurrent(COLL_INFO* coll) // (F) (D)
|
||||
void LaraWaterCurrent(COLL_INFO* coll)
|
||||
{
|
||||
if (Lara.currentActive)
|
||||
{
|
||||
|
@ -108,7 +108,7 @@ void LaraWaterCurrent(COLL_INFO* coll) // (F) (D)
|
|||
coll->old.z = LaraItem->pos.zPos;
|
||||
}
|
||||
|
||||
int GetWaterDepth(int x, int y, int z, short roomNumber)//4CA38, 4CE9C
|
||||
int GetWaterDepth(int x, int y, int z, short roomNumber)
|
||||
{
|
||||
FLOOR_INFO* floor;
|
||||
ROOM_INFO* r = &g_Level.Rooms[roomNumber];
|
||||
|
@ -181,12 +181,12 @@ int GetWaterDepth(int x, int y, int z, short roomNumber)//4CA38, 4CE9C
|
|||
}
|
||||
}
|
||||
|
||||
void lara_col_waterroll(ITEM_INFO* item, COLL_INFO* coll)//4CA18(<), 4CE7C(<) (F)
|
||||
void lara_col_waterroll(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
LaraSwimCollision(item, coll);
|
||||
}
|
||||
|
||||
void lara_col_uwdeath(ITEM_INFO* item, COLL_INFO* coll)//4C980(<), 4CDE4(<) (F)
|
||||
void lara_col_uwdeath(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
item->hitPoints = -1;
|
||||
Lara.air = -1;
|
||||
|
@ -200,32 +200,32 @@ void lara_col_uwdeath(ITEM_INFO* item, COLL_INFO* coll)//4C980(<), 4CDE4(<) (F)
|
|||
LaraSwimCollision(item, coll);
|
||||
}
|
||||
|
||||
void lara_col_dive(ITEM_INFO* item, COLL_INFO* coll)//4C960(<), 4CDC4(<) (F)
|
||||
void lara_col_dive(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
LaraSwimCollision(item, coll);
|
||||
}
|
||||
|
||||
void lara_col_tread(ITEM_INFO* item, COLL_INFO* coll)//4C940(<), 4CDA4(<) (F)
|
||||
void lara_col_tread(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
LaraSwimCollision(item, coll);
|
||||
}
|
||||
|
||||
void lara_col_glide(ITEM_INFO* item, COLL_INFO* coll)//4C920(<), 4CD84(<) (F)
|
||||
void lara_col_glide(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
LaraSwimCollision(item, coll);
|
||||
}
|
||||
|
||||
void lara_col_swim(ITEM_INFO* item, COLL_INFO* coll)//4C900(<), 4CD64(<) (F)
|
||||
void lara_col_swim(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
LaraSwimCollision(item, coll);
|
||||
}
|
||||
|
||||
void lara_as_waterroll(ITEM_INFO* item, COLL_INFO* coll)//4C8F8(<), 4CD5C(<) (F)
|
||||
void lara_as_waterroll(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
item->fallspeed = 0;
|
||||
}
|
||||
|
||||
void lara_as_uwdeath(ITEM_INFO* item, COLL_INFO* coll)//4C884(<), 4CCE8(<) (F)
|
||||
void lara_as_uwdeath(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
Lara.look = 0;
|
||||
|
||||
|
@ -246,7 +246,7 @@ void lara_as_uwdeath(ITEM_INFO* item, COLL_INFO* coll)//4C884(<), 4CCE8(<) (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_dive(ITEM_INFO* item, COLL_INFO* coll)//4C854, 4CCB8 (F)
|
||||
void lara_as_dive(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
if (TrInput & IN_FORWARD)
|
||||
{
|
||||
|
@ -254,7 +254,7 @@ void lara_as_dive(ITEM_INFO* item, COLL_INFO* coll)//4C854, 4CCB8 (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_tread(ITEM_INFO* item, COLL_INFO* coll)//4C730, 4CB94 (F)
|
||||
void lara_as_tread(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
if (item->hitPoints <= 0)
|
||||
{
|
||||
|
@ -291,7 +291,7 @@ void lara_as_tread(ITEM_INFO* item, COLL_INFO* coll)//4C730, 4CB94 (F)
|
|||
}
|
||||
}
|
||||
|
||||
void lara_as_glide(ITEM_INFO* item, COLL_INFO* coll)//4C634(<), 4CA98(<) (F)
|
||||
void lara_as_glide(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
if (item->hitPoints <= 0)
|
||||
{
|
||||
|
@ -329,7 +329,7 @@ void lara_as_glide(ITEM_INFO* item, COLL_INFO* coll)//4C634(<), 4CA98(<) (F)
|
|||
item->goalAnimState = LS_UNDERWATER_STOP;
|
||||
}
|
||||
|
||||
void lara_as_swim(ITEM_INFO* item, COLL_INFO* coll)//4C548(<), 4C9AC(<) (F)
|
||||
void lara_as_swim(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
if (item->hitPoints <= 0)
|
||||
{
|
||||
|
@ -365,7 +365,7 @@ void lara_as_swim(ITEM_INFO* item, COLL_INFO* coll)//4C548(<), 4C9AC(<) (F)
|
|||
item->goalAnimState = LS_UNDERWATER_INERTIA;
|
||||
}
|
||||
|
||||
void UpdateSubsuitAngles()//4BD20, 4C184 (F)
|
||||
void UpdateSubsuitAngles()
|
||||
{
|
||||
if (Subsuit.YVel != 0)
|
||||
{
|
||||
|
@ -437,7 +437,7 @@ void UpdateSubsuitAngles()//4BD20, 4C184 (F)
|
|||
}
|
||||
}
|
||||
|
||||
void SwimTurnSubsuit(ITEM_INFO* item)//4BBDC, 4C040 (F)
|
||||
void SwimTurnSubsuit(ITEM_INFO* item)
|
||||
{
|
||||
if (item->pos.yPos < 14080)
|
||||
Subsuit.YVel += ((14080 - item->pos.yPos) / 16);
|
||||
|
@ -475,7 +475,7 @@ void SwimTurnSubsuit(ITEM_INFO* item)//4BBDC, 4C040 (F)
|
|||
}
|
||||
}
|
||||
|
||||
void SwimTurn(ITEM_INFO* item)//4BAF4(<), 4BF58(<) (F)
|
||||
void SwimTurn(ITEM_INFO* item)
|
||||
{
|
||||
if (TrInput & IN_FORWARD)
|
||||
{
|
||||
|
@ -502,7 +502,7 @@ void SwimTurn(ITEM_INFO* item)//4BAF4(<), 4BF58(<) (F)
|
|||
}
|
||||
}
|
||||
|
||||
void LaraSwimCollision(ITEM_INFO* item, COLL_INFO* coll)//4B608, 4BA6C
|
||||
void LaraSwimCollision(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
int oldX = item->pos.xPos;
|
||||
int oldY = item->pos.yPos;
|
||||
|
@ -664,7 +664,7 @@ void LaraSwimCollision(ITEM_INFO* item, COLL_INFO* coll)//4B608, 4BA6C
|
|||
LaraTestWaterDepth(item, coll);
|
||||
}
|
||||
|
||||
void LaraTestWaterDepth(ITEM_INFO* item, COLL_INFO* coll)//4B4F8(<), 4B95C(<) (F)
|
||||
void LaraTestWaterDepth(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
short roomNumber = item->roomNumber;
|
||||
FLOOR_INFO* floor = GetFloor(item->pos.xPos, item->pos.yPos, item->pos.zPos, &roomNumber);
|
||||
|
|
|
@ -23,7 +23,7 @@ static short RightClimbTab[4] = // offset 0xA0640
|
|||
|
||||
/*this file has all the generic test functions called in lara's state code*/
|
||||
|
||||
int TestLaraVault(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
int TestLaraVault(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
if (!(TrInput & IN_ACTION) || Lara.gunStatus != LG_NO_ARMS)
|
||||
return 0;
|
||||
|
@ -225,7 +225,7 @@ int TestLaraVault(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int TestWall(ITEM_INFO* item, int front, int right, int down)//12550, 12600 (F)
|
||||
int TestWall(ITEM_INFO* item, int front, int right, int down)
|
||||
{
|
||||
int x = item->pos.xPos;
|
||||
int y = item->pos.yPos + down;
|
||||
|
@ -288,7 +288,7 @@ int TestWall(ITEM_INFO* item, int front, int right, int down)//12550, 12600 (F)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int LaraHangTest(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
int LaraHangTest(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
int delta, flag, flag2, front, dfront, x, z, result;
|
||||
short angle, hdif, cdif, dir;
|
||||
|
@ -464,7 +464,7 @@ int LaraHangTest(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
|||
return result;
|
||||
}
|
||||
|
||||
int LaraHangLeftCornerTest(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
int LaraHangLeftCornerTest(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
if (item->animNumber != LA_REACH_TO_HANG && item->animNumber != LA_HANG_FEET_IDLE)
|
||||
return 0;
|
||||
|
@ -619,7 +619,7 @@ int LaraHangLeftCornerTest(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
|||
return result;
|
||||
}
|
||||
|
||||
int LaraHangRightCornerTest(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
int LaraHangRightCornerTest(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
if (item->animNumber != LA_REACH_TO_HANG && item->animNumber != LA_HANG_FEET_IDLE)
|
||||
return 0;
|
||||
|
@ -774,7 +774,7 @@ int LaraHangRightCornerTest(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
|||
return result;
|
||||
}
|
||||
|
||||
int IsValidHangPos(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
int IsValidHangPos(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
if (LaraFloorFront(item, Lara.moveAngle, 100) < 200)
|
||||
return 0;
|
||||
|
@ -813,7 +813,7 @@ int IsValidHangPos(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
|||
return abs(coll->frontFloor - coll->rightFloor2) < 60;
|
||||
}
|
||||
|
||||
int LaraTestClimbStance(ITEM_INFO* item, COLL_INFO* coll)//11F78, 12028
|
||||
int LaraTestClimbStance(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
int shift_r, shift_l;
|
||||
|
||||
|
@ -848,7 +848,7 @@ int LaraTestClimbStance(ITEM_INFO* item, COLL_INFO* coll)//11F78, 12028
|
|||
return true;
|
||||
}
|
||||
|
||||
int LaraTestHangOnClimbWall(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
int LaraTestHangOnClimbWall(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
BOUNDING_BOX* bounds;
|
||||
int shift, result;
|
||||
|
@ -902,7 +902,7 @@ int LaraTestHangOnClimbWall(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int LaraTestEdgeCatch(ITEM_INFO* item, COLL_INFO* coll, int* edge) // (F) (D)
|
||||
int LaraTestEdgeCatch(ITEM_INFO* item, COLL_INFO* coll, int* edge)
|
||||
{
|
||||
|
||||
BOUNDING_BOX* bounds = GetBoundsAccurate(item);
|
||||
|
@ -931,7 +931,7 @@ int LaraTestEdgeCatch(ITEM_INFO* item, COLL_INFO* coll, int* edge) // (F) (D)
|
|||
return 1;
|
||||
}
|
||||
|
||||
int TestHangSwingIn(ITEM_INFO* item, short angle)//14104, 141B4 (F)
|
||||
int TestHangSwingIn(ITEM_INFO* item, short angle)
|
||||
{
|
||||
int x = item->pos.xPos;
|
||||
int y = item->pos.yPos;
|
||||
|
@ -1053,7 +1053,7 @@ int TestHangFeet(ITEM_INFO* item, short angle)
|
|||
}
|
||||
}
|
||||
|
||||
int CanLaraHangSideways(ITEM_INFO* item, COLL_INFO* coll, short angle)//19930, 19A64 (F)
|
||||
int CanLaraHangSideways(ITEM_INFO* item, COLL_INFO* coll, short angle)
|
||||
{
|
||||
int oldx = item->pos.xPos;
|
||||
int oldz = item->pos.zPos;
|
||||
|
@ -1094,7 +1094,7 @@ int CanLaraHangSideways(ITEM_INFO* item, COLL_INFO* coll, short angle)//19930, 1
|
|||
return !res;
|
||||
}
|
||||
|
||||
void SetCornerAnim(ITEM_INFO* item, COLL_INFO* coll, short rot, short flip)//1A090, 1A1C4 (F)
|
||||
void SetCornerAnim(ITEM_INFO* item, COLL_INFO* coll, short rot, short flip)
|
||||
{
|
||||
if (item->hitPoints <= 0)
|
||||
{
|
||||
|
@ -1175,7 +1175,7 @@ void SetCornerAnimFeet(ITEM_INFO* item, COLL_INFO* coll, short rot, short flip)
|
|||
}
|
||||
}
|
||||
|
||||
int LaraFloorFront(ITEM_INFO* item, short ang, int dist) // (F) (D)
|
||||
int LaraFloorFront(ITEM_INFO* item, short ang, int dist)
|
||||
{
|
||||
int x = item->pos.xPos + dist * phd_sin(ang);
|
||||
int y = item->pos.yPos - 762;
|
||||
|
@ -1191,7 +1191,7 @@ int LaraFloorFront(ITEM_INFO* item, short ang, int dist) // (F) (D)
|
|||
return height;
|
||||
}
|
||||
|
||||
int LaraCeilingFront(ITEM_INFO* item, short ang, int dist, int h) // (F) (D)
|
||||
int LaraCeilingFront(ITEM_INFO* item, short ang, int dist, int h)
|
||||
{
|
||||
int x = item->pos.xPos + dist * phd_sin(ang);
|
||||
int y = item->pos.yPos - h;
|
||||
|
@ -1207,7 +1207,7 @@ int LaraCeilingFront(ITEM_INFO* item, short ang, int dist, int h) // (F) (D)
|
|||
return height;
|
||||
}
|
||||
|
||||
int LaraFallen(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
int LaraFallen(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
if (Lara.waterStatus == LW_WADE || coll->midFloor <= STEPUP_HEIGHT)
|
||||
{
|
||||
|
@ -1223,7 +1223,7 @@ int LaraFallen(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
|||
return 1;
|
||||
}
|
||||
|
||||
int LaraLandedBad(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
int LaraLandedBad(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
int landspeed = item->fallspeed - 140;
|
||||
|
||||
|
|
|
@ -1426,15 +1426,19 @@ void CreatureAIInfo(ITEM_INFO* item, AI_INFO* info)
|
|||
info->zoneNumber = zone[item->boxNumber];
|
||||
|
||||
r = &g_Level.Rooms[enemy->roomNumber];
|
||||
enemy->boxNumber = XZ_GET_SECTOR(r, enemy->pos.xPos - r->x, enemy->pos.zPos - r->z).box;
|
||||
info->enemyZone = zone[enemy->boxNumber];
|
||||
|
||||
if (!obj->nonLot)
|
||||
int boxNumber = XZ_GET_SECTOR(r, enemy->pos.xPos - r->x, enemy->pos.zPos - r->z).box;
|
||||
if (boxNumber != NO_BOX)
|
||||
{
|
||||
if (g_Level.Boxes[enemy->boxNumber].flags & creature->LOT.blockMask)
|
||||
info->enemyZone |= BLOCKED;
|
||||
else if (creature->LOT.node[item->boxNumber].searchNumber == (creature->LOT.searchNumber | BLOCKED_SEARCH))
|
||||
info->enemyZone |= BLOCKED;
|
||||
enemy->boxNumber = boxNumber;
|
||||
info->enemyZone = zone[enemy->boxNumber];
|
||||
|
||||
if (!obj->nonLot)
|
||||
{
|
||||
if (g_Level.Boxes[enemy->boxNumber].flags & creature->LOT.blockMask)
|
||||
info->enemyZone |= BLOCKED;
|
||||
else if (creature->LOT.node[item->boxNumber].searchNumber == (creature->LOT.searchNumber | BLOCKED_SEARCH))
|
||||
info->enemyZone |= BLOCKED;
|
||||
}
|
||||
}
|
||||
|
||||
if (enemy == LaraItem)
|
||||
|
|
|
@ -57,7 +57,7 @@ void UpdateBubbles()
|
|||
}
|
||||
}
|
||||
|
||||
int GetFreeBubble() //8BEAC(<), 8DEF0(<) (F)
|
||||
int GetFreeBubble()
|
||||
{
|
||||
int oldestAgeIndex = 0;
|
||||
int oldestAge = 0;
|
||||
|
@ -78,7 +78,7 @@ int GetFreeBubble() //8BEAC(<), 8DEF0(<) (F)
|
|||
return oldestAgeIndex;
|
||||
}
|
||||
|
||||
void CreateBubble(PHD_VECTOR* pos, short roomNum, int unk1, int unk2, int flags, int xv, int yv, int zv) //8BF14(<), 8DF58(<) (F)
|
||||
void CreateBubble(PHD_VECTOR* pos, short roomNum, int unk1, int unk2, int flags, int xv, int yv, int zv)
|
||||
{
|
||||
if (g_Level.Rooms[roomNum].flags & ENV_FLAG_WATER)
|
||||
{
|
||||
|
|
|
@ -1315,9 +1315,9 @@ void BinocularCamera(ITEM_INFO* item)
|
|||
if (LaserSight)
|
||||
{
|
||||
int firing = 0;
|
||||
short* ammo = GetAmmo(Lara.gunType);
|
||||
Ammo& ammo = GetAmmo(Lara.gunType);
|
||||
|
||||
if (!(InputBusy & IN_ACTION) || WeaponDelay || !*ammo)
|
||||
if (!(InputBusy & IN_ACTION) || WeaponDelay || !ammo)
|
||||
{
|
||||
if (!(InputBusy & IN_ACTION))
|
||||
{
|
||||
|
@ -1334,8 +1334,8 @@ void BinocularCamera(ITEM_INFO* item)
|
|||
firing = 1;
|
||||
WeaponDelay = 16;
|
||||
Savegame.Game.AmmoUsed++;
|
||||
if (*ammo != -1)
|
||||
(*ammo)--;
|
||||
if (!ammo.hasInfinite())
|
||||
(ammo)--;
|
||||
}
|
||||
else if (Lara.gunType == WEAPON_CROSSBOW)
|
||||
{
|
||||
|
@ -1426,8 +1426,8 @@ void BinocularCamera(ITEM_INFO* item)
|
|||
Camera.bounce = -16 - (GetRandomControl() & 0x1F);
|
||||
}
|
||||
|
||||
if (*ammo != -1)
|
||||
(*ammo)--;
|
||||
if (!ammo.hasInfinite())
|
||||
(ammo)--;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -327,7 +327,7 @@ void TrapCollision(short itemNumber, ITEM_INFO* l, COLL_INFO* c)
|
|||
ObjectCollision(itemNumber, l, c);
|
||||
}
|
||||
|
||||
void TestForObjectOnLedge(ITEM_INFO* item, COLL_INFO* coll)//2A940(<), 2AB68(<) (F)
|
||||
void TestForObjectOnLedge(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
for (int i = 0; i < 2; i++)
|
||||
{
|
||||
|
|
|
@ -1654,7 +1654,7 @@ int CheckNoColCeilingTriangle(FLOOR_INFO *floor, int x, int z)
|
|||
|
||||
int GetFloorHeight(FLOOR_INFO *floor, int x, int y, int z)
|
||||
{
|
||||
#if 0
|
||||
|
||||
TiltYOffset = 0;
|
||||
TiltXOffset = 0;
|
||||
OnObject = 0;
|
||||
|
@ -1671,202 +1671,204 @@ int GetFloorHeight(FLOOR_INFO *floor, int x, int y, int z)
|
|||
}
|
||||
|
||||
int height = floor->floor * 256;
|
||||
if (height == NO_HEIGHT)
|
||||
return height;
|
||||
#endif
|
||||
|
||||
TriggerIndex = NULL;
|
||||
|
||||
/*if (floor->index == 0)
|
||||
return height;*/
|
||||
|
||||
short *data = &g_Level.FloorData[floor->index];
|
||||
short type, hadj;
|
||||
|
||||
int xOff, yOff, trigger;
|
||||
/*ITEM_INFO *item;
|
||||
OBJECT_INFO *obj;
|
||||
int tilts, t0, t1, t2, t3, t4, dx, dz, h1, h2;*/
|
||||
|
||||
do
|
||||
if (height != NO_HEIGHT)
|
||||
{
|
||||
type = *(data++);
|
||||
// return height;
|
||||
|
||||
switch (type & DATA_TYPE)
|
||||
|
||||
TriggerIndex = NULL;
|
||||
|
||||
if (floor->index != 0)
|
||||
{
|
||||
case DOOR_TYPE:
|
||||
case ROOF_TYPE:
|
||||
case SPLIT3:
|
||||
case SPLIT4:
|
||||
case NOCOLC1T:
|
||||
case NOCOLC1B:
|
||||
case NOCOLC2T:
|
||||
case NOCOLC2B:
|
||||
data++;
|
||||
break;
|
||||
// return height;
|
||||
|
||||
case TILT_TYPE:
|
||||
/*TiltXOffset = xOff = (*data >> 8);
|
||||
TiltYOffset = yOff = *(char *)data;
|
||||
|
||||
if ((abs(xOff)) > 2 || (abs(yOff)) > 2)
|
||||
HeightType = BIG_SLOPE;
|
||||
else
|
||||
HeightType = SMALL_SLOPE;
|
||||
|
||||
if (xOff >= 0)
|
||||
height += (xOff * ((-1 - z) & 1023) >> 2);
|
||||
else
|
||||
height -= (xOff * (z & 1023) >> 2);
|
||||
|
||||
if (yOff >= 0)
|
||||
height += yOff * ((-1 - x) & 1023) >> 2;
|
||||
else
|
||||
height -= yOff * (x & 1023) >> 2;*/
|
||||
|
||||
data++;
|
||||
break;
|
||||
|
||||
case TRIGGER_TYPE:
|
||||
if (!TriggerIndex)
|
||||
TriggerIndex = data - 1;
|
||||
|
||||
data++;
|
||||
short* data = &g_Level.FloorData[floor->index];
|
||||
short type, hadj;
|
||||
|
||||
int xOff, yOff, trigger;
|
||||
ITEM_INFO* item;
|
||||
OBJECT_INFO* obj;
|
||||
int tilts, t0, t1, t2, t3, t4, dx, dz, h1, h2;
|
||||
do
|
||||
{
|
||||
trigger = *(data++);
|
||||
type = *(data++);
|
||||
|
||||
if (TRIG_BITS(trigger) != TO_OBJECT)
|
||||
switch (type & DATA_TYPE)
|
||||
{
|
||||
if (TRIG_BITS(trigger) == TO_CAMERA ||
|
||||
TRIG_BITS(trigger) == TO_FLYBY)
|
||||
case DOOR_TYPE:
|
||||
case ROOF_TYPE:
|
||||
case SPLIT3:
|
||||
case SPLIT4:
|
||||
case NOCOLC1T:
|
||||
case NOCOLC1B:
|
||||
case NOCOLC2T:
|
||||
case NOCOLC2B:
|
||||
data++;
|
||||
break;
|
||||
|
||||
case TILT_TYPE:
|
||||
TiltXOffset = xOff = (*data >> 8);
|
||||
TiltYOffset = yOff = *(char*)data;
|
||||
|
||||
if ((abs(xOff)) > 2 || (abs(yOff)) > 2)
|
||||
HeightType = BIG_SLOPE;
|
||||
else
|
||||
HeightType = SMALL_SLOPE;
|
||||
|
||||
if (xOff >= 0)
|
||||
height += (xOff * ((-1 - z) & 1023) >> 2);
|
||||
else
|
||||
height -= (xOff * (z & 1023) >> 2);
|
||||
|
||||
if (yOff >= 0)
|
||||
height += yOff * ((-1 - x) & 1023) >> 2;
|
||||
else
|
||||
height -= yOff * (x & 1023) >> 2;
|
||||
|
||||
data++;
|
||||
break;
|
||||
|
||||
case TRIGGER_TYPE:
|
||||
if (!TriggerIndex)
|
||||
TriggerIndex = data - 1;
|
||||
|
||||
data++;
|
||||
|
||||
do
|
||||
{
|
||||
trigger = *(data++);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*item = &g_Level.Items[trigger & VALUE_BITS];
|
||||
obj = &Objects[item->objectNumber];
|
||||
|
||||
if (obj->floor && !(item->flags & 0x8000))
|
||||
if (TRIG_BITS(trigger) != TO_OBJECT)
|
||||
{
|
||||
if (TRIG_BITS(trigger) == TO_CAMERA ||
|
||||
TRIG_BITS(trigger) == TO_FLYBY)
|
||||
{
|
||||
trigger = *(data++);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*item = &g_Level.Items[trigger & VALUE_BITS];
|
||||
obj = &Objects[item->objectNumber];
|
||||
|
||||
if (obj->floor && !(item->flags & 0x8000))
|
||||
{
|
||||
(obj->floor)(item, x, y, z, &height);
|
||||
}*/
|
||||
}
|
||||
|
||||
} while (!(trigger & END_BIT));
|
||||
break;
|
||||
|
||||
case LAVA_TYPE:
|
||||
TriggerIndex = data - 1;
|
||||
break;
|
||||
|
||||
case CLIMB_TYPE:
|
||||
case MONKEY_TYPE:
|
||||
case TRIGTRIGGER_TYPE:
|
||||
if (!TriggerIndex)
|
||||
TriggerIndex = data - 1;
|
||||
break;
|
||||
|
||||
case SPLIT1:
|
||||
case SPLIT2:
|
||||
case NOCOLF1T:
|
||||
case NOCOLF1B:
|
||||
case NOCOLF2T:
|
||||
case NOCOLF2B:
|
||||
tilts = *data;
|
||||
t0 = tilts & 15;
|
||||
t1 = (tilts >> 4) & 15;
|
||||
t2 = (tilts >> 8) & 15;
|
||||
t3 = (tilts >> 12) & 15;
|
||||
|
||||
dx = x & 1023;
|
||||
dz = z & 1023;
|
||||
|
||||
xOff = yOff = 0;
|
||||
|
||||
HeightType = SPLIT_TRI;
|
||||
SplitFloor = (type & DATA_TYPE);
|
||||
|
||||
if ((type & DATA_TYPE) == SPLIT1 ||
|
||||
(type & DATA_TYPE) == NOCOLF1T ||
|
||||
(type & DATA_TYPE) == NOCOLF1B)
|
||||
{
|
||||
(obj->floor)(item, x, y, z, &height);
|
||||
}*/
|
||||
if (dx <= (1024 - dz))
|
||||
{
|
||||
hadj = (type >> 10) & 0x1F;
|
||||
if (hadj & 0x10)
|
||||
hadj |= 0xfff0;
|
||||
height += 256 * hadj;
|
||||
xOff = t2 - t1;
|
||||
yOff = t0 - t1;
|
||||
}
|
||||
else
|
||||
{
|
||||
hadj = (type >> 5) & 0x1F;
|
||||
if (hadj & 0x10)
|
||||
hadj |= 0xFFF0;
|
||||
height += 256 * hadj;
|
||||
xOff = t3 - t0;
|
||||
yOff = t3 - t2;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (dx <= dz)
|
||||
{
|
||||
hadj = (type >> 10) & 0x1f;
|
||||
if (hadj & 0x10)
|
||||
hadj |= 0xfff0;
|
||||
height += 256 * hadj;
|
||||
xOff = t2 - t1;
|
||||
yOff = t3 - t2;
|
||||
}
|
||||
else
|
||||
{
|
||||
hadj = (type >> 5) & 0x1f;
|
||||
if (hadj & 0x10)
|
||||
hadj |= 0xfff0;
|
||||
height += 256 * hadj;
|
||||
xOff = t3 - t0;
|
||||
yOff = t0 - t1;
|
||||
}
|
||||
}
|
||||
|
||||
TiltXOffset = xOff;
|
||||
TiltYOffset = yOff;
|
||||
|
||||
if ((abs(xOff)) > 2 || (abs(yOff)) > 2)
|
||||
HeightType = DIAGONAL;
|
||||
else if (HeightType != SPLIT_TRI)
|
||||
HeightType = SMALL_SLOPE;
|
||||
|
||||
if (xOff >= 0)
|
||||
height += xOff * ((-1 - z) & 1023) >> 2;
|
||||
else
|
||||
height -= xOff * (z & 1023) >> 2;
|
||||
|
||||
if (yOff >= 0)
|
||||
height += yOff * ((-1 - x) & 1023) >> 2;
|
||||
else
|
||||
height -= yOff * (x & 1023) >> 2;
|
||||
|
||||
data++;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
} while (!(trigger & END_BIT));
|
||||
break;
|
||||
|
||||
case LAVA_TYPE:
|
||||
TriggerIndex = data - 1;
|
||||
break;
|
||||
|
||||
case CLIMB_TYPE:
|
||||
case MONKEY_TYPE:
|
||||
case TRIGTRIGGER_TYPE:
|
||||
if (!TriggerIndex)
|
||||
TriggerIndex = data - 1;
|
||||
break;
|
||||
|
||||
case SPLIT1:
|
||||
case SPLIT2:
|
||||
case NOCOLF1T:
|
||||
case NOCOLF1B:
|
||||
case NOCOLF2T:
|
||||
case NOCOLF2B:
|
||||
/*tilts = *data;
|
||||
t0 = tilts & 15;
|
||||
t1 = (tilts >> 4) & 15;
|
||||
t2 = (tilts >> 8) & 15;
|
||||
t3 = (tilts >> 12) & 15;
|
||||
|
||||
dx = x & 1023;
|
||||
dz = z & 1023;
|
||||
|
||||
xOff = yOff = 0;
|
||||
|
||||
HeightType = SPLIT_TRI;
|
||||
SplitFloor = (type & DATA_TYPE);
|
||||
|
||||
if ((type & DATA_TYPE) == SPLIT1 ||
|
||||
(type & DATA_TYPE) == NOCOLF1T ||
|
||||
(type & DATA_TYPE) == NOCOLF1B)
|
||||
{
|
||||
if (dx <= (1024 - dz))
|
||||
{
|
||||
hadj = (type >> 10) & 0x1F;
|
||||
if (hadj & 0x10)
|
||||
hadj |= 0xfff0;
|
||||
height += 256 * hadj;
|
||||
xOff = t2 - t1;
|
||||
yOff = t0 - t1;
|
||||
}
|
||||
else
|
||||
{
|
||||
hadj = (type >> 5) & 0x1F;
|
||||
if (hadj & 0x10)
|
||||
hadj |= 0xFFF0;
|
||||
height += 256 * hadj;
|
||||
xOff = t3 - t0;
|
||||
yOff = t3 - t2;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (dx <= dz)
|
||||
{
|
||||
hadj = (type >> 10) & 0x1f;
|
||||
if (hadj & 0x10)
|
||||
hadj |= 0xfff0;
|
||||
height += 256 * hadj;
|
||||
xOff = t2 - t1;
|
||||
yOff = t3 - t2;
|
||||
}
|
||||
else
|
||||
{
|
||||
hadj = (type >> 5) & 0x1f;
|
||||
if (hadj & 0x10)
|
||||
hadj |= 0xfff0;
|
||||
height += 256 * hadj;
|
||||
xOff = t3 - t0;
|
||||
yOff = t0 - t1;
|
||||
}
|
||||
}
|
||||
|
||||
TiltXOffset = xOff;
|
||||
TiltYOffset = yOff;
|
||||
|
||||
if ((abs(xOff)) > 2 || (abs(yOff)) > 2)
|
||||
HeightType = DIAGONAL;
|
||||
else if (HeightType != SPLIT_TRI)
|
||||
HeightType = SMALL_SLOPE;
|
||||
|
||||
if (xOff >= 0)
|
||||
height += xOff * ((-1 - z) & 1023) >> 2;
|
||||
else
|
||||
height -= xOff * (z & 1023) >> 2;
|
||||
|
||||
if (yOff >= 0)
|
||||
height += yOff * ((-1 - x) & 1023) >> 2;
|
||||
else
|
||||
height -= yOff * (x & 1023) >> 2;
|
||||
*/
|
||||
data++;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
} while (!(type & END_BIT));
|
||||
}
|
||||
} while (!(type & END_BIT));
|
||||
|
||||
}
|
||||
/*return height;*/
|
||||
|
||||
return GetFloorHeight(ROOM_VECTOR{floor->Room, y}, x, z).value_or(NO_HEIGHT);
|
||||
}
|
||||
|
||||
int LOS(GAME_VECTOR *start, GAME_VECTOR *end) // (F) (D)
|
||||
int LOS(GAME_VECTOR *start, GAME_VECTOR *end)
|
||||
{
|
||||
int result1, result2;
|
||||
|
||||
|
@ -1892,7 +1894,7 @@ int LOS(GAME_VECTOR *start, GAME_VECTOR *end) // (F) (D)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int xLOS(GAME_VECTOR *start, GAME_VECTOR *end) // (F) (D)
|
||||
int xLOS(GAME_VECTOR *start, GAME_VECTOR *end)
|
||||
{
|
||||
int dx, dy, dz, x, y, z, flag;
|
||||
short room, room2;
|
||||
|
@ -1997,7 +1999,7 @@ int xLOS(GAME_VECTOR *start, GAME_VECTOR *end) // (F) (D)
|
|||
return flag;
|
||||
}
|
||||
|
||||
int zLOS(GAME_VECTOR *start, GAME_VECTOR *end) // (F) (D)
|
||||
int zLOS(GAME_VECTOR *start, GAME_VECTOR *end)
|
||||
{
|
||||
int dx, dy, dz, x, y, z, flag;
|
||||
short room, room2;
|
||||
|
@ -2102,7 +2104,7 @@ int zLOS(GAME_VECTOR *start, GAME_VECTOR *end) // (F) (D)
|
|||
return flag;
|
||||
}
|
||||
|
||||
int ClipTarget(GAME_VECTOR *start, GAME_VECTOR *target) // (F) (D)
|
||||
int ClipTarget(GAME_VECTOR *start, GAME_VECTOR *target)
|
||||
{
|
||||
short room;
|
||||
int x, y, z, wx, wy, wz;
|
||||
|
@ -2150,7 +2152,7 @@ int ClipTarget(GAME_VECTOR *start, GAME_VECTOR *target) // (F) (D)
|
|||
return 1;
|
||||
}
|
||||
|
||||
int GetTargetOnLOS(GAME_VECTOR *src, GAME_VECTOR *dest, int DrawTarget, int firing) // (AF) (D)
|
||||
int GetTargetOnLOS(GAME_VECTOR *src, GAME_VECTOR *dest, int DrawTarget, int firing)
|
||||
{
|
||||
GAME_VECTOR target;
|
||||
int result, flag, itemNumber, count;
|
||||
|
@ -2398,7 +2400,7 @@ int GetTargetOnLOS(GAME_VECTOR *src, GAME_VECTOR *dest, int DrawTarget, int firi
|
|||
return flag;
|
||||
}
|
||||
|
||||
int ObjectOnLOS2(GAME_VECTOR *start, GAME_VECTOR *end, PHD_VECTOR *vec, MESH_INFO **mesh) // (F) (D)
|
||||
int ObjectOnLOS2(GAME_VECTOR *start, GAME_VECTOR *end, PHD_VECTOR *vec, MESH_INFO **mesh)
|
||||
{
|
||||
int r, m;
|
||||
ROOM_INFO *room;
|
||||
|
@ -2476,7 +2478,7 @@ int GetRandomDraw()
|
|||
return generateInt();
|
||||
}
|
||||
|
||||
int GetCeiling(FLOOR_INFO *floor, int x, int y, int z) // (F) (D)
|
||||
int GetCeiling(FLOOR_INFO *floor, int x, int y, int z)
|
||||
{
|
||||
#if 0
|
||||
ROOM_INFO *room;
|
||||
|
|
|
@ -143,7 +143,7 @@ void invisibility_on(ITEM_INFO* item)
|
|||
item->status = ITEM_INVISIBLE;
|
||||
}
|
||||
|
||||
void SetFog(ITEM_INFO* item)//39A44(<), 39F44(<) (F)
|
||||
void SetFog(ITEM_INFO* item)
|
||||
{
|
||||
FlipEffect = -1;
|
||||
}
|
||||
|
@ -176,22 +176,22 @@ void draw_right_pistol(ITEM_INFO* item)
|
|||
}
|
||||
}
|
||||
|
||||
void shoot_left_gun(ITEM_INFO* item)//39A34(<), 39F34(<) (F)
|
||||
void shoot_left_gun(ITEM_INFO* item)
|
||||
{
|
||||
Lara.leftArm.flash_gun = 3;
|
||||
}
|
||||
|
||||
void shoot_right_gun(ITEM_INFO* item)//39A24(<), 39F24(<) (F)
|
||||
void shoot_right_gun(ITEM_INFO* item)
|
||||
{
|
||||
Lara.rightArm.flash_gun = 3;
|
||||
}
|
||||
|
||||
void lara_hands_free(ITEM_INFO* item)//39A18(<), 39F18(<) (F)
|
||||
void lara_hands_free(ITEM_INFO* item)
|
||||
{
|
||||
Lara.gunStatus = LG_NO_ARMS;
|
||||
}
|
||||
|
||||
void KillActiveBaddies(ITEM_INFO* item)//39938(<), 39E38(<) (F)
|
||||
void KillActiveBaddies(ITEM_INFO* item)
|
||||
{
|
||||
if (NextItemActive != NO_ITEM)
|
||||
{
|
||||
|
@ -221,7 +221,7 @@ void KillActiveBaddies(ITEM_INFO* item)//39938(<), 39E38(<) (F)
|
|||
FlipEffect = -1;
|
||||
}
|
||||
|
||||
void LaraLocationPad(ITEM_INFO* item)//39710(<), 39C10(<) (F)
|
||||
void LaraLocationPad(ITEM_INFO* item)
|
||||
{
|
||||
FlipEffect = -1;
|
||||
|
||||
|
@ -229,7 +229,7 @@ void LaraLocationPad(ITEM_INFO* item)//39710(<), 39C10(<) (F)
|
|||
Lara.locationPad = TriggerTimer;
|
||||
}
|
||||
|
||||
void LaraLocation(ITEM_INFO* item)//396D0(<), 39BD0(<) (F)
|
||||
void LaraLocation(ITEM_INFO* item)
|
||||
{
|
||||
FlipEffect = -1;
|
||||
|
||||
|
@ -238,14 +238,14 @@ void LaraLocation(ITEM_INFO* item)//396D0(<), 39BD0(<) (F)
|
|||
Lara.highestLocation = TriggerTimer;
|
||||
}
|
||||
|
||||
void ExplosionFX(ITEM_INFO* item)//39694(<), 39B94(<) (F)
|
||||
void ExplosionFX(ITEM_INFO* item)
|
||||
{
|
||||
SoundEffect(SFX_EXPLOSION1, NULL, 0);
|
||||
Camera.bounce = -75;
|
||||
FlipEffect = -1;
|
||||
}
|
||||
|
||||
void SwapCrowbar(ITEM_INFO* item)//39638(<), 39B38(<) (F)
|
||||
void SwapCrowbar(ITEM_INFO* item)
|
||||
{
|
||||
if (Lara.meshPtrs[LM_RHAND] == Objects[ID_LARA_SKIN].meshIndex + LM_RHAND)
|
||||
Lara.meshPtrs[LM_RHAND] = Objects[ID_LARA_CROWBAR_ANIM].meshIndex + LM_RHAND;
|
||||
|
@ -253,23 +253,23 @@ void SwapCrowbar(ITEM_INFO* item)//39638(<), 39B38(<) (F)
|
|||
Lara.meshPtrs[LM_RHAND] = Objects[ID_LARA_SKIN].meshIndex + LM_RHAND;
|
||||
}
|
||||
|
||||
void ActivateKey(ITEM_INFO* item)//39624(<), 39B24(<) (F)
|
||||
void ActivateKey(ITEM_INFO* item)
|
||||
{
|
||||
KeyTriggerActive = 1;
|
||||
}
|
||||
|
||||
void ActivateCamera(ITEM_INFO* item)//39610(<), 39B10(<) (F)
|
||||
void ActivateCamera(ITEM_INFO* item)
|
||||
{
|
||||
KeyTriggerActive = 2;
|
||||
}
|
||||
|
||||
void PoseidonSFX(ITEM_INFO* item)//395E0(<), 39AE0(<) (F)
|
||||
void PoseidonSFX(ITEM_INFO* item)
|
||||
{
|
||||
SoundEffect(SFX_GRAB_OPEN, NULL, 0);
|
||||
FlipEffect = -1;
|
||||
}
|
||||
|
||||
void RubbleFX(ITEM_INFO* item)//39534(<), 39A34(<) (F)
|
||||
void RubbleFX(ITEM_INFO* item)
|
||||
{
|
||||
int itemNumber = FindItemNumber(ID_EARTHQUAKE);
|
||||
|
||||
|
@ -289,13 +289,13 @@ void RubbleFX(ITEM_INFO* item)//39534(<), 39A34(<) (F)
|
|||
FlipEffect = -1;
|
||||
}
|
||||
|
||||
void SoundFlipEffect(ITEM_INFO* item)//39500(<), 39A00(<) (F)
|
||||
void SoundFlipEffect(ITEM_INFO* item)
|
||||
{
|
||||
SoundEffect(TriggerTimer, NULL, 0);
|
||||
FlipEffect = -1;
|
||||
}
|
||||
|
||||
void floor_shake_effect(ITEM_INFO* item)//39410, 39910 (F)
|
||||
void floor_shake_effect(ITEM_INFO* item)
|
||||
{
|
||||
int x = abs(item->pos.xPos - Camera.pos.x);
|
||||
int y = abs(item->pos.yPos - Camera.pos.y);
|
||||
|
@ -307,18 +307,18 @@ void floor_shake_effect(ITEM_INFO* item)//39410, 39910 (F)
|
|||
}
|
||||
}
|
||||
|
||||
void turn180_effect(ITEM_INFO* item)//393F4(<), 398F4(<) (F)
|
||||
void turn180_effect(ITEM_INFO* item)
|
||||
{
|
||||
item->pos.yRot -= ANGLE(180);
|
||||
item->pos.xRot = -item->pos.xRot;
|
||||
}
|
||||
|
||||
void finish_level_effect(ITEM_INFO* item)//393D4(<), 398D4(<) (F)
|
||||
void finish_level_effect(ITEM_INFO* item)
|
||||
{
|
||||
LevelComplete = CurrentLevel + 1;
|
||||
}
|
||||
|
||||
void void_effect(ITEM_INFO* item)//393CC(<), 398CC(<) (F)
|
||||
void void_effect(ITEM_INFO* item)
|
||||
{
|
||||
|
||||
}
|
||||
|
|
|
@ -69,7 +69,7 @@ NODEOFFSET_INFO NodeOffsets[MAX_NODE] = {
|
|||
|
||||
extern GameFlow* g_GameFlow;
|
||||
|
||||
void DetatchSpark(int num, SpriteEnumFlag type)// (F) (D)
|
||||
void DetatchSpark(int num, SpriteEnumFlag type)
|
||||
{
|
||||
FX_INFO* fx;
|
||||
ITEM_INFO* item;
|
||||
|
@ -789,7 +789,7 @@ void TriggerFireFlame(int x, int y, int z, int fxObj, int type)
|
|||
}
|
||||
}
|
||||
|
||||
void TriggerSuperJetFlame(ITEM_INFO* item, int yvel, int deadly)//32EAC, 333AC (F)
|
||||
void TriggerSuperJetFlame(ITEM_INFO* item, int yvel, int deadly)
|
||||
{
|
||||
long dx = LaraItem->pos.xPos - item->pos.xPos;
|
||||
long dz = LaraItem->pos.zPos - item->pos.zPos;
|
||||
|
@ -1813,7 +1813,7 @@ void TriggerMetalSparks(int x, int y, int z, int xv, int yv, int zv, int additio
|
|||
}
|
||||
}
|
||||
|
||||
void KillEverything()//338AC(<), 33DAC(<) (F)
|
||||
void KillEverything()
|
||||
{
|
||||
KillEverythingFlag = 0;
|
||||
}
|
|
@ -51,7 +51,7 @@ void TriggerTorchFlame(char fxObj, char node)
|
|||
spark->dSize = spark->size / 8;
|
||||
}
|
||||
|
||||
void DoFlameTorch() // (F) (D)
|
||||
void DoFlameTorch()
|
||||
{
|
||||
switch (Lara.leftArm.lock)
|
||||
{
|
||||
|
@ -169,7 +169,7 @@ void DoFlameTorch() // (F) (D)
|
|||
}
|
||||
}
|
||||
|
||||
void GetFlameTorch() // (F) (D)
|
||||
void GetFlameTorch()
|
||||
{
|
||||
if (Lara.gunType == WEAPON_FLARE)
|
||||
CreateFlare(ID_FLARE_ITEM, 0);
|
||||
|
@ -186,7 +186,7 @@ void GetFlameTorch() // (F) (D)
|
|||
Lara.meshPtrs[LM_LHAND] = Objects[ID_LARA_TORCH_ANIM].meshIndex + LM_LHAND;
|
||||
}
|
||||
|
||||
void TorchControl(short itemNumber) // (F) (D)
|
||||
void TorchControl(short itemNumber)
|
||||
{
|
||||
ITEM_INFO* item = &g_Level.Items[itemNumber];
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ PENDULUM AlternatePendulum;
|
|||
ROPE_STRUCT Ropes[12];
|
||||
int NumRopes, RopeSwing = 0;
|
||||
|
||||
void InitialiseRope(short itemNumber) // (F) (D)
|
||||
void InitialiseRope(short itemNumber)
|
||||
{
|
||||
PHD_VECTOR itemPos;
|
||||
|
||||
|
@ -39,7 +39,7 @@ void InitialiseRope(short itemNumber) // (F) (D)
|
|||
NumRopes++;
|
||||
}
|
||||
|
||||
void PrepareRope(ROPE_STRUCT* rope, PHD_VECTOR* pos1, PHD_VECTOR* pos2, int length, ITEM_INFO* item) // (F) (D)
|
||||
void PrepareRope(ROPE_STRUCT* rope, PHD_VECTOR* pos1, PHD_VECTOR* pos2, int length, ITEM_INFO* item)
|
||||
{
|
||||
rope->position = *pos1;
|
||||
rope->segmentLength = length * 65536;
|
||||
|
@ -87,7 +87,7 @@ void PrepareRope(ROPE_STRUCT* rope, PHD_VECTOR* pos1, PHD_VECTOR* pos2, int leng
|
|||
rope->active = 0;
|
||||
}
|
||||
|
||||
PHD_VECTOR* NormaliseRopeVector(PHD_VECTOR* vec) // (F) (D)
|
||||
PHD_VECTOR* NormaliseRopeVector(PHD_VECTOR* vec)
|
||||
{
|
||||
int x = vec->x / 65536;
|
||||
int y = vec->y / 65536;
|
||||
|
@ -108,7 +108,7 @@ PHD_VECTOR* NormaliseRopeVector(PHD_VECTOR* vec) // (F) (D)
|
|||
return vec;
|
||||
}
|
||||
|
||||
void _0x0046D130(ROPE_STRUCT* rope, int segmentFrame, int* x, int* y, int* z) // (F) (D)
|
||||
void _0x0046D130(ROPE_STRUCT* rope, int segmentFrame, int* x, int* y, int* z)
|
||||
{
|
||||
int segment;
|
||||
short frame;
|
||||
|
@ -120,26 +120,26 @@ void _0x0046D130(ROPE_STRUCT* rope, int segmentFrame, int* x, int* y, int* z) //
|
|||
*z = ((rope->normalisedSegment[segment].z * frame) / 65536) + ((rope->meshSegment[segment].z) / 65536) + rope->position.z;
|
||||
}
|
||||
|
||||
int DotProduct(PHD_VECTOR* u, PHD_VECTOR* v) // (F) (D)
|
||||
int DotProduct(PHD_VECTOR* u, PHD_VECTOR* v)
|
||||
{
|
||||
return (u->x * v->x + u->y * v->y + u->z * v->z) / 16384;
|
||||
}
|
||||
|
||||
void ScaleVector(PHD_VECTOR* u, int c, PHD_VECTOR* destination) // (F) (D)
|
||||
void ScaleVector(PHD_VECTOR* u, int c, PHD_VECTOR* destination)
|
||||
{
|
||||
destination->x = c * u->x / 16384;
|
||||
destination->y = c * u->y / 16384;
|
||||
destination->z = c * u->z / 16384;
|
||||
}
|
||||
|
||||
void CrossProduct(PHD_VECTOR* u, PHD_VECTOR* v, PHD_VECTOR* destination) // (F) (D)
|
||||
void CrossProduct(PHD_VECTOR* u, PHD_VECTOR* v, PHD_VECTOR* destination)
|
||||
{
|
||||
destination->x = (u->y * v->z - u->z * v->y) / 16384;
|
||||
destination->y = (u->z * v->x - u->x * v->z) / 16384;
|
||||
destination->z = (u->x * v->y - u->y * v->x) / 16384;
|
||||
}
|
||||
|
||||
void _0x0046D420(int* matrix, short* angle) // (F) (D)
|
||||
void _0x0046D420(int* matrix, short* angle)
|
||||
{
|
||||
angle[0] = phd_atan(sqrt(SQUARE(matrix[M22]) + SQUARE(matrix[M02])), matrix[M12]);
|
||||
if (matrix[M12] >= 0 && angle[0] > 0 || matrix[M12] < 0 && angle[0] < 0)
|
||||
|
@ -148,7 +148,7 @@ void _0x0046D420(int* matrix, short* angle) // (F) (D)
|
|||
angle[2] = phd_atan(matrix[M00] * phd_cos(angle[1]) - matrix[M20] * phd_sin(angle[1]), matrix[M21] * phd_sin(angle[1]) - matrix[M01] * phd_cos(angle[1]));
|
||||
}
|
||||
|
||||
void RopeControl(short itemNumber) // (F) (D)
|
||||
void RopeControl(short itemNumber)
|
||||
{
|
||||
ITEM_INFO* item;
|
||||
ROPE_STRUCT* rope;
|
||||
|
@ -166,7 +166,7 @@ void RopeControl(short itemNumber) // (F) (D)
|
|||
}
|
||||
}
|
||||
|
||||
void RopeCollision(short itemNumber, ITEM_INFO* l, COLL_INFO* coll) // (F) (D)
|
||||
void RopeCollision(short itemNumber, ITEM_INFO* l, COLL_INFO* coll)
|
||||
{
|
||||
ITEM_INFO* item;
|
||||
ROPE_STRUCT* rope;
|
||||
|
@ -209,7 +209,7 @@ void RopeCollision(short itemNumber, ITEM_INFO* l, COLL_INFO* coll) // (F) (D)
|
|||
}
|
||||
}
|
||||
|
||||
void RopeDynamics(ROPE_STRUCT* rope) // (F) (D)
|
||||
void RopeDynamics(ROPE_STRUCT* rope)
|
||||
{
|
||||
int flag, i;
|
||||
PENDULUM* pendulumPointer;
|
||||
|
@ -369,7 +369,7 @@ void RopeDynamics(ROPE_STRUCT* rope) // (F) (D)
|
|||
}
|
||||
}
|
||||
|
||||
int _0x0046D200(ROPE_STRUCT* rope, int x, int y, int z, int radius) // (F) (D)
|
||||
int _0x0046D200(ROPE_STRUCT* rope, int x, int y, int z, int radius)
|
||||
{
|
||||
int dx, dy, dz;
|
||||
|
||||
|
@ -387,7 +387,7 @@ int _0x0046D200(ROPE_STRUCT* rope, int x, int y, int z, int radius) // (F) (D)
|
|||
return -1;
|
||||
}
|
||||
|
||||
void ApplyVelocityToRope(int node, short angle, short n) // (F) (D)
|
||||
void ApplyVelocityToRope(int node, short angle, short n)
|
||||
{
|
||||
SetPendulumVelocity(
|
||||
(unsigned short) n * phd_sin(angle) * 4096,
|
||||
|
@ -395,7 +395,7 @@ void ApplyVelocityToRope(int node, short angle, short n) // (F) (D)
|
|||
(unsigned short) n * phd_cos(angle) * 4096); /* @ORIGINAL_BUG: casting n to unsigned short results in the rope glitch */
|
||||
}
|
||||
|
||||
void SetPendulumVelocity(int x, int y, int z) // (F) (D)
|
||||
void SetPendulumVelocity(int x, int y, int z)
|
||||
{
|
||||
int node;
|
||||
|
||||
|
@ -414,7 +414,7 @@ void SetPendulumVelocity(int x, int y, int z) // (F) (D)
|
|||
CurrentPendulum.Velocity.z += z;
|
||||
}
|
||||
|
||||
void _0x0046E1C0(ROPE_STRUCT* rope, int node) // (F) (D)
|
||||
void _0x0046E1C0(ROPE_STRUCT* rope, int node)
|
||||
{
|
||||
CurrentPendulum.Position.x = rope->segment[node].x;
|
||||
CurrentPendulum.Position.y = rope->segment[node].y;
|
||||
|
@ -429,7 +429,7 @@ void _0x0046E1C0(ROPE_STRUCT* rope, int node) // (F) (D)
|
|||
CurrentPendulum.Rope = rope;
|
||||
}
|
||||
|
||||
void _0x0046E080(ROPE_STRUCT* rope, PENDULUM* pendulumPointer, PHD_VECTOR* ropeVelocity, PHD_VECTOR* pendulumVelocity, int value) // (F) (D)
|
||||
void _0x0046E080(ROPE_STRUCT* rope, PENDULUM* pendulumPointer, PHD_VECTOR* ropeVelocity, PHD_VECTOR* pendulumVelocity, int value)
|
||||
{
|
||||
PHD_VECTOR vec;
|
||||
int result;
|
||||
|
@ -444,7 +444,7 @@ void _0x0046E080(ROPE_STRUCT* rope, PENDULUM* pendulumPointer, PHD_VECTOR* ropeV
|
|||
pendulumVelocity->z -= ((int64_t) result * vec.z) / 65536;
|
||||
}
|
||||
|
||||
void _0x0046DF00(PHD_VECTOR* segment, PHD_VECTOR* nextSegment, PHD_VECTOR* velocity, PHD_VECTOR* nextVelocity, int length) // (F) (D)
|
||||
void _0x0046DF00(PHD_VECTOR* segment, PHD_VECTOR* nextSegment, PHD_VECTOR* velocity, PHD_VECTOR* nextVelocity, int length)
|
||||
{
|
||||
PHD_VECTOR vec;
|
||||
int result;
|
||||
|
@ -465,7 +465,7 @@ void _0x0046DF00(PHD_VECTOR* segment, PHD_VECTOR* nextSegment, PHD_VECTOR* veloc
|
|||
nextVelocity->z -= vec.z;
|
||||
}
|
||||
|
||||
void UpdateRopeSwing(ITEM_INFO* item) // (F) (D)
|
||||
void UpdateRopeSwing(ITEM_INFO* item)
|
||||
{
|
||||
if (Lara.ropeMaxXForward > 9000)
|
||||
{
|
||||
|
@ -558,7 +558,7 @@ void UpdateRopeSwing(ITEM_INFO* item) // (F) (D)
|
|||
}
|
||||
}
|
||||
|
||||
void JumpOffRope(ITEM_INFO* item) // (F) (D)
|
||||
void JumpOffRope(ITEM_INFO* item)
|
||||
{
|
||||
if (Lara.ropePtr != -1)
|
||||
{
|
||||
|
@ -599,7 +599,7 @@ void JumpOffRope(ITEM_INFO* item) // (F) (D)
|
|||
}
|
||||
}
|
||||
|
||||
void FallFromRope(ITEM_INFO* item) // (F) (D)
|
||||
void FallFromRope(ITEM_INFO* item)
|
||||
{
|
||||
item->speed = (abs(CurrentPendulum.Velocity.x / 65536) + abs(CurrentPendulum.Velocity.z / 65536)) / 2;
|
||||
item->pos.xRot = 0;
|
||||
|
@ -617,7 +617,7 @@ void FallFromRope(ITEM_INFO* item) // (F) (D)
|
|||
Lara.ropePtr = -1;
|
||||
}
|
||||
|
||||
void LaraClimbRope(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
||||
void LaraClimbRope(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
if (!(TrInput & IN_ACTION))
|
||||
{
|
||||
|
@ -665,7 +665,7 @@ void LaraClimbRope(ITEM_INFO* item, COLL_INFO* coll) // (F) (D)
|
|||
}
|
||||
}
|
||||
|
||||
void DelAlignLaraToRope(ITEM_INFO* item) // (F) (D)
|
||||
void DelAlignLaraToRope(ITEM_INFO* item)
|
||||
{
|
||||
ROPE_STRUCT* rope;
|
||||
short ropeY;
|
||||
|
|
|
@ -630,7 +630,7 @@ void TriggerShatterSmoke(int x, int y, int z)
|
|||
spark->size = spark->dSize / 8;
|
||||
}
|
||||
|
||||
int GetFreeBlood()// (F)
|
||||
int GetFreeBlood()
|
||||
{
|
||||
BLOOD_STRUCT* blood = &Blood[NextBlood];
|
||||
int bloodNum = NextBlood;
|
||||
|
@ -668,7 +668,7 @@ int GetFreeBlood()// (F)
|
|||
return bloodNum;
|
||||
}
|
||||
|
||||
void TriggerBlood(int x, int y, int z, int unk, int num)// (F)
|
||||
void TriggerBlood(int x, int y, int z, int unk, int num)
|
||||
{
|
||||
for (int i = 0; i < num; i++)
|
||||
{
|
||||
|
@ -1041,7 +1041,7 @@ void AddWaterSparks(int x, int y, int z, int num)
|
|||
}
|
||||
}
|
||||
|
||||
void LaraBubbles(ITEM_INFO* item)// (F)
|
||||
void LaraBubbles(ITEM_INFO* item)
|
||||
{
|
||||
PHD_VECTOR pos;
|
||||
int num, i;
|
||||
|
@ -1160,7 +1160,7 @@ void UpdateDrips()
|
|||
}
|
||||
}
|
||||
|
||||
void TriggerLaraDrips()// (F)
|
||||
void TriggerLaraDrips()
|
||||
{
|
||||
PHD_VECTOR pos;
|
||||
|
||||
|
@ -1316,7 +1316,7 @@ int ExplodingDeath(short itemNumber, int meshBits, short flags)
|
|||
return item->meshBits == 0;
|
||||
}
|
||||
|
||||
int GetFreeShockwave()// (F)
|
||||
int GetFreeShockwave()
|
||||
{
|
||||
for (int i = 0; i < MAX_SHOCKWAVE; i++)
|
||||
{
|
||||
|
@ -1327,7 +1327,7 @@ int GetFreeShockwave()// (F)
|
|||
return -1;
|
||||
}
|
||||
|
||||
void TriggerShockwave(PHD_3DPOS* pos, short innerRad, short outerRad, int speed, char r, char g, char b, char life, short angle, short flags)// (F)
|
||||
void TriggerShockwave(PHD_3DPOS* pos, short innerRad, short outerRad, int speed, char r, char g, char b, char life, short angle, short flags)
|
||||
{
|
||||
int s = GetFreeShockwave();
|
||||
SHOCKWAVE_STRUCT* sptr;
|
||||
|
@ -1459,7 +1459,7 @@ void UpdateShockwaves()
|
|||
}
|
||||
}
|
||||
|
||||
void TriggerExplosionBubble(int x, int y, int z, short roomNum)// (F)
|
||||
void TriggerExplosionBubble(int x, int y, int z, short roomNum)
|
||||
{
|
||||
int dx = LaraItem->pos.xPos - x;
|
||||
int dz = LaraItem->pos.zPos - z;
|
||||
|
@ -1507,7 +1507,7 @@ void TriggerExplosionBubble(int x, int y, int z, short roomNum)// (F)
|
|||
}
|
||||
}
|
||||
|
||||
/*void TriggerExplosionSmokeEnd(int x, int y, int z, int unk)// (F)
|
||||
/*void TriggerExplosionSmokeEnd(int x, int y, int z, int unk)
|
||||
{
|
||||
SPARKS* spark = &Sparks[GetFreeSpark()];
|
||||
|
||||
|
@ -1577,7 +1577,7 @@ void TriggerExplosionBubble(int x, int y, int z, short roomNum)// (F)
|
|||
spark->size = size >> 2;
|
||||
}
|
||||
*/
|
||||
/*void DrawLensFlares(ITEM_INFO* item)// (F)
|
||||
/*void DrawLensFlares(ITEM_INFO* item)
|
||||
{
|
||||
GAME_VECTOR pos;
|
||||
|
||||
|
@ -1589,7 +1589,7 @@ void TriggerExplosionBubble(int x, int y, int z, short roomNum)// (F)
|
|||
SetUpLensFlare(0, 0, 0, &pos);
|
||||
}*/
|
||||
|
||||
void TriggerLightningGlow(int x, int y, int z, byte size, byte r, byte g, byte b)// (F)
|
||||
void TriggerLightningGlow(int x, int y, int z, byte size, byte r, byte g, byte b)
|
||||
{
|
||||
SPARKS* spark = &Sparks[GetFreeSpark()];
|
||||
|
||||
|
@ -1619,7 +1619,7 @@ void TriggerLightningGlow(int x, int y, int z, byte size, byte r, byte g, byte b
|
|||
spark->dSize = spark->sSize = spark->size = size + (GetRandomControl() & 3);
|
||||
}
|
||||
|
||||
void TriggerFenceSparks(int x, int y, int z, int kill, int crane)//(F)
|
||||
void TriggerFenceSparks(int x, int y, int z, int kill, int crane)
|
||||
{
|
||||
SPARKS* spark = &Sparks[GetFreeSpark()];
|
||||
spark->on = 1;
|
||||
|
|
|
@ -155,7 +155,7 @@ void FlameEmitterControl(short itemNumber)
|
|||
}
|
||||
}
|
||||
|
||||
void FlameEmitter2Control(short itemNumber)//5A1BC, 5A638 (F)
|
||||
void FlameEmitter2Control(short itemNumber)
|
||||
{
|
||||
ITEM_INFO* item = &g_Level.Items[itemNumber];
|
||||
|
||||
|
@ -292,14 +292,14 @@ void LavaBurn(ITEM_INFO* item)
|
|||
FLOOR_INFO* floor = GetFloor(item->pos.xPos, 32000, item->pos.zPos, &roomNumber);
|
||||
if (item->floor == GetFloorHeight(floor, item->pos.xPos, 32000, item->pos.zPos))
|
||||
{
|
||||
if (Objects[ID_KAYAK].loaded && Objects[ID_KAYAK_LARA_ANIMS].loaded) //TEMPORARILY ADDING THIS HACK FOR TESTING-
|
||||
KayakLaraRapidsDrown();
|
||||
else
|
||||
{
|
||||
// if (Objects[ID_KAYAK].loaded && Objects[ID_KAYAK_LARA_ANIMS].loaded) //TEMPORARILY ADDING THIS HACK FOR TESTING-// KayakLaraRapidsDrown works fine.
|
||||
// KayakLaraRapidsDrown();
|
||||
// else
|
||||
// {
|
||||
item->hitPoints = -1;
|
||||
item->hitStatus = true;
|
||||
LaraBurn();
|
||||
}
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -676,7 +676,7 @@ void WreckingBallControl(short itemNumber)
|
|||
WBRoom = room;
|
||||
}
|
||||
|
||||
void FlameEmitterCollision(short itemNumber, ITEM_INFO* l, COLL_INFO* coll) // (F) (D)
|
||||
void FlameEmitterCollision(short itemNumber, ITEM_INFO* l, COLL_INFO* coll)
|
||||
{
|
||||
ITEM_INFO* item = &g_Level.Items[itemNumber];
|
||||
|
||||
|
|
|
@ -12,6 +12,8 @@
|
|||
#include <Game\effect2.h>
|
||||
#include <Game\particle\SimpleParticle.h>
|
||||
|
||||
|
||||
|
||||
struct BOAT_INFO
|
||||
{
|
||||
int boatTurn;
|
||||
|
@ -227,38 +229,45 @@ bool SpeedBoatCanGetOff(int direction)
|
|||
return true;
|
||||
}
|
||||
|
||||
int SpeedBoatCheckGeton(short itemNum, COLL_INFO* coll)
|
||||
BOAT_GETON SpeedBoatCheckGeton(short itemNum, COLL_INFO* coll)
|
||||
{
|
||||
// Returns 0 if no get on, 1 if right get on and 2 if left get on and 3 if jump geton
|
||||
int geton = 0;
|
||||
BOAT_GETON geton = BOAT_GETON::NONE;
|
||||
|
||||
if (Lara.gunStatus != LG_NO_ARMS)
|
||||
return 0;
|
||||
return BOAT_GETON::NONE;
|
||||
|
||||
ITEM_INFO* boat = &g_Level.Items[itemNum];
|
||||
|
||||
// Is Lara actually close enough to get on the thing?
|
||||
if (!TestBoundsCollide(boat, LaraItem, coll->radius))
|
||||
return BOAT_GETON::NONE;
|
||||
|
||||
if (!TestCollision(boat, LaraItem))
|
||||
return BOAT_GETON::NONE;
|
||||
|
||||
int dist = (LaraItem->pos.zPos - boat->pos.zPos) * phd_cos(-boat->pos.yRot) - (LaraItem->pos.xPos - boat->pos.xPos) * phd_sin(-boat->pos.yRot);
|
||||
if (dist > 200)
|
||||
return 0;
|
||||
return BOAT_GETON::NONE;
|
||||
|
||||
// Check if Lara is close enough and in right position to get onto boat
|
||||
short rot = boat->pos.yRot - LaraItem->pos.yRot;
|
||||
if (Lara.waterStatus == LW_SURFACE || Lara.waterStatus == LW_WADE)
|
||||
{
|
||||
if (!(TrInput & IN_ACTION) || LaraItem->gravityStatus || boat->speed)
|
||||
return 0;
|
||||
return BOAT_GETON::NONE;
|
||||
|
||||
if (rot > ANGLE(45) && rot < ANGLE(135))
|
||||
geton = 1; // Right
|
||||
geton = BOAT_GETON::WATER_RIGHT; // Right
|
||||
else if (rot > -ANGLE(135) && rot < -ANGLE(45))
|
||||
geton = 2; // Left
|
||||
geton = BOAT_GETON::WATER_LEFT; // Left
|
||||
}
|
||||
else if (Lara.waterStatus == LW_ABOVE_WATER)
|
||||
{
|
||||
if (LaraItem->fallspeed > 0)
|
||||
{
|
||||
if (rot > -ANGLE(135) && rot < ANGLE(135) && (LaraItem->pos.yPos + 512) > boat->pos.yPos)
|
||||
geton = 3; // Jump
|
||||
geton = BOAT_GETON::JUMP; // Jump
|
||||
}
|
||||
else if (LaraItem->fallspeed == 0)
|
||||
{
|
||||
|
@ -267,23 +276,12 @@ int SpeedBoatCheckGeton(short itemNum, COLL_INFO* coll)
|
|||
if (LaraItem->pos.xPos == boat->pos.xPos
|
||||
&& LaraItem->pos.yPos == boat->pos.yPos
|
||||
&& LaraItem->pos.zPos == boat->pos.zPos)
|
||||
geton = 4; // Must have started on same spot as boat
|
||||
geton = BOAT_GETON::STARTPOS; // Must have started on same spot as boat
|
||||
else
|
||||
geton = 3; // Jump
|
||||
geton = BOAT_GETON::JUMP; // Jump
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!geton)
|
||||
return 0;
|
||||
|
||||
// Is Lara actually close enough to get on the thing?
|
||||
if (!TestBoundsCollide(boat, LaraItem, coll->radius))
|
||||
return 0;
|
||||
|
||||
if (!TestCollision(boat, LaraItem))
|
||||
return 0;
|
||||
|
||||
return geton;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,14 +1,20 @@
|
|||
#pragma once
|
||||
#include "items.h"
|
||||
#include "collide.h"
|
||||
|
||||
enum BOAT_GETON {
|
||||
NONE = 0,
|
||||
WATER_RIGHT = 1,
|
||||
WATER_LEFT = 2,
|
||||
JUMP = 3,
|
||||
STARTPOS=4
|
||||
};
|
||||
void InitialiseSpeedBoat(short itemNum);
|
||||
void SpeedBoatCollision(short itemNum, ITEM_INFO* litem, COLL_INFO* coll);
|
||||
void SpeedBoatControl(short itemNumber);
|
||||
void DoBoatWakeEffect(ITEM_INFO* boat);
|
||||
void SpeedBoatGetOff(ITEM_INFO* boat);
|
||||
bool SpeedBoatCanGetOff(int direction);
|
||||
int SpeedBoatCheckGeton(short itemNum, COLL_INFO* coll);
|
||||
BOAT_GETON SpeedBoatCheckGeton(short itemNum, COLL_INFO* coll);
|
||||
int SpeedBoatTestWaterHeight(ITEM_INFO* item, int zOff, int xOff, PHD_VECTOR* pos);
|
||||
void SpeedBoatDoBoatShift(int itemNum);
|
||||
int SpeedBoatDoBoatDynamics(int height, int fallspeed, int* y);
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,7 +1,25 @@
|
|||
#pragma once
|
||||
#include "items.h"
|
||||
#include "collide.h"
|
||||
|
||||
struct JEEP_INFO {
|
||||
short rot1;
|
||||
short rot2;
|
||||
short rot3;
|
||||
short rot4;
|
||||
int velocity;
|
||||
int revs;
|
||||
short engineRevs;
|
||||
short trackMesh;
|
||||
int jeepTurn;
|
||||
int fallSpeed;
|
||||
short momentumAngle;
|
||||
short extraRotation;
|
||||
short unknown0;
|
||||
int pitch;
|
||||
short flags;
|
||||
short unknown1;
|
||||
short unknown2;
|
||||
};
|
||||
void InitialiseJeep(short itemNumber);
|
||||
void JeepCollision(short itemNumber, ITEM_INFO* l, COLL_INFO* coll);
|
||||
int JeepControl(void);
|
|
@ -18,7 +18,36 @@
|
|||
#include "prng.h"
|
||||
using namespace T5M::Math::Random;
|
||||
|
||||
// TODO: need to fix the bug about the shift, i dont know why it appear but it's in MotorbikeDynamics()
|
||||
/*collision stuff*/
|
||||
#define BIKE_FRONT 500
|
||||
#define BIKE_SIDE 350
|
||||
#define BIKE_RADIUS 500
|
||||
#define MOTORBIKE_SLIP 100
|
||||
#define MOTORBIKE_FRICTION 0x180
|
||||
/*movement stuff*/
|
||||
#define MIN_MOMENTUM_TURN ANGLE(4.0f)
|
||||
#define MAX_MOMENTUM_TURN ANGLE(1.5f)
|
||||
#define MOTORBIKE_MAX_MOM_TURN ANGLE(150.0f)
|
||||
#define MOTORBIKE_DEFAULT_HTURN ANGLE(1.5f)
|
||||
#define MOTORBIKE_ACCEL_1 0x4000
|
||||
#define MOTORBIKE_ACCEL_2 0x7000
|
||||
#define MOTORBIKE_ACCEL_MAX 0xC000 //with the boost
|
||||
#define MOTORBIKE_ACCEL 0x8000 //without the boost
|
||||
#define MOTORBIKE_BIG_SLOWDOWN 0x3000
|
||||
#define MOTORBIKE_SLOWDOWN1 0x440
|
||||
#define MOTORBIKE_SLOWDOWN2 0x600
|
||||
#define MOTORBIKE_HTURN ANGLE(0.5f)
|
||||
#define MOTORBIKE_MAX_HTURN ANGLE(5.0f)
|
||||
#define MOTORBIKE_PITCH_SLOWDOWN 0x8000
|
||||
#define MOTORBIKE_PITCH_MAX 0xA000
|
||||
#define MOTORBIKE_BACKING_VEL 0x800
|
||||
/*controls*/
|
||||
#define IN_ACCELERATE IN_ACTION
|
||||
#define IN_REVERSE IN_BACK
|
||||
#define IN_BRAKE IN_JUMP
|
||||
#define IN_TURBO IN_SPRINT
|
||||
#define IN_TURNR (IN_RIGHT|IN_RSTEP)
|
||||
#define IN_TURNL (IN_LEFT|IN_LSTEP)
|
||||
|
||||
enum MOTORBIKE_STATE
|
||||
{
|
||||
|
@ -47,26 +76,45 @@ enum MOTORBIKE_STATE
|
|||
BIKE_MOVING_RIGHT
|
||||
};
|
||||
|
||||
enum MOTORBIKE_ANIMS
|
||||
{
|
||||
BA_DIE = 0,
|
||||
BA_BRAKE = 1,
|
||||
BA_MOVE_FORWARD = 2,
|
||||
BA_START_LEFT = 3,
|
||||
BA_LEFT = 4,
|
||||
BA_END_LEFT = 5,
|
||||
BA_START_FALL = 6,
|
||||
BA_FALLING = 7,
|
||||
BA_FALL_LAND = 8,
|
||||
BA_ENTER = 9,
|
||||
BA_EXIT = 10,
|
||||
BA_FRONT_HIT = 11,
|
||||
BA_BACK_HIT = 12,
|
||||
BA_LEFT_HIT = 13,
|
||||
BA_RIGHT_HIT = 14,
|
||||
BA_REV = 15, //unused? it looks like she's revving the engine but I've never seen it before
|
||||
BA_SLOWDOWN = 16,
|
||||
BA_UNUSED = 17,
|
||||
BA_IDLE = 18,
|
||||
BA_START_RIGHT = 19,
|
||||
BA_RIGHT = 20,
|
||||
BA_END_RIGHT = 21,
|
||||
BA_START_JUMP = 22,
|
||||
BA_JUMPING = 23,
|
||||
BA_JUMP_LAND = 24,
|
||||
BA_KICKSTART = 25,
|
||||
BA_BACK_START = 26,
|
||||
BA_BACK_LOOP = 27,
|
||||
BA_UNLOCK = 28
|
||||
};
|
||||
|
||||
#define BIKE_IDLE_ANIM 18
|
||||
#define BIKE_ENTER_ANIM 9
|
||||
#define BIKE_UNLOCK_ANIM 28
|
||||
#define BIKE_DEATH_FLAG 0x80
|
||||
#define BIKE_FRONT 500
|
||||
#define BIKE_SIDE 350
|
||||
#define BIKE_RADIUS 500
|
||||
#define MIN_MOMENTUM_TURN ANGLE(4.0f)
|
||||
#define MAX_MOMENTUM_TURN (ANGLE(1.0f)+(ANGLE(1.0f)/2))
|
||||
#define MOTORBIKE_MAX_MOM_TURN ANGLE(150.0f)
|
||||
#define MOTORBIKE_DEFAULT_HTURN 273
|
||||
#define MOTORBIKE_ACCEL_1 0x4000
|
||||
#define MOTORBIKE_ACCEL_2 0x7000
|
||||
#define MOTORBIKE_ACCEL_MAX 0xC000
|
||||
#define MOTORBIKE_SLIP 100
|
||||
#define MOTORBIKE_SLIP_SIDE 50
|
||||
#define MOTORBIKE_HTURN (ANGLE(1.0f) / 2)
|
||||
#define MOTORBIKE_MAX_HTURN ANGLE(5.0f)
|
||||
#define MOTORBIKE_FRICTION 0x180
|
||||
enum MOTORBIKE_FLAGS
|
||||
{
|
||||
FL_BOOST = 1,
|
||||
FL_FALLING = 64,
|
||||
FL_DEATH = 128
|
||||
};
|
||||
|
||||
extern Inventory g_Inventory;
|
||||
static char ExhaustStart = 0;
|
||||
|
@ -294,11 +342,11 @@ void MotorbikeCollision(short itemNumber, ITEM_INFO* laraitem, COLL_INFO* coll)
|
|||
motorbike = GetMotorbikeInfo(item);
|
||||
|
||||
// update motorbike light
|
||||
if (motorbike->bikeTurn)
|
||||
{
|
||||
motorbike->bikeTurn -= (motorbike->bikeTurn / 8) - 1;
|
||||
//if (motorbike->bikeTurn)
|
||||
// {
|
||||
// motorbike->bikeTurn -= (motorbike->bikeTurn / 8) - 1;
|
||||
DrawMotorbikeLight(item);
|
||||
}
|
||||
// }
|
||||
|
||||
if (GetOnMotorBike(itemNumber))
|
||||
{
|
||||
|
@ -321,15 +369,15 @@ void MotorbikeCollision(short itemNumber, ITEM_INFO* laraitem, COLL_INFO* coll)
|
|||
{
|
||||
if (g_Inventory.GetSelectedObject() == ID_PUZZLE_ITEM1)
|
||||
{
|
||||
laraitem->animNumber = Objects[ID_MOTORBIKE_LARA_ANIMS].animIndex + BIKE_UNLOCK_ANIM;
|
||||
laraitem->animNumber = Objects[ID_MOTORBIKE_LARA_ANIMS].animIndex + BA_UNLOCK;
|
||||
g_Inventory.SetSelectedObject(NO_ITEM);
|
||||
}
|
||||
else
|
||||
{
|
||||
laraitem->animNumber = Objects[ID_MOTORBIKE_LARA_ANIMS].animIndex + BIKE_ENTER_ANIM;
|
||||
laraitem->animNumber = Objects[ID_MOTORBIKE_LARA_ANIMS].animIndex + BA_ENTER;
|
||||
}
|
||||
laraitem->goalAnimState = BIKE_ENTER_ANIM;
|
||||
laraitem->currentAnimState = BIKE_ENTER_ANIM;
|
||||
laraitem->goalAnimState = BIKE_ENTER;
|
||||
laraitem->currentAnimState = BIKE_ENTER;
|
||||
}
|
||||
laraitem->frameNumber = g_Level.Anims[laraitem->animNumber].frameBase;
|
||||
|
||||
|
@ -460,29 +508,6 @@ static void DrawMotorBikeSmoke(ITEM_INFO* item)
|
|||
}
|
||||
}
|
||||
|
||||
static void QuadbikeExplode(ITEM_INFO* item)
|
||||
{
|
||||
if (g_Level.Rooms[item->roomNumber].flags & ENV_FLAG_WATER)
|
||||
{
|
||||
TriggerUnderwaterExplosion(item, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
TriggerExplosionSparks(item->pos.xPos, item->pos.yPos, item->pos.zPos, 3, -2, 0, item->roomNumber);
|
||||
for (int i = 0; i < 3; i++)
|
||||
TriggerExplosionSparks(item->pos.xPos, item->pos.yPos, item->pos.zPos, 3, -1, 0, item->roomNumber);
|
||||
}
|
||||
TriggerShockwave(&PHD_3DPOS(item->pos.xPos, item->pos.yPos - 128, item->pos.zPos, 0, item->pos.yRot, 0), 50, 180, 40, 160, 60, 60, 64, ANGLE(45), 0);
|
||||
ExplodingDeath(Lara.Vehicle, 0xfffffffe, 1);
|
||||
// KillItem(Lara.Vehicle);
|
||||
item->status = ITEM_DEACTIVATED;
|
||||
|
||||
SoundEffect(SFX_EXPLOSION1, NULL, 0);
|
||||
SoundEffect(SFX_EXPLOSION2, NULL, 0);
|
||||
|
||||
Lara.Vehicle = NO_ITEM;
|
||||
}
|
||||
|
||||
static void MotorBikeExplode(ITEM_INFO* item)
|
||||
{
|
||||
if (g_Level.Rooms[item->roomNumber].flags & (ENV_FLAG_WATER|ENV_FLAG_SWAMP))
|
||||
|
@ -500,7 +525,6 @@ static void MotorBikeExplode(ITEM_INFO* item)
|
|||
ExplodingDeath(Lara.Vehicle, -2, 256);
|
||||
ExplodingDeath(Lara.itemNumber, -2, 258); // enable blood
|
||||
LaraItem->hitPoints = 0;
|
||||
// KillItem(Lara.Vehicle);
|
||||
item->status = ITEM_DEACTIVATED;
|
||||
|
||||
SoundEffect(SFX_EXPLOSION1, NULL, 0);
|
||||
|
@ -557,9 +581,7 @@ static int DoMotorBikeDynamics(int height, int fallspeed, int* y, int flags)
|
|||
if (height <= *y)
|
||||
{
|
||||
if (flags)
|
||||
{
|
||||
return fallspeed;
|
||||
}
|
||||
else
|
||||
{
|
||||
// On ground
|
||||
|
@ -620,6 +642,67 @@ static int GetMotorbikeCollisionAnim(ITEM_INFO* item, PHD_VECTOR* pos)
|
|||
return 0;
|
||||
}
|
||||
|
||||
void MotorbikeBaddieCollision(ITEM_INFO* bike)
|
||||
{
|
||||
int x, y, z, i;
|
||||
|
||||
std::vector<short> roomsList;
|
||||
roomsList.push_back(bike->roomNumber);
|
||||
|
||||
ROOM_INFO* room = &g_Level.Rooms[bike->roomNumber];
|
||||
for (i = 0; i < room->doors.size(); i++)
|
||||
{
|
||||
roomsList.push_back(room->doors[i].room);
|
||||
}
|
||||
|
||||
for (int i = 0; i < roomsList.size(); i++)
|
||||
{
|
||||
short itemNum = g_Level.Rooms[roomsList[i]].itemNumber;
|
||||
|
||||
while (itemNum != NO_ITEM)
|
||||
{
|
||||
ITEM_INFO* item = &g_Level.Items[itemNum];
|
||||
|
||||
if (item->collidable && item->status != IFLAG_INVISIBLE && item != LaraItem && item != bike)
|
||||
{
|
||||
OBJECT_INFO* object = &Objects[item->objectNumber];
|
||||
|
||||
if (object->collision && (object->intelligent))
|
||||
{
|
||||
x = bike->pos.xPos - item->pos.xPos;
|
||||
y = bike->pos.yPos - item->pos.yPos;
|
||||
z = bike->pos.zPos - item->pos.zPos;
|
||||
|
||||
if (x > -2048 && x < 2048 && z > -2048 && z < 2048 && y > -2048 && y < 2048)
|
||||
{
|
||||
if (item->objectNumber == ID_ROLLINGBALL)
|
||||
{
|
||||
if (TestBoundsCollide(item, LaraItem, 100))
|
||||
{
|
||||
if (LaraItem->hitPoints > 0)
|
||||
{
|
||||
DoLotsOfBlood(LaraItem->pos.xPos, LaraItem->pos.yPos - (STEP_SIZE * 2), LaraItem->pos.zPos, GetRandomControl() & 3, LaraItem->pos.yRot, LaraItem->roomNumber, 5);
|
||||
LaraItem->hitPoints -= 8;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (TestBoundsCollide(item, bike, BIKE_FRONT))
|
||||
{
|
||||
DoLotsOfBlood(bike->pos.xPos, bike->pos.yPos, bike->pos.zPos, GetRandomControl() & 3, LaraItem->pos.yRot, LaraItem->roomNumber, 3);
|
||||
item->hitPoints = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
itemNum = item->nextItem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static int MotorBikeDynamics(ITEM_INFO* item)
|
||||
{
|
||||
MOTORBIKE_INFO* motorbike;
|
||||
|
@ -634,11 +717,11 @@ static int MotorBikeDynamics(ITEM_INFO* item)
|
|||
NoGetOff = false;
|
||||
motorbike = GetMotorbikeInfo(item);
|
||||
|
||||
hfl_old = TestMotorbikeHeight(item, 500, -350, &fl_old);
|
||||
hmf_old = TestMotorbikeHeight(item, 500, 128, &mtf_old);
|
||||
hbl_old = TestMotorbikeHeight(item, -500, -350, &bl_old);
|
||||
hbr_old = TestMotorbikeHeight(item, -500, 128, &br_old);
|
||||
hmtb_old = TestMotorbikeHeight(item, -500, 0, &mtb_old);
|
||||
hfl_old = TestMotorbikeHeight(item, BIKE_FRONT, -BIKE_SIDE, &fl_old);
|
||||
hmf_old = TestMotorbikeHeight(item, BIKE_FRONT, STEP_SIZE / 2, &mtf_old);
|
||||
hbl_old = TestMotorbikeHeight(item, -BIKE_FRONT, -BIKE_SIDE, &bl_old);
|
||||
hbr_old = TestMotorbikeHeight(item, -BIKE_FRONT, STEP_SIZE / 2, &br_old);
|
||||
hmtb_old = TestMotorbikeHeight(item, -BIKE_FRONT, 0, &mtb_old);
|
||||
|
||||
oldpos.x = item->pos.xPos;
|
||||
oldpos.y = item->pos.yPos;
|
||||
|
@ -685,7 +768,7 @@ static int MotorBikeDynamics(ITEM_INFO* item)
|
|||
rot = item->pos.yRot - motorbike->momentumAngle;
|
||||
momentum = MIN_MOMENTUM_TURN - ((2 * motorbike->velocity) / SECTOR(1));
|
||||
|
||||
if (!(TrInput & IN_ACTION) && motorbike->velocity > 0)
|
||||
if (!(TrInput & IN_ACCELERATE) && motorbike->velocity > 0)
|
||||
momentum += (momentum / 2);
|
||||
|
||||
if (rot < -MAX_MOMENTUM_TURN)
|
||||
|
@ -731,10 +814,10 @@ static int MotorBikeDynamics(ITEM_INFO* item)
|
|||
|
||||
if (item->pos.yPos >= height)
|
||||
{
|
||||
short anglex = 100 * phd_sin(item->pos.xRot);
|
||||
short anglex = MOTORBIKE_SLIP * phd_sin(item->pos.xRot);
|
||||
if (abs(anglex) > 16)
|
||||
{
|
||||
short anglex2 = 100 * phd_sin(item->pos.xRot);
|
||||
short anglex2 = MOTORBIKE_SLIP * phd_sin(item->pos.xRot);
|
||||
if (anglex < 0)
|
||||
anglex2 = -anglex;
|
||||
if (anglex2 > 24)
|
||||
|
@ -743,7 +826,7 @@ static int MotorBikeDynamics(ITEM_INFO* item)
|
|||
motorbike->velocity -= anglex;
|
||||
}
|
||||
|
||||
short anglez = 100 * phd_sin(item->pos.zRot);
|
||||
short anglez = MOTORBIKE_SLIP * phd_sin(item->pos.zRot);
|
||||
if (abs(anglez) > 32)
|
||||
{
|
||||
short ang, angabs;
|
||||
|
@ -758,42 +841,38 @@ static int MotorBikeDynamics(ITEM_INFO* item)
|
|||
}
|
||||
}
|
||||
|
||||
if (motorbike->velocity <= 0x8000 || motorbike->flags & 1) // boost
|
||||
if (motorbike->velocity <= MOTORBIKE_ACCEL || motorbike->flags & FL_BOOST)
|
||||
{
|
||||
if (motorbike->velocity <= 0xC000)
|
||||
if (motorbike->velocity <= MOTORBIKE_ACCEL_MAX)
|
||||
{
|
||||
if (motorbike->velocity < -0x3000)
|
||||
motorbike->velocity = -0x3000;
|
||||
if (motorbike->velocity < -MOTORBIKE_BIG_SLOWDOWN)
|
||||
motorbike->velocity = -MOTORBIKE_BIG_SLOWDOWN;
|
||||
}
|
||||
else
|
||||
{
|
||||
motorbike->velocity = 0xC000;
|
||||
}
|
||||
motorbike->velocity = MOTORBIKE_ACCEL_MAX;
|
||||
}
|
||||
else
|
||||
{
|
||||
motorbike->velocity -= 1088;
|
||||
}
|
||||
motorbike->velocity -= MOTORBIKE_SLOWDOWN1;
|
||||
|
||||
moved.x = item->pos.xPos;
|
||||
moved.z = item->pos.zPos;
|
||||
|
||||
if (!(item->flags & ONESHOT))
|
||||
{
|
||||
//MotorBikeBaddieCollision(item);
|
||||
MotorbikeBaddieCollision(item);
|
||||
//MotorBikeStaticCollision(item->pos.x, item->pos.y, item->pos.z, item->room_number, (WALL_L / 2));
|
||||
}
|
||||
|
||||
int rot1 = 0;
|
||||
int rot2 = 0;
|
||||
|
||||
int hfl = TestMotorbikeHeight(item, 500, -350, &fl);
|
||||
int hfl = TestMotorbikeHeight(item, BIKE_FRONT, -BIKE_SIDE, &fl);
|
||||
if (hfl < fl_old.y - STEP_SIZE)
|
||||
{
|
||||
rot1 = abs(4 * DoMotorbikeShift(item, &fl, &fl_old));
|
||||
}
|
||||
|
||||
int hbl = TestMotorbikeHeight(item, -500, -350, &bl);
|
||||
int hbl = TestMotorbikeHeight(item, -BIKE_FRONT, -BIKE_SIDE, &bl);
|
||||
if (hbl < bl_old.y - STEP_SIZE)
|
||||
{
|
||||
if (rot1)
|
||||
|
@ -802,15 +881,15 @@ static int MotorBikeDynamics(ITEM_INFO* item)
|
|||
rot1 -= abs(4 * DoMotorbikeShift(item, &bl, &bl_old));
|
||||
}
|
||||
|
||||
int hmtf = TestMotorbikeHeight(item, 500, 128, &mtf);
|
||||
int hmtf = TestMotorbikeHeight(item, BIKE_FRONT, STEP_SIZE / 2, &mtf);
|
||||
if (hmtf < mtf_old.y - STEP_SIZE)
|
||||
rot2 -= abs(4 * DoMotorbikeShift(item, &bl, &bl_old));
|
||||
|
||||
int hmtb = TestMotorbikeHeight(item, -500, 0, &mtb);
|
||||
int hmtb = TestMotorbikeHeight(item, -BIKE_FRONT, 0, &mtb);
|
||||
if (hmtb < mtb_old.y - STEP_SIZE)
|
||||
DoMotorbikeShift(item, &mtb, &mtb_old);
|
||||
|
||||
int hbr = TestMotorbikeHeight(item, -500, 128, &br);
|
||||
int hbr = TestMotorbikeHeight(item, -BIKE_FRONT, STEP_SIZE / 2, &br);
|
||||
if (hbr < br_old.y - STEP_SIZE)
|
||||
{
|
||||
if (rot2)
|
||||
|
@ -844,7 +923,7 @@ static int MotorBikeDynamics(ITEM_INFO* item)
|
|||
if (collide)
|
||||
{
|
||||
newspeed = ((item->pos.zPos - oldpos.z) * phd_cos(motorbike->momentumAngle) + (item->pos.xPos - oldpos.x) * phd_sin(motorbike->momentumAngle)) * 256;
|
||||
if (&g_Level.Items[Lara.Vehicle] == item && motorbike->velocity >= 0x8000 && newspeed < (motorbike->velocity - 10))
|
||||
if (&g_Level.Items[Lara.Vehicle] == item && motorbike->velocity >= MOTORBIKE_ACCEL && newspeed < (motorbike->velocity - 10))
|
||||
{
|
||||
LaraItem->hitPoints -= ((motorbike->velocity - newspeed) / 128);
|
||||
LaraItem->hitStatus = true;
|
||||
|
@ -855,8 +934,8 @@ static int MotorBikeDynamics(ITEM_INFO* item)
|
|||
else if (motorbike->velocity < 0 && newspeed > motorbike->velocity)
|
||||
motorbike->velocity = (newspeed > 0) ? 0 : newspeed;
|
||||
|
||||
if (motorbike->velocity < -0x3000)
|
||||
motorbike->velocity = -0x3000;
|
||||
if (motorbike->velocity < -MOTORBIKE_BIG_SLOWDOWN)
|
||||
motorbike->velocity = -MOTORBIKE_BIG_SLOWDOWN;
|
||||
}
|
||||
|
||||
return collide;
|
||||
|
@ -872,9 +951,9 @@ static BOOL MotorbikeCanGetOff(void)
|
|||
|
||||
item = &g_Level.Items[Lara.Vehicle];
|
||||
angle = item->pos.yRot + 0x4000;
|
||||
x = item->pos.xPos + 500 * phd_sin(angle);
|
||||
x = item->pos.xPos + BIKE_RADIUS * phd_sin(angle);
|
||||
y = item->pos.yPos;
|
||||
z = item->pos.zPos + 500 * phd_cos(angle);
|
||||
z = item->pos.zPos + BIKE_RADIUS * phd_cos(angle);
|
||||
|
||||
room_number = item->roomNumber;
|
||||
floor = GetFloor(x, y, z, &room_number);
|
||||
|
@ -916,92 +995,103 @@ static void AnimateMotorbike(ITEM_INFO* item, int collide, BOOL dead)
|
|||
{
|
||||
case BIKE_IDLE:
|
||||
if (dead)
|
||||
{
|
||||
LaraItem->goalAnimState = BIKE_DEATH;
|
||||
}
|
||||
else if (!(TrInput & IN_JUMP) && !(TrInput & IN_RIGHT) || motorbike->velocity || NoGetOff)
|
||||
else
|
||||
{
|
||||
if (TrInput & IN_ACTION && !(TrInput & IN_JUMP))
|
||||
LaraItem->goalAnimState = BIKE_MOVING_FRONT;
|
||||
else if (TrInput & IN_BACK)
|
||||
LaraItem->goalAnimState = BIKE_MOVING_BACK;
|
||||
}
|
||||
else if (TrInput & IN_JUMP && TrInput & IN_RIGHT && MotorbikeCanGetOff())
|
||||
{
|
||||
LaraItem->goalAnimState = BIKE_EXIT;
|
||||
|
||||
bool dismount;
|
||||
if ((TrInput & IN_TURNR) && (TrInput & IN_BRAKE))
|
||||
dismount = true;
|
||||
else if (!((TrInput & IN_TURNR) && (TrInput & IN_BRAKE)))
|
||||
dismount = false;
|
||||
|
||||
if (!dismount || motorbike->velocity || NoGetOff)
|
||||
{
|
||||
if (TrInput & IN_ACCELERATE && !(TrInput & IN_BRAKE))
|
||||
LaraItem->goalAnimState = BIKE_MOVING_FRONT;
|
||||
else if (TrInput & IN_REVERSE)
|
||||
LaraItem->goalAnimState = BIKE_MOVING_BACK;
|
||||
}
|
||||
else if (dismount && MotorbikeCanGetOff())
|
||||
{
|
||||
LaraItem->goalAnimState = BIKE_EXIT;
|
||||
}
|
||||
else
|
||||
{
|
||||
LaraItem->goalAnimState = BIKE_IDLE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case BIKE_MOVING_FRONT:
|
||||
if (dead)
|
||||
{
|
||||
if (motorbike->velocity <= 0x4000)
|
||||
if (motorbike->velocity <= MOTORBIKE_ACCEL_1)
|
||||
LaraItem->goalAnimState = BIKE_DEATH;
|
||||
else
|
||||
LaraItem->goalAnimState = BIKE_EMPTY5;
|
||||
}
|
||||
else if (motorbike->velocity & -256 || TrInput & (IN_ACTION | IN_JUMP))
|
||||
else if (motorbike->velocity & -256 || TrInput & (IN_ACCELERATE | IN_BRAKE))
|
||||
{
|
||||
if (TrInput & IN_LEFT)
|
||||
{
|
||||
if (TrInput & IN_TURNL)
|
||||
LaraItem->goalAnimState = BIKE_MOVING_LEFT;
|
||||
}
|
||||
else if (TrInput & IN_RIGHT)
|
||||
{
|
||||
else if (TrInput & IN_TURNR)
|
||||
LaraItem->goalAnimState = BIKE_MOVING_RIGHT;
|
||||
}
|
||||
else if (TrInput & IN_JUMP)
|
||||
else if (TrInput & IN_BRAKE)
|
||||
{
|
||||
if (motorbike->velocity <= 0x5554)
|
||||
LaraItem->goalAnimState = BIKE_EMPTY3;
|
||||
else
|
||||
LaraItem->goalAnimState = BIKE_STOP;
|
||||
}
|
||||
else if (TrInput & IN_BACK && motorbike->velocity <= 0x800)
|
||||
{
|
||||
else if (TrInput & IN_REVERSE && motorbike->velocity <= MOTORBIKE_BACKING_VEL)
|
||||
LaraItem->goalAnimState = BIKE_MOVING_BACK;
|
||||
}
|
||||
else if (motorbike->velocity == 0)
|
||||
LaraItem->goalAnimState = BIKE_IDLE;
|
||||
}
|
||||
else
|
||||
{
|
||||
LaraItem->goalAnimState = BIKE_IDLE;
|
||||
}
|
||||
break;
|
||||
|
||||
case BIKE_MOVING_LEFT:
|
||||
if (motorbike->velocity & -256)
|
||||
{
|
||||
if (TrInput & IN_RIGHT || !(TrInput & IN_LEFT))
|
||||
if (TrInput & IN_TURNR || !(TrInput & IN_TURNL))
|
||||
LaraItem->goalAnimState = BIKE_MOVING_FRONT;
|
||||
}
|
||||
else
|
||||
{
|
||||
LaraItem->goalAnimState = BIKE_IDLE;
|
||||
}
|
||||
if (motorbike->velocity == 0)
|
||||
LaraItem->goalAnimState = BIKE_IDLE;
|
||||
break;
|
||||
|
||||
case BIKE_MOVING_BACK:
|
||||
if (!(TrInput & IN_BACK))
|
||||
LaraItem->goalAnimState = BIKE_IDLE;
|
||||
else
|
||||
if (TrInput & IN_REVERSE)
|
||||
LaraItem->goalAnimState = BIKE_MOVING_BACK_LOOP;
|
||||
else
|
||||
LaraItem->goalAnimState = BIKE_IDLE;
|
||||
break;
|
||||
|
||||
case BIKE_MOVING_RIGHT:
|
||||
if (motorbike->velocity & -256)
|
||||
{
|
||||
if (TrInput & IN_LEFT || !(TrInput & IN_RIGHT))
|
||||
if (TrInput & IN_TURNL || !(TrInput & IN_TURNR))
|
||||
LaraItem->goalAnimState = BIKE_MOVING_FRONT;
|
||||
}
|
||||
else
|
||||
{
|
||||
LaraItem->goalAnimState = BIKE_IDLE;
|
||||
}
|
||||
if (motorbike->velocity == 0)
|
||||
LaraItem->goalAnimState = BIKE_IDLE;
|
||||
break;
|
||||
|
||||
case BIKE_EMPTY3:
|
||||
case BIKE_STOP:
|
||||
case BIKE_ACCELERATE:
|
||||
if (motorbike->velocity & -256)
|
||||
{
|
||||
if (TrInput & IN_LEFT)
|
||||
if (TrInput & IN_TURNL)
|
||||
LaraItem->goalAnimState = BIKE_MOVING_LEFT;
|
||||
else if (TrInput & IN_RIGHT)
|
||||
if (TrInput & IN_TURNR)
|
||||
LaraItem->goalAnimState = BIKE_MOVING_RIGHT;
|
||||
}
|
||||
else
|
||||
|
@ -1009,6 +1099,7 @@ static void AnimateMotorbike(ITEM_INFO* item, int collide, BOOL dead)
|
|||
LaraItem->goalAnimState = BIKE_IDLE;
|
||||
}
|
||||
break;
|
||||
|
||||
case BIKE_FALLING:
|
||||
if (item->pos.yPos == item->floor)
|
||||
{
|
||||
|
@ -1024,44 +1115,48 @@ static void AnimateMotorbike(ITEM_INFO* item, int collide, BOOL dead)
|
|||
}
|
||||
}
|
||||
else if (item->fallspeed > 220)
|
||||
{
|
||||
motorbike->flags |= 0x40;
|
||||
}
|
||||
motorbike->flags |= FL_FALLING;
|
||||
break;
|
||||
|
||||
case BIKE_HITFRONT:
|
||||
case BIKE_HITBACK:
|
||||
case BIKE_HITRIGHT:
|
||||
case BIKE_HITLEFT:
|
||||
if (TrInput & (IN_ACTION | IN_JUMP))
|
||||
if (TrInput & (IN_ACCELERATE | IN_BRAKE))
|
||||
LaraItem->goalAnimState = BIKE_MOVING_FRONT;
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (collide)
|
||||
{
|
||||
|
||||
case 13:
|
||||
LaraItem->animNumber = Objects[ID_MOTORBIKE_LARA_ANIMS].animIndex + 12;
|
||||
LaraItem->animNumber = Objects[ID_MOTORBIKE_LARA_ANIMS].animIndex + BA_BACK_HIT;
|
||||
LaraItem->currentAnimState = BIKE_HITBACK;
|
||||
LaraItem->goalAnimState = BIKE_HITBACK;
|
||||
LaraItem->frameNumber = g_Level.Anims[LaraItem->animNumber].frameBase;
|
||||
break;
|
||||
|
||||
case 14:
|
||||
LaraItem->animNumber = Objects[ID_MOTORBIKE_LARA_ANIMS].animIndex + 11;
|
||||
LaraItem->animNumber = Objects[ID_MOTORBIKE_LARA_ANIMS].animIndex + BA_FRONT_HIT;
|
||||
LaraItem->currentAnimState = BIKE_HITFRONT;
|
||||
LaraItem->goalAnimState = BIKE_HITFRONT;
|
||||
LaraItem->frameNumber = g_Level.Anims[LaraItem->animNumber].frameBase;
|
||||
break;
|
||||
|
||||
case 11:
|
||||
LaraItem->animNumber = Objects[ID_MOTORBIKE_LARA_ANIMS].animIndex + 14;
|
||||
LaraItem->animNumber = Objects[ID_MOTORBIKE_LARA_ANIMS].animIndex + BA_RIGHT_HIT;
|
||||
LaraItem->currentAnimState = BIKE_HITRIGHT;
|
||||
LaraItem->goalAnimState = BIKE_HITRIGHT;
|
||||
LaraItem->frameNumber = g_Level.Anims[LaraItem->animNumber].frameBase;
|
||||
break;
|
||||
|
||||
default:
|
||||
case 12:
|
||||
LaraItem->animNumber = Objects[ID_MOTORBIKE_LARA_ANIMS].animIndex + 13;
|
||||
LaraItem->animNumber = Objects[ID_MOTORBIKE_LARA_ANIMS].animIndex + BA_LEFT_HIT;
|
||||
LaraItem->currentAnimState = BIKE_HITLEFT;
|
||||
LaraItem->goalAnimState = BIKE_HITLEFT;
|
||||
LaraItem->frameNumber = g_Level.Anims[LaraItem->animNumber].frameBase;
|
||||
|
@ -1072,9 +1167,9 @@ static void AnimateMotorbike(ITEM_INFO* item, int collide, BOOL dead)
|
|||
else
|
||||
{
|
||||
if (motorbike->velocity >= 0)
|
||||
LaraItem->animNumber = Objects[ID_MOTORBIKE_LARA_ANIMS].animIndex + 22;
|
||||
LaraItem->animNumber = Objects[ID_MOTORBIKE_LARA_ANIMS].animIndex + BA_START_JUMP;
|
||||
else
|
||||
LaraItem->animNumber = Objects[ID_MOTORBIKE_LARA_ANIMS].animIndex + 6;
|
||||
LaraItem->animNumber = Objects[ID_MOTORBIKE_LARA_ANIMS].animIndex + BA_START_FALL;
|
||||
LaraItem->frameNumber = g_Level.Anims[LaraItem->animNumber].frameBase;
|
||||
LaraItem->currentAnimState = BIKE_FALLING;
|
||||
LaraItem->goalAnimState = BIKE_FALLING;
|
||||
|
@ -1083,7 +1178,6 @@ static void AnimateMotorbike(ITEM_INFO* item, int collide, BOOL dead)
|
|||
if (g_Level.Rooms[item->roomNumber].flags & (ENV_FLAG_WATER|ENV_FLAG_SWAMP))
|
||||
{
|
||||
LaraItem->goalAnimState = BIKE_EMPTY6;
|
||||
LaraItem->hitPoints = 0;
|
||||
MotorBikeExplode(item);
|
||||
}
|
||||
}
|
||||
|
@ -1113,50 +1207,56 @@ static int MotorbikeUserControl(ITEM_INFO* item, int height, int* pitch)
|
|||
motorbike->revs = 0;
|
||||
}
|
||||
|
||||
if ((TrInput & IN_SPRINT) && (TrInput & IN_ACTION) && DashTimer)
|
||||
if ((TrInput & IN_TURBO) && (TrInput & IN_ACCELERATE) && DashTimer)
|
||||
{
|
||||
motorbike->flags |= 0x1;
|
||||
motorbike->flags |= FL_BOOST;
|
||||
DashTimer -= 2;
|
||||
if (DashTimer > 0x8000)
|
||||
if (DashTimer > MOTORBIKE_ACCEL)//hmm
|
||||
{
|
||||
motorbike->flags &= ~0x1;
|
||||
motorbike->flags &= ~FL_BOOST;
|
||||
DashTimer = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
motorbike->flags &= ~0x1;
|
||||
}
|
||||
motorbike->flags &= ~FL_BOOST;
|
||||
|
||||
if (item->pos.yPos >= (height - STEP_SIZE))
|
||||
{
|
||||
if (!motorbike->velocity && (TrInput & IN_LOOK))
|
||||
LookUpDown(); // not used since it ignore the vehicle (lara.skidoo == NO_ITEM) !!
|
||||
LookUpDown();
|
||||
|
||||
if (motorbike->velocity > 0)
|
||||
{
|
||||
if (TrInput & IN_LEFT)
|
||||
if (TrInput & IN_TURNL)
|
||||
{
|
||||
motorbike->bikeTurn -= motorbike->velocity <= MOTORBIKE_ACCEL_1 ? ONE_DEGREE - MOTORBIKE_HTURN * motorbike->velocity / 16384 : MOTORBIKE_DEFAULT_HTURN;
|
||||
if (motorbike->velocity > MOTORBIKE_ACCEL_1)
|
||||
motorbike->bikeTurn -= MOTORBIKE_DEFAULT_HTURN;
|
||||
else
|
||||
motorbike->bikeTurn -= (ANGLE(1) - MOTORBIKE_HTURN * motorbike->velocity) / 16384;
|
||||
|
||||
if (motorbike->bikeTurn < -MOTORBIKE_MAX_HTURN)
|
||||
motorbike->bikeTurn = -MOTORBIKE_MAX_HTURN;
|
||||
}
|
||||
else if (TrInput & IN_RIGHT)
|
||||
else if (TrInput & IN_TURNR)
|
||||
{
|
||||
motorbike->bikeTurn += motorbike->velocity <= MOTORBIKE_ACCEL_1 ? ONE_DEGREE + MOTORBIKE_HTURN * motorbike->velocity / 16384 : MOTORBIKE_DEFAULT_HTURN;
|
||||
if (motorbike->velocity > MOTORBIKE_ACCEL_1)
|
||||
motorbike->bikeTurn += MOTORBIKE_DEFAULT_HTURN;
|
||||
else
|
||||
motorbike->bikeTurn += (ANGLE(1) + MOTORBIKE_HTURN * motorbike->velocity) / 16384;
|
||||
|
||||
if (motorbike->bikeTurn > MOTORBIKE_MAX_HTURN)
|
||||
motorbike->bikeTurn = MOTORBIKE_MAX_HTURN;
|
||||
}
|
||||
}
|
||||
else if (motorbike->velocity < 0)
|
||||
else if (motorbike->velocity < 0)//moving backwards so the turning is inverted
|
||||
{
|
||||
if (TrInput & IN_LEFT)
|
||||
if (TrInput & IN_TURNL)
|
||||
{
|
||||
motorbike->bikeTurn += MOTORBIKE_HTURN;
|
||||
if (motorbike->bikeTurn > MOTORBIKE_MAX_HTURN)
|
||||
motorbike->bikeTurn = MOTORBIKE_MAX_HTURN;
|
||||
}
|
||||
else if (TrInput & IN_RIGHT)
|
||||
else if (TrInput & IN_TURNR)
|
||||
{
|
||||
motorbike->bikeTurn -= MOTORBIKE_HTURN;
|
||||
if (motorbike->bikeTurn < -MOTORBIKE_MAX_HTURN)
|
||||
|
@ -1164,7 +1264,7 @@ static int MotorbikeUserControl(ITEM_INFO* item, int height, int* pitch)
|
|||
}
|
||||
}
|
||||
|
||||
if (TrInput & IN_JUMP)
|
||||
if (TrInput & IN_BRAKE)
|
||||
{
|
||||
pos.x = 0;
|
||||
pos.y = -144;
|
||||
|
@ -1178,7 +1278,7 @@ static int MotorbikeUserControl(ITEM_INFO* item, int height, int* pitch)
|
|||
item->meshBits = 0x3F7;
|
||||
}
|
||||
|
||||
if (TrInput & IN_JUMP)
|
||||
if (TrInput & IN_BRAKE)
|
||||
{
|
||||
if (motorbike->velocity < 0)
|
||||
{
|
||||
|
@ -1193,18 +1293,18 @@ static int MotorbikeUserControl(ITEM_INFO* item, int height, int* pitch)
|
|||
motorbike->velocity = 0;
|
||||
}
|
||||
}
|
||||
else if (TrInput & IN_ACTION)
|
||||
else if (TrInput & IN_ACCELERATE)
|
||||
{
|
||||
if (motorbike->velocity < MOTORBIKE_ACCEL_MAX)
|
||||
{
|
||||
if (motorbike->velocity < MOTORBIKE_ACCEL_1)
|
||||
motorbike->velocity += 8 + ((MOTORBIKE_ACCEL_1 + 0x800 - motorbike->velocity) / 8);
|
||||
motorbike->velocity += 8 + ((MOTORBIKE_ACCEL_1 + MOTORBIKE_BACKING_VEL - motorbike->velocity) / 8);
|
||||
else if (motorbike->velocity < MOTORBIKE_ACCEL_2)
|
||||
motorbike->velocity += 4 + ((MOTORBIKE_ACCEL_2 + 0x800 - motorbike->velocity) / 16);
|
||||
motorbike->velocity += 4 + ((MOTORBIKE_ACCEL_2 + MOTORBIKE_BACKING_VEL - motorbike->velocity) / 16);
|
||||
else if (motorbike->velocity < MOTORBIKE_ACCEL_MAX)
|
||||
motorbike->velocity += 2 + ((MOTORBIKE_ACCEL_MAX - motorbike->velocity) / 16);
|
||||
|
||||
if (motorbike->flags & 1)
|
||||
if (motorbike->flags & FL_BOOST)
|
||||
motorbike->velocity += 256;
|
||||
}
|
||||
else
|
||||
|
@ -1218,15 +1318,17 @@ static int MotorbikeUserControl(ITEM_INFO* item, int height, int* pitch)
|
|||
else if (motorbike->velocity > MOTORBIKE_FRICTION)
|
||||
{
|
||||
motorbike->velocity -= MOTORBIKE_FRICTION;
|
||||
if (motorbike->velocity < 0)
|
||||
motorbike->velocity = 0;//because bitch.
|
||||
}
|
||||
else if (motorbike->velocity < MOTORBIKE_FRICTION)
|
||||
{
|
||||
motorbike->velocity += MOTORBIKE_FRICTION;
|
||||
if (motorbike->velocity > 0)
|
||||
motorbike->velocity = 0;//because bitch.
|
||||
}
|
||||
else
|
||||
{
|
||||
motorbike->velocity = 0;
|
||||
}
|
||||
|
||||
if (LaraItem->currentAnimState == BIKE_MOVING_BACK)
|
||||
{
|
||||
|
@ -1235,8 +1337,8 @@ static int MotorbikeUserControl(ITEM_INFO* item, int height, int* pitch)
|
|||
|
||||
if (framenow >= framebase + 24 && framenow <= framebase + 29)
|
||||
{
|
||||
if (motorbike->velocity > -0x3000)
|
||||
motorbike->velocity -= 0x600;
|
||||
if (motorbike->velocity > -MOTORBIKE_BIG_SLOWDOWN)
|
||||
motorbike->velocity -= MOTORBIKE_SLOWDOWN2;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1261,20 +1363,20 @@ static int MotorbikeUserControl(ITEM_INFO* item, int height, int* pitch)
|
|||
return drive;
|
||||
}
|
||||
|
||||
void SetLaraOnMotorBike(ITEM_INFO* item, ITEM_INFO* laraitem)
|
||||
void SetLaraOnMotorBike(ITEM_INFO* item, ITEM_INFO* lara)//is this function even used
|
||||
{
|
||||
MOTORBIKE_INFO* motorbike;
|
||||
motorbike = GetMotorbikeInfo(item);
|
||||
|
||||
Lara.gunStatus = LG_HANDS_BUSY;
|
||||
Lara.hitDirection = -1;
|
||||
laraitem->currentAnimState = BIKE_IDLE;
|
||||
laraitem->goalAnimState = BIKE_IDLE;
|
||||
laraitem->animNumber = Objects[ID_MOTORBIKE_LARA_ANIMS].animIndex + BIKE_IDLE_ANIM;
|
||||
laraitem->frameNumber = g_Level.Anims[laraitem->animNumber].frameBase;
|
||||
laraitem->gravityStatus = false;
|
||||
item->animNumber = laraitem->animNumber + (Objects[ID_MOTORBIKE].animIndex - Objects[ID_MOTORBIKE_LARA_ANIMS].animIndex);
|
||||
item->frameNumber = laraitem->frameNumber + (g_Level.Anims[ID_MOTORBIKE].frameBase - g_Level.Anims[ID_MOTORBIKE_LARA_ANIMS].frameBase);
|
||||
lara->currentAnimState = BIKE_IDLE;
|
||||
lara->goalAnimState = BIKE_IDLE;
|
||||
lara->animNumber = Objects[ID_MOTORBIKE_LARA_ANIMS].animIndex + BA_IDLE;
|
||||
lara->frameNumber = g_Level.Anims[lara->animNumber].frameBase;
|
||||
lara->gravityStatus = false;
|
||||
item->animNumber = lara->animNumber + (Objects[ID_MOTORBIKE].animIndex - Objects[ID_MOTORBIKE_LARA_ANIMS].animIndex);
|
||||
item->frameNumber = lara->frameNumber + (g_Level.Anims[ID_MOTORBIKE].frameBase - g_Level.Anims[ID_MOTORBIKE_LARA_ANIMS].frameBase);
|
||||
item->hitPoints = 1;
|
||||
item->flags = short(IFLAG_KILLED); // hmm... maybe wrong name (it can be IFLAG_CODEBITS) ?
|
||||
motorbike->revs = 0;
|
||||
|
@ -1286,7 +1388,7 @@ int MotorbikeControl(void)
|
|||
MOTORBIKE_INFO* motorbike;
|
||||
FLOOR_INFO* floor;
|
||||
PHD_VECTOR oldpos, fl, fr, fm;
|
||||
int drive, collide, pitch = 0, dead, height = 0, ceiling;
|
||||
int drive, collide, pitch = 0, dead, ceiling;
|
||||
short room_number;
|
||||
|
||||
item = &g_Level.Items[Lara.Vehicle];
|
||||
|
@ -1298,13 +1400,13 @@ int MotorbikeControl(void)
|
|||
oldpos.y = item->pos.yPos;
|
||||
oldpos.z = item->pos.zPos;
|
||||
|
||||
int hfl = TestMotorbikeHeight(item, 500, -350, &fl);
|
||||
int hfr = TestMotorbikeHeight(item, 500, 128, &fr);
|
||||
int hfm = TestMotorbikeHeight(item, -500, 0, &fm);
|
||||
int hfl = TestMotorbikeHeight(item, BIKE_FRONT, -BIKE_SIDE, &fl);
|
||||
int hfr = TestMotorbikeHeight(item, BIKE_FRONT, STEP_SIZE / 2, &fr);
|
||||
int hfm = TestMotorbikeHeight(item, -BIKE_FRONT, 0, &fm);
|
||||
|
||||
room_number = item->roomNumber;
|
||||
floor = GetFloor(item->pos.xPos, item->pos.yPos, item->pos.zPos, &room_number);
|
||||
height = GetFloorHeight(floor, item->pos.xPos, item->pos.yPos, item->pos.zPos);
|
||||
int height = GetFloorHeight(floor, item->pos.xPos, item->pos.yPos, item->pos.zPos);
|
||||
|
||||
TestTriggers(TriggerIndex, FALSE, FALSE);
|
||||
TestTriggers(TriggerIndex, TRUE, FALSE);
|
||||
|
@ -1315,21 +1417,15 @@ int MotorbikeControl(void)
|
|||
dead = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
dead = false;
|
||||
}
|
||||
|
||||
if (motorbike->flags)
|
||||
{
|
||||
collide = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
DrawMotorbikeLight(item);
|
||||
if (LaraItem->currentAnimState < BIKE_ENTER || LaraItem->currentAnimState > BIKE_EXIT)
|
||||
{
|
||||
drive = MotorbikeUserControl(item, height, &pitch);
|
||||
}
|
||||
else
|
||||
{
|
||||
drive = -1;
|
||||
|
@ -1341,10 +1437,11 @@ int MotorbikeControl(void)
|
|||
{
|
||||
motorbike->pitch = pitch;
|
||||
|
||||
if (motorbike->pitch < -0x8000)
|
||||
motorbike->pitch = -0x8000;
|
||||
else if (motorbike->pitch > 0xA000)
|
||||
motorbike->pitch = 0xA000;
|
||||
if (motorbike->pitch < -MOTORBIKE_PITCH_SLOWDOWN)
|
||||
motorbike->pitch = -MOTORBIKE_PITCH_SLOWDOWN;
|
||||
else
|
||||
if (motorbike->pitch > MOTORBIKE_PITCH_MAX)
|
||||
motorbike->pitch = MOTORBIKE_PITCH_MAX;
|
||||
|
||||
SoundEffect(SFX_TR4_BIKE_MOVING, &item->pos, (motorbike->pitch * 256) + 0x1000004);
|
||||
}
|
||||
|
@ -1375,23 +1472,23 @@ int MotorbikeControl(void)
|
|||
if (r1 >= ((hfl + hfr) / 2))
|
||||
{
|
||||
xrot = phd_atan(1000, hfm - r1);
|
||||
zrot = phd_atan(350, r2 - fl.y);
|
||||
zrot = phd_atan(BIKE_SIDE, r2 - fl.y);
|
||||
}
|
||||
else
|
||||
{
|
||||
xrot = phd_atan(500, hfm - item->pos.yPos);
|
||||
zrot = phd_atan(350, r2 - fl.y);
|
||||
xrot = phd_atan(BIKE_FRONT, hfm - item->pos.yPos);
|
||||
zrot = phd_atan(BIKE_SIDE, r2 - fl.y);
|
||||
}
|
||||
}
|
||||
else if (r1 >= ((hfl + hfr) / 2))
|
||||
{
|
||||
xrot = phd_atan(500, item->pos.yPos - r1);
|
||||
zrot = phd_atan(350, r2 - fl.y);
|
||||
xrot = phd_atan(BIKE_FRONT, item->pos.yPos - r1);
|
||||
zrot = phd_atan(BIKE_SIDE, r2 - fl.y);
|
||||
}
|
||||
else
|
||||
{
|
||||
xrot = phd_atan(125, newy - item->pos.yPos);
|
||||
zrot = phd_atan(350, r2 - fl.y);
|
||||
zrot = phd_atan(BIKE_SIDE, r2 - fl.y);
|
||||
}
|
||||
|
||||
item->pos.xRot += ((xrot - item->pos.xRot) / 4);
|
||||
|
@ -1404,24 +1501,27 @@ int MotorbikeControl(void)
|
|||
ItemNewRoom(Lara.Vehicle, room_number);
|
||||
ItemNewRoom(Lara.itemNumber, room_number);
|
||||
}
|
||||
|
||||
LaraItem->pos.xPos = item->pos.xPos;
|
||||
LaraItem->pos.yPos = item->pos.yPos;
|
||||
LaraItem->pos.zPos = item->pos.zPos;
|
||||
LaraItem->pos.yRot = item->pos.yRot;
|
||||
LaraItem->pos.xRot = item->pos.xRot;
|
||||
LaraItem->pos.zRot = item->pos.zRot;
|
||||
|
||||
AnimateMotorbike(item, collide, dead);
|
||||
AnimateItem(LaraItem);
|
||||
|
||||
item->animNumber = LaraItem->animNumber + (Objects[ID_MOTORBIKE].animIndex - Objects[ID_MOTORBIKE_LARA_ANIMS].animIndex);
|
||||
item->frameNumber = LaraItem->frameNumber + (g_Level.Anims[item->animNumber].frameBase - g_Level.Anims[LaraItem->animNumber].frameBase);
|
||||
|
||||
Camera.targetElevation = -5460;
|
||||
|
||||
if (motorbike->flags & 0x40) // IS_FALLING
|
||||
if (motorbike->flags & FL_FALLING)
|
||||
{
|
||||
if (item->pos.yPos == item->floor)
|
||||
{
|
||||
ExplodingDeath(Lara.itemNumber, -1, 256);
|
||||
LaraItem->hitPoints = 0;
|
||||
LaraItem->flags = ONESHOT;
|
||||
MotorBikeExplode(item);
|
||||
return 0;
|
||||
|
@ -1429,13 +1529,15 @@ int MotorbikeControl(void)
|
|||
}
|
||||
}
|
||||
|
||||
if (LaraItem->currentAnimState == BIKE_ENTER || LaraItem->currentAnimState == BIKE_EXIT)
|
||||
if (LaraItem->currentAnimState == BIKE_EXIT)
|
||||
{
|
||||
ExhaustStart = false;
|
||||
return MotorBikeCheckGetOff();
|
||||
MotorBikeCheckGetOff();
|
||||
return 1;
|
||||
}
|
||||
|
||||
return MotorBikeCheckGetOff();
|
||||
MotorBikeCheckGetOff();
|
||||
return 1;
|
||||
}
|
||||
|
||||
void DrawMotorbike(ITEM_INFO* item)
|
||||
|
|
|
@ -20,15 +20,17 @@ void ControlBodyPart(short fxNumber)
|
|||
}
|
||||
else
|
||||
{
|
||||
int modulus = 62 - fx->counter;
|
||||
int random = modulus <= 1 ? 0 : 2 * GetRandomControl() % modulus;
|
||||
if (fxNumber & 1)
|
||||
{
|
||||
fx->pos.zRot -= 2 * (GetRandomControl() % (62 - fx->counter));
|
||||
fx->pos.xRot += 2 * (GetRandomControl() % (62 - fx->counter));
|
||||
fx->pos.zRot -= random;
|
||||
fx->pos.xRot += random;
|
||||
}
|
||||
else
|
||||
{
|
||||
fx->pos.zRot += 2 * (GetRandomControl() % (62 - fx->counter));
|
||||
fx->pos.xRot -= 2 * (GetRandomControl() % (62 - fx->counter));
|
||||
fx->pos.zRot += random;
|
||||
fx->pos.xRot -= random;
|
||||
}
|
||||
if (--fx->counter < 8)
|
||||
fx->fallspeed += 2;
|
||||
|
|
173
TR5Main/Objects/TR5/Trap/tr5_explosion.cpp
Normal file
173
TR5Main/Objects/TR5/Trap/tr5_explosion.cpp
Normal file
|
@ -0,0 +1,173 @@
|
|||
#include "framework.h"
|
||||
#include "tr5_explosion.h"
|
||||
#include "level.h"
|
||||
#include "control.h"
|
||||
#include "sound.h"
|
||||
#include "effect2.h"
|
||||
#include "tomb4fx.h"
|
||||
#include "draw.h"
|
||||
#include "traps.h"
|
||||
#include "lara.h"
|
||||
#include "tr5_smashobject.h"
|
||||
#include "lara_one_gun.h"
|
||||
#include "switch.h"
|
||||
#include "debris.h"
|
||||
|
||||
void InitialiseExplosion(short itemNumber)
|
||||
{
|
||||
ITEM_INFO* item;
|
||||
|
||||
item = &g_Level.Items[itemNumber];
|
||||
if (item->triggerFlags >= 30000)
|
||||
{
|
||||
item->itemFlags[1] = 3;
|
||||
item->triggerFlags -= 30000;
|
||||
}
|
||||
else if (item->triggerFlags >= 20000)
|
||||
{
|
||||
item->itemFlags[1] = 2;
|
||||
item->triggerFlags -= 20000;
|
||||
}
|
||||
else if (item->triggerFlags >= 10000)
|
||||
{
|
||||
item->itemFlags[1] = 1;
|
||||
item->triggerFlags -= 10000;
|
||||
}
|
||||
|
||||
if (item->triggerFlags >= 1000)
|
||||
{
|
||||
item->itemFlags[3] = 1;
|
||||
item->triggerFlags -= 1000;
|
||||
}
|
||||
|
||||
item->itemFlags[2] = item->triggerFlags / 100;
|
||||
item->triggerFlags = 7 * (item->triggerFlags % 100);
|
||||
}
|
||||
|
||||
void ExplosionControl(short itemNumber)
|
||||
{
|
||||
ITEM_INFO* item;
|
||||
int flag, i, dx, dy, dz, distance;
|
||||
PHD_3DPOS pos;
|
||||
PHD_VECTOR vec;
|
||||
short triggerItems[8];
|
||||
|
||||
item = &g_Level.Items[itemNumber];
|
||||
if (TriggerActive(item))
|
||||
{
|
||||
item->flags |= IFLAG_INVISIBLE;
|
||||
if (item->itemFlags[0] < item->triggerFlags)
|
||||
{
|
||||
++item->itemFlags[0];
|
||||
}
|
||||
else if (item->itemFlags[0] == item->triggerFlags)
|
||||
{
|
||||
++item->itemFlags[0];
|
||||
if (g_Level.Rooms[item->roomNumber].flags & ENV_FLAG_WATER)
|
||||
{
|
||||
flag = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
flag = item->itemFlags[1] == 1 ? 2 : 0;
|
||||
}
|
||||
SoundEffect(SFX_EXPLOSION1, &item->pos, 25165828);
|
||||
SoundEffect(SFX_EXPLOSION2, &item->pos, 0);
|
||||
TriggerExplosionSparks(item->pos.xPos, item->pos.yPos, item->pos.zPos, 3, -2, flag, item->roomNumber);
|
||||
for (i = 0; i < item->itemFlags[2]; ++i)
|
||||
TriggerExplosionSparks(item->pos.xPos + (GetRandomControl() % 128 - 64) * item->itemFlags[2], item->pos.yPos + (GetRandomControl() % 128 - 64) * item->itemFlags[2], item->pos.zPos + (GetRandomControl() % 128 - 64) * item->itemFlags[2], 2, 0, i, item->roomNumber);
|
||||
pos.xPos = item->pos.xPos;
|
||||
pos.yPos = item->pos.yPos - 128;
|
||||
pos.zPos = item->pos.zPos;
|
||||
if (item->itemFlags[3])
|
||||
{
|
||||
if (flag == 2)
|
||||
TriggerShockwave(&pos, 48, 32 * item->itemFlags[2] + 304, 4 * item->itemFlags[2] + 96, 128, 96, 0, 24, 2048, 0);
|
||||
else
|
||||
TriggerShockwave(&pos, 48, 32 * item->itemFlags[2] + 304, 4 * item->itemFlags[2] + 96, 0, 96, 128, 24, 2048, 0);
|
||||
}
|
||||
else if (flag == 2)
|
||||
{
|
||||
vec.x = 0;
|
||||
vec.y = 0;
|
||||
vec.z = 0;
|
||||
GetLaraJointPosition(&vec, 0);
|
||||
dx = vec.x - item->pos.xPos;
|
||||
dy = vec.y - item->pos.yPos;
|
||||
dz = vec.z - item->pos.zPos;
|
||||
if (abs(dx) < 1024 && abs(dy) < 1024 && abs(dz) < 1024)
|
||||
{
|
||||
distance = sqrt(SQUARE(dx) + SQUARE(dy) + SQUARE(dz));
|
||||
if (distance < 2048)
|
||||
{
|
||||
LaraItem->hitPoints -= distance / 16;
|
||||
if (distance < 768)
|
||||
LaraBurn();
|
||||
}
|
||||
}
|
||||
}
|
||||
GetCollidedObjects(item, 2048, 1, CollidedItems, CollidedMeshes, 1);
|
||||
if (CollidedItems[0] || CollidedMeshes[0])
|
||||
{
|
||||
i = 0;
|
||||
while (CollidedItems[i])
|
||||
{
|
||||
if (CollidedItems[i]->objectNumber >= ID_SMASH_OBJECT1 && CollidedItems[i]->objectNumber <= ID_SMASH_OBJECT16)
|
||||
{
|
||||
TriggerExplosionSparks(CollidedItems[i]->pos.xPos, CollidedItems[i]->pos.yPos, CollidedItems[i]->pos.zPos, 3, -2, 0, CollidedItems[i]->roomNumber);
|
||||
CollidedItems[i]->pos.yPos -= 128;
|
||||
TriggerShockwave(&CollidedItems[i]->pos, 48, 304, 96, 0, 96, 128, 24, 0, 0);
|
||||
CollidedItems[i]->pos.yPos += 128;
|
||||
ExplodeItemNode(CollidedItems[i], 0, 0, 80);
|
||||
SmashObject(CollidedItems[i] - g_Level.Items.data());
|
||||
KillItem(CollidedItems[i] - g_Level.Items.data());
|
||||
}
|
||||
else if (CollidedItems[i]->objectNumber != ID_SWITCH_TYPE7 && CollidedItems[i]->objectNumber != ID_SWITCH_TYPE8)
|
||||
{
|
||||
if (Objects[CollidedItems[i]->objectNumber].intelligent)
|
||||
DoExplosiveDamageOnBaddie(CollidedItems[i], item, WEAPON_GRENADE_LAUNCHER);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* @FIXME This calls CrossbowHitSwitchType78() */
|
||||
}
|
||||
++i;
|
||||
}
|
||||
i = 0;
|
||||
while (CollidedMeshes[i])
|
||||
{
|
||||
if (CollidedMeshes[i]->staticNumber >= 50 && CollidedMeshes[i]->staticNumber < 58)
|
||||
{
|
||||
TriggerExplosionSparks(CollidedMeshes[i]->x, CollidedMeshes[i]->y, CollidedMeshes[i]->z, 3, -2, 0, item->roomNumber);
|
||||
CollidedMeshes[i]->y -= 128;
|
||||
TriggerShockwave((PHD_3DPOS *) &CollidedMeshes[i]->x, 40, 176, 64, 0, 96, 128, 16, 0, 0);
|
||||
CollidedMeshes[i]->y += 128;
|
||||
SoundEffect(ShatterSounds[CurrentLevel - 5][CollidedMeshes[i]->staticNumber], (PHD_3DPOS *) &CollidedMeshes[i]->x, 0);
|
||||
ShatterObject(NULL, CollidedMeshes[i], -128, item->roomNumber, 0);
|
||||
SmashedMeshRoom[SmashedMeshCount] = item->roomNumber;
|
||||
SmashedMesh[SmashedMeshCount] = CollidedMeshes[i];
|
||||
++SmashedMeshCount;
|
||||
CollidedMeshes[i]->flags &= ~0x1;
|
||||
}
|
||||
++i;
|
||||
}
|
||||
AlertNearbyGuards(item);
|
||||
}
|
||||
if (item->itemFlags[1] >= 2)
|
||||
{
|
||||
if (item->itemFlags[1] == 3)
|
||||
{
|
||||
for (i = GetSwitchTrigger(item, triggerItems, 1); i > 0; --i)
|
||||
{
|
||||
g_Level.Items[triggerItems[i - 1]].itemFlags[0] = 0;
|
||||
}
|
||||
item->itemFlags[0] = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
KillItem(itemNumber);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
4
TR5Main/Objects/TR5/Trap/tr5_explosion.h
Normal file
4
TR5Main/Objects/TR5/Trap/tr5_explosion.h
Normal file
|
@ -0,0 +1,4 @@
|
|||
#pragma once
|
||||
|
||||
void InitialiseExplosion(short itemNumber);
|
||||
void ExplosionControl(short itemNumber);
|
|
@ -47,6 +47,7 @@
|
|||
#include "tr5_romehammer.h"
|
||||
#include "tr5_fallingceiling.h"
|
||||
#include "tr5_rollingball.h"
|
||||
#include "tr5_explosion.h"
|
||||
/// switch
|
||||
|
||||
/// shatter
|
||||
|
@ -1166,6 +1167,16 @@ static void StartTrap(OBJECT_INFO *obj)
|
|||
obj->saveFlags = true;
|
||||
obj->savePosition = true;
|
||||
}
|
||||
|
||||
obj = &Objects[ID_EXPLOSION];
|
||||
if (obj->loaded)
|
||||
{
|
||||
obj->initialise = InitialiseExplosion;
|
||||
obj->control = ExplosionControl;
|
||||
obj->drawRoutine = nullptr;
|
||||
obj->saveFlags = true;
|
||||
obj->usingDrawAnimatingItem = false;
|
||||
}
|
||||
}
|
||||
|
||||
static void StartSwitch(OBJECT_INFO *obj)
|
||||
|
|
|
@ -9,11 +9,13 @@
|
|||
#include "lara.h"
|
||||
#include "sphere.h"
|
||||
#include "GameFlowScript.h"
|
||||
#include <Renderer\RenderView\RenderView.h>
|
||||
#include "Renderer\RenderView\RenderView.h"
|
||||
#include "quad.h"
|
||||
#include "rubberboat.h"
|
||||
#include "upv.h"
|
||||
#include "biggun.h"
|
||||
#include "jeep.h"
|
||||
#include "motorbike.h"
|
||||
#include <algorithm>
|
||||
|
||||
extern GameConfiguration g_Configuration;
|
||||
|
@ -286,15 +288,44 @@ namespace T5M::Renderer
|
|||
if (item->objectNumber == ID_QUAD)
|
||||
{
|
||||
QUAD_INFO* quad = (QUAD_INFO*)item->data;
|
||||
if (j == 3 || j == 4)
|
||||
{
|
||||
if (j == 3 || j == 4) {
|
||||
currentBone->ExtraRotation.x = TO_RAD(quad->rearRot);
|
||||
}
|
||||
else if (j == 6 || j == 7)
|
||||
{
|
||||
else if (j == 6 || j == 7) {
|
||||
currentBone->ExtraRotation.x = TO_RAD(quad->frontRot);
|
||||
}
|
||||
}
|
||||
else if (item->objectNumber == ID_JEEP) {
|
||||
JEEP_INFO* jeep = (JEEP_INFO*)item->data;
|
||||
switch (j) {
|
||||
case 9:
|
||||
currentBone->ExtraRotation.x = TO_RAD(jeep->rot1);
|
||||
break;
|
||||
case 10:
|
||||
currentBone->ExtraRotation.x = TO_RAD(jeep->rot2);
|
||||
|
||||
break;
|
||||
case 12:
|
||||
currentBone->ExtraRotation.x = TO_RAD(jeep->rot3);
|
||||
|
||||
break;
|
||||
case 13:
|
||||
currentBone->ExtraRotation.x = TO_RAD(jeep->rot4);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (item->objectNumber == ID_MOTORBIKE) {
|
||||
MOTORBIKE_INFO* bike = (MOTORBIKE_INFO*)item->data;
|
||||
switch (j) {
|
||||
case 2:
|
||||
case 4:
|
||||
currentBone->ExtraRotation.x = TO_RAD(bike->wheelRight);
|
||||
break;
|
||||
case 10:
|
||||
currentBone->ExtraRotation.x = TO_RAD(bike->wheelLeft);
|
||||
}
|
||||
}
|
||||
else if (item->objectNumber == ID_RUBBER_BOAT)
|
||||
{
|
||||
RUBBER_BOAT_INFO* boat = (RUBBER_BOAT_INFO*)item->data;
|
||||
|
@ -353,8 +384,7 @@ namespace T5M::Renderer
|
|||
itemToDraw->DoneAnimations = true;
|
||||
}
|
||||
|
||||
void Renderer11::updateItemsAnimations(RenderView& view)
|
||||
{
|
||||
void Renderer11::updateItemsAnimations(RenderView& view) {
|
||||
Matrix translation;
|
||||
Matrix rotation;
|
||||
|
||||
|
@ -372,8 +402,7 @@ namespace T5M::Renderer
|
|||
}
|
||||
}
|
||||
|
||||
void Renderer11::fromTrAngle(Matrix *matrix, short *frameptr, int index)
|
||||
{
|
||||
void Renderer11::fromTrAngle(Matrix *matrix, short *frameptr, int index) {
|
||||
short *ptr = &frameptr[0];
|
||||
|
||||
ptr += 9;
|
||||
|
@ -417,8 +446,7 @@ namespace T5M::Renderer
|
|||
}
|
||||
}
|
||||
|
||||
void Renderer11::buildHierarchyRecursive(RendererObject *obj, RendererBone *node, RendererBone *parentNode)
|
||||
{
|
||||
void Renderer11::buildHierarchyRecursive(RendererObject *obj, RendererBone *node, RendererBone *parentNode) {
|
||||
node->GlobalTransform = node->Transform * parentNode->GlobalTransform;
|
||||
obj->BindPoseTransforms[node->Index] = node->GlobalTransform;
|
||||
obj->Skeleton->GlobalTranslation = Vector3(0.0f, 0.0f, 0.0f);
|
||||
|
@ -430,8 +458,7 @@ namespace T5M::Renderer
|
|||
}
|
||||
}
|
||||
|
||||
void Renderer11::buildHierarchy(RendererObject *obj)
|
||||
{
|
||||
void Renderer11::buildHierarchy(RendererObject *obj) {
|
||||
obj->Skeleton->GlobalTransform = obj->Skeleton->Transform;
|
||||
obj->BindPoseTransforms[obj->Skeleton->Index] = obj->Skeleton->GlobalTransform;
|
||||
obj->Skeleton->GlobalTranslation = Vector3(0.0f, 0.0f, 0.0f);
|
||||
|
@ -442,8 +469,7 @@ namespace T5M::Renderer
|
|||
}
|
||||
}
|
||||
|
||||
RendererMesh *Renderer11::getRendererMeshFromTrMesh(RendererObject *obj, MESH *meshPtr, short boneIndex, int isJoints, int isHairs)
|
||||
{
|
||||
RendererMesh *Renderer11::getRendererMeshFromTrMesh(RendererObject *obj, MESH *meshPtr, short boneIndex, int isJoints, int isHairs) {
|
||||
RendererMesh *mesh = new RendererMesh();
|
||||
|
||||
mesh->Sphere = meshPtr->sphere;
|
||||
|
|
|
@ -1801,8 +1801,10 @@ namespace T5M::Renderer
|
|||
m_context->ClearDepthStencilView(m_depthStencilView, D3D11_CLEAR_STENCIL | D3D11_CLEAR_DEPTH, 1.0f, 0);
|
||||
|
||||
renderInventoryScene(m_backBufferRTV, m_depthStencilView, nullptr);
|
||||
#if _DEBUG
|
||||
drawString(0, 0, commit.c_str(), D3DCOLOR_ARGB(255, 255,255, 255), 0);
|
||||
drawAllStrings();
|
||||
#endif
|
||||
m_swapChain->Present(0, 0);
|
||||
}
|
||||
|
||||
|
|
|
@ -160,7 +160,7 @@ int Key(int number)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int S_UpdateInput()// (F)
|
||||
int S_UpdateInput()
|
||||
{
|
||||
DI_ReadKeyboard(KeyMap);
|
||||
|
||||
|
|
|
@ -124,21 +124,20 @@ int LoadItems()
|
|||
InitialiseItem(i);
|
||||
}
|
||||
|
||||
for (int r = 0; r < g_Level.Rooms.size(); r++)
|
||||
for (auto& r : g_Level.Rooms)
|
||||
{
|
||||
MESH_INFO* mesh = g_Level.Rooms[r].mesh.data();
|
||||
|
||||
for (int m = 0; m < g_Level.Rooms[r].mesh.size(); m++)
|
||||
for (const auto& mesh : r.mesh)
|
||||
{
|
||||
FLOOR_INFO* floor = &g_Level.Rooms[r].floor[((mesh->z - g_Level.Rooms[r].z) / 1024) +
|
||||
g_Level.Rooms[r].xSize * ((mesh->x - g_Level.Rooms[r].x) / 1024)];
|
||||
FLOOR_INFO* floor = &r.floor[((mesh.z - r.z) / 1024) + r.xSize * ((mesh.x - r.x) / 1024)];
|
||||
|
||||
if (!(g_Level.Boxes[floor->box].flags & BLOCKED)
|
||||
&& !(CurrentLevel == 5 && (r == 19 || r == 23 || r == 16)))
|
||||
if (floor->box == NO_BOX)
|
||||
continue;
|
||||
|
||||
if (!(g_Level.Boxes[floor->box].flags & BLOCKED))
|
||||
{
|
||||
int fl = floor->floor * 4;
|
||||
STATIC_INFO* st = &StaticObjects[mesh->staticNumber];
|
||||
if (fl <= mesh->y - st->collisionBox.Y2 + 512 && fl < mesh->y - st->collisionBox.Y1)
|
||||
STATIC_INFO* st = &StaticObjects[mesh.staticNumber];
|
||||
if (fl <= mesh.y - st->collisionBox.Y2 + 512 && fl < mesh.y - st->collisionBox.Y1)
|
||||
{
|
||||
if (st->collisionBox.X1 == 0 || st->collisionBox.X2 == 0 ||
|
||||
st->collisionBox.Z1 == 0 || st->collisionBox.Z2 == 0 ||
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#include <fcntl.h>
|
||||
#include <process.h>
|
||||
#include <corecrt_io.h>
|
||||
#include <iostream>
|
||||
using namespace T5M::Renderer;
|
||||
using std::exception;
|
||||
using std::string;
|
||||
|
@ -32,7 +33,6 @@ extern int IsLevelLoading;
|
|||
extern GameFlow* g_GameFlow;
|
||||
extern GameScript* g_GameScript;
|
||||
extern GameConfiguration g_Configuration;
|
||||
DWORD DebugConsoleThreadID;
|
||||
DWORD MainThreadID;
|
||||
bool BlockAllInput = true;
|
||||
int skipLoop = -1;
|
||||
|
@ -95,6 +95,7 @@ void CALLBACK HandleWmCommand(unsigned short wParam)
|
|||
}
|
||||
|
||||
void getCurrentCommit() {
|
||||
#if _DEBUG
|
||||
LPSTR cmdLine = {TEXT("git.exe log -1 --oneline")};
|
||||
|
||||
SECURITY_ATTRIBUTES sa = {0};
|
||||
|
@ -145,6 +146,7 @@ void getCurrentCommit() {
|
|||
CloseHandle(hStdOutWr);
|
||||
CloseHandle(hStdErrRd);
|
||||
CloseHandle(hStdErrWr);
|
||||
#endif
|
||||
}
|
||||
|
||||
void HandleScriptMessage(WPARAM wParam)
|
||||
|
@ -188,12 +190,6 @@ void HandleScriptMessage(WPARAM wParam)
|
|||
|
||||
LRESULT CALLBACK WinAppProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
if (msg == WM_USER + 0)
|
||||
{
|
||||
HandleScriptMessage(wParam);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Disables ALT + SPACE
|
||||
if (msg == WM_SYSCOMMAND && wParam == SC_KEYMENU)
|
||||
return 0;
|
||||
|
@ -385,44 +381,6 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
|
|||
UpdateWindow(WindowsHandle);
|
||||
ShowWindow(WindowsHandle, nShowCmd);
|
||||
|
||||
//Create debug script terminal
|
||||
if (Debug)
|
||||
{
|
||||
MainThreadID = GetWindowThreadProcessId(WindowsHandle, NULL);
|
||||
AllocConsole();
|
||||
HANDLE handle_in = GetStdHandle(STD_INPUT_HANDLE);
|
||||
DWORD consoleModeIn;
|
||||
int hCrt = _open_osfhandle((long)handle_in, _O_BINARY);
|
||||
FILE* hf_in = _fdopen(hCrt, "r");
|
||||
setvbuf(hf_in, NULL, _IONBF, 512);
|
||||
GetConsoleMode(handle_in, &consoleModeIn);
|
||||
consoleModeIn = consoleModeIn | ENABLE_LINE_INPUT;
|
||||
SetConsoleMode(handle_in, consoleModeIn);
|
||||
freopen_s(&hf_in, "CONIN$", "r", stdin);
|
||||
|
||||
HANDLE ConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
|
||||
int SystemOutput = _open_osfhandle(intptr_t(ConsoleOutput), _O_TEXT);
|
||||
FILE* COutputHandle = _fdopen(SystemOutput, "w");
|
||||
freopen_s(&COutputHandle, "CONOUT$", "w", stdout);
|
||||
|
||||
LPTHREAD_START_ROUTINE readConsoleLoop = [](LPVOID params) -> DWORD {
|
||||
DWORD read;
|
||||
CHAR buffer[4096];
|
||||
while (true)
|
||||
{
|
||||
BOOL success = ReadFile(params, &buffer, 4096, &read, NULL);
|
||||
if (success && read > 2)
|
||||
{
|
||||
//Only send the actual written message minus \r\n
|
||||
string msg(buffer, read-2);
|
||||
SendMessage(WindowsHandle, WM_USER, (WPARAM)&msg, NULL);
|
||||
}
|
||||
};
|
||||
return 0;
|
||||
};
|
||||
CreateThread(NULL, 0, readConsoleLoop, handle_in, 0, &DebugConsoleThreadID);
|
||||
}
|
||||
|
||||
SetCursor(NULL);
|
||||
ShowCursor(FALSE);
|
||||
hAccTable = LoadAccelerators(hInstance, (LPCSTR)0x65);
|
||||
|
|
|
@ -1,31 +0,0 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 15
|
||||
VisualStudioVersion = 15.0.27428.2037
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TR5Main", "TR5Main\TR5Main.vcxproj", "{15AB0220-541C-4DA1-94EB-ED3C47E4582E}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{15AB0220-541C-4DA1-94EB-ED3C47E4582E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{15AB0220-541C-4DA1-94EB-ED3C47E4582E}.Debug|x64.Build.0 = Debug|x64
|
||||
{15AB0220-541C-4DA1-94EB-ED3C47E4582E}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{15AB0220-541C-4DA1-94EB-ED3C47E4582E}.Debug|x86.Build.0 = Debug|Win32
|
||||
{15AB0220-541C-4DA1-94EB-ED3C47E4582E}.Release|x64.ActiveCfg = Release|x64
|
||||
{15AB0220-541C-4DA1-94EB-ED3C47E4582E}.Release|x64.Build.0 = Release|x64
|
||||
{15AB0220-541C-4DA1-94EB-ED3C47E4582E}.Release|x86.ActiveCfg = Release|Win32
|
||||
{15AB0220-541C-4DA1-94EB-ED3C47E4582E}.Release|x86.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {1689BEF8-E05F-46C0-AFCA-E04DCB4EF2B2}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
|
@ -15,7 +15,7 @@
|
|||
<ProjectGuid>{15AB0220-541C-4DA1-94EB-ED3C47E4582E}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>TR5Main</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
||||
<WindowsTargetPlatformVersion>10.0.18362.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
|
@ -26,10 +26,9 @@
|
|||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
|
@ -39,7 +38,7 @@
|
|||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
|
@ -52,11 +51,12 @@
|
|||
<TargetExt>.exe</TargetExt>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<OutDir>$(ProjectDir)..\Build\</OutDir>
|
||||
<ExecutablePath>$(ExecutablePath);$(DXSDK_DIR)Utilities\bin\x86</ExecutablePath>
|
||||
<IncludePath>$(SolutionDir)TR5Main\Libs\bass;$(SolutionDir)TR5Main\Libs\lua;$(SolutionDir)TR5Main\Libs\sol;$(SolutionDir)\TR5Main\Libs\zlib;$(IncludePath)</IncludePath>
|
||||
<LibraryPath>$(SolutionDir)TR5Main\Libs\zlib\dll32;$(LibraryPath);$(DXSDK_DIR)Lib\x86;$(SolutionDir)TR5Main\Libs\bass;$(SolutionDir)TR5Main\Libs\lua</LibraryPath>
|
||||
<OutDir>$(ProjectDir)..\Build\</OutDir>
|
||||
<LibraryPath>$(SolutionDir)TR5Main\Libs\zlib\dll32;$(LibraryPath);$(DXSDK_DIR)Lib\x86;$(SolutionDir)TR5Main\Libs\bass;$(SolutionDir)TR5Main\Libs\lua;$(SolutionDir)TR5Main\Libs\boost\libs</LibraryPath>
|
||||
<TargetExt>.exe</TargetExt>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
|
@ -94,33 +94,43 @@ xcopy /Y "$(ProjectDir)Scripting\Scripts\*.lua" "$(TargetDir)\Scripts"</Command>
|
|||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>EnableAllWarnings</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_RELEASE;TR5MAIN_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)TR5Main;$(SolutionDir)TR5Main\Game;$(SolutionDir)TR5Main\Game\Lara;$(SolutionDir)TR5Main\Global;$(SolutionDir)TR5Main\Objects;$(SolutionDir)TR5Main\Objects\Utils;$(SolutionDir)TR5Main\Objects\Effects;$(SolutionDir)TR5Main\Objects\Generic;$(SolutionDir)TR5Main\Objects\Generic\Object;$(SolutionDir)TR5Main\Objects\TR1;$(SolutionDir)TR5Main\Objects\TR1\Entity;$(SolutionDir)TR5Main\Objects\TR1\Trap;$(SolutionDir)TR5Main\Objects\TR2;$(SolutionDir)TR5Main\Objects\TR2\Entity;$(SolutionDir)TR5Main\Objects\TR2\Trap;$(SolutionDir)TR5Main\Objects\TR2\Vehicles;$(SolutionDir)TR5Main\Objects\TR3;$(SolutionDir)TR5Main\Objects\TR3\Entity;$(SolutionDir)TR5Main\Objects\TR3\Trap;$(SolutionDir)TR5Main\Objects\TR3\Vehicles;$(SolutionDir)TR5Main\Objects\TR4;$(SolutionDir)TR5Main\Objects\TR4\Entity;$(SolutionDir)TR5Main\Objects\TR4\Trap;$(SolutionDir)TR5Main\Objects\TR4\Object;$(SolutionDir)TR5Main\Objects\TR4\Floor;$(SolutionDir)TR5Main\Objects\TR4\Switch;$(SolutionDir)TR5Main\Objects\TR4\Vehicles;$(SolutionDir)TR5Main\Objects\TR5;$(SolutionDir)TR5Main\Objects\TR5\Entity;$(SolutionDir)TR5Main\Objects\TR5\Trap;$(SolutionDir)TR5Main\Objects\TR5\Light;$(SolutionDir)TR5Main\Objects\TR5\Emitter;$(SolutionDir)TR5Main\Objects\TR5\Shatter;$(SolutionDir)TR5Main\Objects\TR5\Switch;$(SolutionDir)TR5Main\Objects\TR5\Object;$(SolutionDir)TR5Main\Objects\Vehicles;$(SolutionDir)TR5Main\Renderer;$(SolutionDir)TR5Main\Scripting;$(SolutionDir)TR5Main\Specific;$(SolutionDir)TR5Main\Specific\IO;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<WarningLevel>TurnOffAllWarnings</WarningLevel>
|
||||
<SDLCheck>false</SDLCheck>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;TR5MAIN_EXPORTS;_WINDOWS;_USRDLL;NOMINMAX;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>false</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)TR5Main;$(SolutionDir)TR5Main\Game;$(SolutionDir)TR5Main\Game\Lara;$(SolutionDir)TR5Main\Objects;$(SolutionDir)TR5Main\Objects\Utils;$(SolutionDir)TR5Main\Objects\Effects;$(SolutionDir)TR5Main\Objects\Generic;$(SolutionDir)TR5Main\Objects\Generic\Object;$(SolutionDir)TR5Main\Objects\TR1;$(SolutionDir)TR5Main\Objects\TR1\Entity;$(SolutionDir)TR5Main\Objects\TR1\Trap;$(SolutionDir)TR5Main\Objects\TR2;$(SolutionDir)TR5Main\Objects\TR2\Entity;$(SolutionDir)TR5Main\Objects\TR2\Trap;$(SolutionDir)TR5Main\Objects\TR2\Vehicles;$(SolutionDir)TR5Main\Objects\TR3;$(SolutionDir)TR5Main\Objects\TR3\Entity;$(SolutionDir)TR5Main\Objects\TR3\Trap;$(SolutionDir)TR5Main\Objects\TR3\Vehicles;$(SolutionDir)TR5Main\Objects\TR4;$(SolutionDir)TR5Main\Objects\TR4\Entity;$(SolutionDir)TR5Main\Objects\TR4\Trap;$(SolutionDir)TR5Main\Objects\TR4\Object;$(SolutionDir)TR5Main\Objects\TR4\Floor;$(SolutionDir)TR5Main\Objects\TR4\Switch;$(SolutionDir)TR5Main\Objects\TR4\Vehicles;$(SolutionDir)TR5Main\Objects\TR5;$(SolutionDir)TR5Main\Objects\TR5\Entity;$(SolutionDir)TR5Main\Objects\TR5\Trap;$(SolutionDir)TR5Main\Objects\TR5\Light;$(SolutionDir)TR5Main\Objects\TR5\Emitter;$(SolutionDir)TR5Main\Objects\TR5\Shatter;$(SolutionDir)TR5Main\Objects\TR5\Switch;$(SolutionDir)TR5Main\Objects\TR5\Object;$(SolutionDir)TR5Main\Objects\Vehicles;$(SolutionDir)TR5Main\Renderer;$(SolutionDir)TR5Main\Scripting;$(SolutionDir)TR5Main\Specific;$(SolutionDir)TR5Main\Specific\IO;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<IgnoreStandardIncludePath>false</IgnoreStandardIncludePath>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<TreatWarningAsError>true</TreatWarningAsError>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<LanguageStandard>stdcpplatest</LanguageStandard>
|
||||
<PrecompiledHeaderFile>framework.h</PrecompiledHeaderFile>
|
||||
<DebugInformationFormat>None</DebugInformationFormat>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<SupportJustMyCode>false</SupportJustMyCode>
|
||||
<EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
|
||||
<FloatingPointModel>Fast</FloatingPointModel>
|
||||
<StringPooling>true</StringPooling>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>C:\Program Files %28x86%29\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\lib\onecore\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>comctl32.lib;lua53.lib;bass.lib;bassmix.lib;bass_fx.lib;dxerr.lib;D3DCompiler.lib;dxgi.lib;dxguid.lib;d3d11.lib;d3dx11.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>comctl32.lib;lua53.lib;bass.lib;bassmix.lib;bass_fx.lib;D3DCompiler.lib;dxgi.lib;dxguid.lib;d3d11.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
<LargeAddressAware>true</LargeAddressAware>
|
||||
</Link>
|
||||
<PostBuildEvent>
|
||||
<Command>md "$(TargetDir)\Shaders"
|
||||
xcopy /Y "$(ProjectDir)Shaders\*.fx" "$(TargetDir)\Shaders"
|
||||
xcopy /Y "$(ProjectDir)Shaders\*.*" "$(TargetDir)\Shaders"
|
||||
xcopy /Y "$(ProjectDir)Shaders\HUD\*.hlsl" "$(TargetDir)\Shaders\HUD\"
|
||||
md "$(TargetDir)\Scripts"
|
||||
xcopy /Y "$(ProjectDir)Scripting\Scripts\*.lua" "$(TargetDir)\Scripts"</Command>
|
||||
</PostBuildEvent>
|
||||
|
@ -172,6 +182,7 @@ xcopy /Y "$(ProjectDir)Scripting\Scripts\*.lua" "$(TargetDir)\Scripts"</Command>
|
|||
<ClInclude Include="Objects\TR4\Trap\tr4_hammer.h" />
|
||||
<ClInclude Include="Objects\TR4\Trap\tr4_joby_spikes.h" />
|
||||
<ClInclude Include="Objects\TR4\Trap\tr4_moving_blade.h" />
|
||||
<ClInclude Include="Objects\TR5\Trap\tr5_explosion.h" />
|
||||
<ClInclude Include="Renderer\ConstantBuffers\SpriteBuffer.h" />
|
||||
<ClInclude Include="Renderer\ConstantBuffer\ConstantBuffer.h" />
|
||||
<ClInclude Include="Renderer\Quad\RenderQuad.h" />
|
||||
|
@ -474,8 +485,10 @@ xcopy /Y "$(ProjectDir)Scripting\Scripts\*.lua" "$(TargetDir)\Scripts"</Command>
|
|||
<ClCompile Include="Objects\TR4\Trap\tr4_hammer.cpp" />
|
||||
<ClCompile Include="Objects\TR4\Trap\tr4_joby_spikes.cpp" />
|
||||
<ClCompile Include="Objects\TR4\Trap\tr4_moving_blade.cpp" />
|
||||
<ClCompile Include="Objects\TR5\Trap\tr5_explosion.cpp" />
|
||||
<ClCompile Include="Renderer\Quad\RenderQuad.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Use</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Objects\Effects\tr4_locusts.cpp" />
|
||||
<ClCompile Include="Objects\Effects\tr5_electricity.cpp" />
|
||||
|
@ -611,6 +624,7 @@ xcopy /Y "$(ProjectDir)Scripting\Scripts\*.lua" "$(TargetDir)\Scripts"</Command>
|
|||
<ClCompile Include="Renderer\Frustum.cpp" />
|
||||
<ClCompile Include="Renderer\IndexBuffer\IndexBuffer.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Renderer\Render11Helper.cpp" />
|
||||
<ClCompile Include="Renderer\Renderer11Compatibility.cpp" />
|
||||
|
@ -708,10 +722,10 @@ xcopy /Y "$(ProjectDir)Scripting\Scripts\*.lua" "$(TargetDir)\Scripts"</Command>
|
|||
<None Include="RuleSet.ruleset" />
|
||||
<None Include="Shaders\CameraMatrixBuffer.hlsli">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<FileType>Text</FileType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Text</FileType>
|
||||
</None>
|
||||
<None Include="Shaders\VertexInput.hlsli" />
|
||||
</ItemGroup>
|
||||
|
@ -721,14 +735,18 @@ xcopy /Y "$(ProjectDir)Scripting\Scripts\*.lua" "$(TargetDir)\Scripts"</Command>
|
|||
<ItemGroup>
|
||||
<None Include="Shaders\DX11\Test.fx">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Shaders\DX11_Test.fx">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
@ -738,241 +756,245 @@ xcopy /Y "$(ProjectDir)Scripting\Scripts\*.lua" "$(TargetDir)\Scripts"</Command>
|
|||
<ItemGroup>
|
||||
<None Include="Shaders\Fxaa3_11.fxh">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
</None>
|
||||
<None Include="Shaders\HUD\DX11_PS_HUD.hlsl">
|
||||
<EntryPointName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">PS</EntryPointName>
|
||||
<EntryPointName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">PS</EntryPointName>
|
||||
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Pixel</ShaderType>
|
||||
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Pixel</ShaderType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
</None>
|
||||
<None Include="Shaders\HUD\DX11_PS_HUDBar.hlsl">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
<EntryPointName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">PSColored</EntryPointName>
|
||||
<EntryPointName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">PSColored</EntryPointName>
|
||||
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">2.0</ShaderModel>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">2.0</ShaderModel>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Shaders\HUD\DX11_VS_HUD.hlsl">
|
||||
<FileType>Document</FileType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Shaders\Basic.fx">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
</None>
|
||||
<None Include="Shaders\ClearGBuffer.fx">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
</None>
|
||||
<None Include="Shaders\CombineFinal.fx">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
</None>
|
||||
<None Include="Shaders\Depth.fx">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
</None>
|
||||
<None Include="Shaders\DX11_AmbientCubeMap.fx">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
</None>
|
||||
<None Include="Shaders\DX11_FinalPass.fx">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
</None>
|
||||
<None Include="Shaders\DX11_FullscreenQuad.fx">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
</None>
|
||||
<None Include="Shaders\DX11_Hairs.fx">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
</None>
|
||||
<None Include="Shaders\DX11_Inventory.fx">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
</None>
|
||||
<None Include="Shaders\DX11_Items.fx">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
</None>
|
||||
<None Include="Shaders\DX11_Rooms.fx">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
</None>
|
||||
<None Include="Shaders\DX11_ShadowMap.fx">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
</None>
|
||||
<None Include="Shaders\DX11_Sky.fx">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
</None>
|
||||
<None Include="Shaders\DX11_Solid.fx">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
</None>
|
||||
<None Include="Shaders\DX11_Sprites.fx">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
</None>
|
||||
<None Include="Shaders\DX11_Statics.fx">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
</None>
|
||||
<None Include="Shaders\FillGBuffer.fx">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
</None>
|
||||
<None Include="Shaders\FinalPass.fx">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
</None>
|
||||
<None Include="Shaders\FXAA.fx">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
</None>
|
||||
<None Include="Shaders\Horizon.fx">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
</None>
|
||||
<None Include="Shaders\Items.fx">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
</None>
|
||||
<None Include="Shaders\Light.fx">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
</None>
|
||||
<None Include="Shaders\Rain.fx">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
</None>
|
||||
<None Include="Shaders\ReconstructZBuffer.fx">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
</None>
|
||||
<None Include="Shaders\Rooms.fx">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
</None>
|
||||
<None Include="Shaders\Shader.fx">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
</None>
|
||||
<None Include="Shaders\Sprites.fx">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
</None>
|
||||
<None Include="Shaders\SSAO.fx">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
</None>
|
||||
<None Include="Shaders\Transparent.fx">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
|
||||
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
|
||||
<FileType>Document</FileType>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
|
|
|
@ -933,6 +933,9 @@
|
|||
<ClInclude Include="Objects\TR1\Entity\tr1_centaur.h">
|
||||
<Filter>File di intestazione</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Objects\TR5\Trap\tr5_explosion.h">
|
||||
<Filter>File di intestazione</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="Game\box.cpp">
|
||||
|
@ -1721,6 +1724,9 @@
|
|||
<ClCompile Include="Objects\TR1\Entity\tr1_centaur.cpp">
|
||||
<Filter>File di origine</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Objects\TR5\Trap\tr5_explosion.cpp">
|
||||
<Filter>File di origine</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="packages.config" />
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue