CPlayer::CheckGroundGone

This commit is contained in:
krystalgamer 2024-08-08 16:58:35 +02:00
parent 1f12f81e40
commit 5c02e6615e
9 changed files with 97 additions and 29 deletions

View File

@ -75,7 +75,7 @@ void CCop::Acknowledge(void)
// @Ok
INLINE void CCop::CheckToShoot(i32 a2, i32 a3)
{
if ( MechList->field_57C && !gCopList && !MechList->field_E48)
if ( MechList->field_57C && !gCopList && !MechList->mHeldObject)
{
if ( ((this->field_218 & 0x800) && a2 < this->field_37C)
||

View File

@ -11,6 +11,12 @@ extern const char *gObjFile;
extern u8 gObjFileRegion;
extern CBody* EnvironmentalObjectList;
// @SMALLTODO
void CManipOb::Drop(CVector*)
{
printf("void CManipOb::Drop(CVector*)");
}
// @Ok
CManipOb::~CManipOb(void)
{

View File

@ -18,6 +18,7 @@ class CManipOb : public CBody
EXPORT void TurnOffShadow(void);
EXPORT void SendPulse(void);
EXPORT void Pickup(void);
EXPORT void Drop(CVector*);
EXPORT CManipOb(u16*, i32);
EXPORT virtual ~CManipOb(void);

10
ob.cpp
View File

@ -377,9 +377,10 @@ CBody::CBody()
this->field_95 = 0;
this->field_96 = 0;
this->field_A8 = 0;
this->field_AA = 0;
this->field_AC = 0;
this->field_A8.vx = 0;
this->field_A8.vy = 0;
this->field_A8.vz = 0;
this->bodyVector.vx = 0;
this->bodyVector.vy = 0;
this->bodyVector.vz = 0;
@ -751,8 +752,6 @@ void validate_CBody(void){
VALIDATE(CBody, field_A4, 0xA4);
VALIDATE(CBody, field_A8, 0xA8);
VALIDATE(CBody, field_AA, 0xAA);
VALIDATE(CBody, field_AC, 0xAC);
VALIDATE(CBody, bodyVector, 0xB8);
@ -772,6 +771,7 @@ void validate_CBody(void){
VALIDATE(CBody, field_DE, 0xDE);
VALIDATE(CBody, field_E0, 0xE0);
VALIDATE(CBody, field_E2, 0xE2);
VALIDATE(CBody, field_E4, 0xE4);

6
ob.h
View File

@ -109,9 +109,7 @@ public:
int field_9C;
int field_A0;
int field_A4;
__int16 field_A8;
__int16 field_AA;
__int16 field_AC;
CSVector field_A8;
unsigned char padAfterAC[0xB8-0xAC-2];
@ -133,8 +131,8 @@ public:
unsigned __int16 field_DE;
unsigned char stopPPPad[0x2];
i16 field_E0;
__int16 field_E2;
u16 field_E4;

View File

@ -361,7 +361,7 @@ void CRhino::FuckUpSomeBarrels(void)
{
if (cur->field_38 == 401)
{
if (Utils_CrapDist(this->mPos, cur->mPos) < 0x2BC && cur != MechList->field_E48)
if (Utils_CrapDist(this->mPos, cur->mPos) < 0x2BC && cur != MechList->mHeldObject)
{
reinterpret_cast<CBaddy*>(cur)->PlayerIsVisible();
barrels++;

View File

@ -161,10 +161,50 @@ void CPlayer::CheckForwards(bool)
printf("CPlayer::CheckForwards(bool)");
}
// @SMALLTODO
void CPlayer::CheckGroundGone(void)
// @Ok
i32 CPlayer::CheckGroundGone(void)
{
printf("CPlayer::CheckGroundGone(void)");
if (!(this->field_E0 & 2))
{
if ( this->field_EA4 )
this->field_EA4--;
if (this->field_EA4)
return 0;
if ( this->mHeldObject )
{
CVector v11 = (4 * this->field_C84);
this->mHeldObject->Drop(&v11);
this->mHeldObject = 0;
}
this->field_E38 = this->mPos.vy;
this->PlaySingleAnim(212, 0, -1);
this->field_E8C = 0;
this->field_AE5 = 0;
this->field_AE6 = 0;
if ( this->field_AD4 )
{
this->field_AD4 = 0;
this->field_A8.vx = 0;
this->field_A8.vy = -4096;
this->field_A8.vz = 0;
CVector v11;
v11.vx = 0;
v11.vy = 0;
v11.vz = 4096;
this->OrientToNormal(true, &v11);
}
this->field_E1C = 4;
return 1;
}
return 0;
}
// @MEDIUMTODO
@ -1196,7 +1236,7 @@ void CPlayer::CreateJumpingSmashKickTrail(void)
// @Ok
// @Matching
void CPlayer::PlaySingleAnim(int a2, int a3, int a4)
INLINE void CPlayer::PlaySingleAnim(int a2, int a3, int a4)
{
i32* v4 = gPlayerAnimRelated[a2];
@ -1211,7 +1251,7 @@ void CPlayer::PlaySingleAnim(int a2, int a3, int a4)
}
}
this->RunAnim(a2, a3, a4);
CSuper::RunAnim(a2, a3, a4);
}
// @BIGTODO
@ -1261,9 +1301,9 @@ void CPlayer::CutSceneSkipCleanup(void)
reinterpret_cast<VECTOR*>(&v14),
reinterpret_cast<VECTOR*>(&v14));
this->field_A8 = 0;
this->field_AA = -4096;
this->field_AC = 0;
this->field_A8.vx = 0;
this->field_A8.vy = -4096;
this->field_A8.vz = 0;
}
else
{
@ -1513,6 +1553,9 @@ void validate_CPlayer(void)
VALIDATE(CPlayer, gCamAngleLock, 0x8EC);
VALIDATE(CPlayer, field_AE5, 0xAE5);
VALIDATE(CPlayer, field_AE6, 0xAE6);
VALIDATE(CPlayer, field_AD4, 0xAD4);
VALIDATE(CPlayer, field_C78, 0xC78);
@ -1555,6 +1598,12 @@ void validate_CPlayer(void)
VALIDATE(CPlayer, field_E2D, 0xE2D);
VALIDATE(CPlayer, field_E2E, 0xE2E);
VALIDATE(CPlayer, field_E48, 0xE48);
VALIDATE(CPlayer, field_E38, 0xE38);
VALIDATE(CPlayer, field_E8C, 0xE8C);
VALIDATE(CPlayer, mHeldObject, 0xE48);
VALIDATE(CPlayer, field_EA4, 0xEA4);
}

View File

@ -6,6 +6,7 @@
#include "export.h"
#include "ob.h"
#include "manipob.h"
class CPlayer : public CSuper
{
@ -66,8 +67,12 @@ class CPlayer : public CSuper
unsigned char gCamAngleLock; //8EC
unsigned char padAfterLock[0xAD4-0x8EC-1];
char field_AD4;
unsigned char padAfterAD4[0xC6C-0xAD4-1];
u8 field_AD4;
u8 padAfterAD4[0xAE5-0xAD4-1];
u8 field_AE5;
u8 field_AE6;
u8 padAfterAE6[0xC6C-0xAE6-1];
CVector field_C6C;
@ -122,16 +127,25 @@ class CPlayer : public CSuper
unsigned char padAfterE12[4];
int field_E18;
int field_E1C;
i32 field_E1C;
unsigned char padAfterE1C[0xE2D-0xE1C-4];
char field_E2D;
char field_E2E;
u8 padAfterE2E[(0xE48-0xE2E)-0x1];
u8 padAfterE2E[(0xE38-0xE2E)-0x1];
CBody* field_E48;
i32 field_E38;
u8 padAfterE38[(0xE48-0xE38)-0x4];
u8 padBottomPlayer[(0xEFC-0xE48)-0x4];
CManipOb* mHeldObject;
u8 padAfterE48[0xE8C-0xE48-4];
u8 field_E8C;
u8 padAfterE8C[0xEA4-0xE8C-1];
u8 field_EA4;
u8 padBottomPlayer[(0xEFC-0xEA4)-0x1];
EXPORT void SetCamAngleLock(unsigned __int16);
@ -179,7 +193,7 @@ class CPlayer : public CSuper
EXPORT void CheckExteriorSurfaceTransition(void);
EXPORT void CheckFenceSurfaceTransition(void);
EXPORT void CheckForwards(bool);
EXPORT void CheckGroundGone(void);
EXPORT i32 CheckGroundGone(void);
EXPORT void CheckInteriorSurfaceTransition(void);
EXPORT void CheckJump(void);
EXPORT void CheckJumpingR1ZipWeb(void);

View File

@ -231,7 +231,7 @@ INLINE i32 CThug::ShouldIShootPlayer(void)
if ( MechList->field_57C
|| gThugList
|| this->DistanceToPlayer(2) >= 2000
|| MechList->field_E48
|| MechList->mHeldObject
|| this->DistanceToPlayer(2) <= 650
&& (abs(MechList->mPos.vy - this->field_29C - 0x4000) <= 409600) )
{
@ -287,7 +287,7 @@ INLINE i32 CThug::DrawBarrelFlash(
// Validate when used
INLINE void CThug::CheckToShoot(i32 a2, i32 a3)
{
if ( MechList->field_57C && !gThugList && !MechList->field_E48)
if ( MechList->field_57C && !gThugList && !MechList->mHeldObject)
{
if ( ((this->field_218 & 0x800) && a2 < this->field_37C)
||