CRhinoWallImpact::CRhinoWallImpact

This commit is contained in:
krystalgamer 2024-07-30 17:00:16 +02:00
parent c562544f20
commit 5cb335f85f
10 changed files with 51 additions and 19 deletions

View File

@ -337,7 +337,7 @@ void CQuadBit::SetTransparency(unsigned char a2){
}
// @MEDIUMTODO
void CQuadBit::OrientUsing(CVector *a2, SVector *a3, int a4, int a5)
void CQuadBit::OrientUsing(CVector *a2, SVECTOR *a3, int a4, int a5)
{
}

2
bit.h
View File

@ -95,7 +95,7 @@ public:
EXPORT void SetSubtractiveTransparency();
EXPORT void SetCorners(const CVector &a2, const CVector &a3, const CVector &a4, const CVector &a5);
EXPORT void SetTransparency(unsigned char a2);
EXPORT void OrientUsing(CVector *a2, SVector *a3, int a4, int a5);
EXPORT void OrientUsing(CVector *, SVECTOR *, i32, i32);
EXPORT void OrientUsing(CVector *, SVECTOR *, i32, i32, i32);
EXPORT void SetTexture(int, int);
EXPORT void SetTexture(u32);

View File

@ -1,8 +1,28 @@
#include "effects.h"
#include "spool.h"
#include "vector.h"
#include "validate.h"
extern int CurrentSuit;
extern i32 CurrentSuit;
// @Ok
CRhinoWallImpact::CRhinoWallImpact(SLineInfo* pLineInfo)
{
print_if_false(pLineInfo != 0, "NULL pLineInfo");
this->SetTexture(Spool_FindTextureChecksum("RhinoWallImpact"));
this->SetTint(0x12u, 0x12u, 0x12u);
this->SetSubtractiveTransparency();
this->mCodeBGR &= ~0x200;
CVector v2;
v2.vx = pLineInfo->field_6C;
v2.vy = pLineInfo->field_70 - 204800;
v2.vz = pLineInfo->field_74;
this->OrientUsing(&v2, reinterpret_cast<SVECTOR*>(&pLineInfo->field_78), 100, 100);
this->mType = 26;
}
// @MEDIUMTODO
CSkinGoo::CSkinGoo(CSuper*, SSkinGooSource*, i32, SSkinGooParams*)
@ -17,8 +37,9 @@ CSkinGoo::CSkinGoo(CSuper*, SSkinGooSource2*, i32, SSkinGooParams*)
}
// @MEDIUMTODO
CElectrify::CElectrify(CSuper*, int)
CElectrify::CElectrify(CSuper*, i32)
{
printf("CElectrify::CElectrify(CSuper*, int)");
}
// @Ok
@ -72,3 +93,8 @@ void validate_SSkinGooSource2(void)
void validate_SSkinGooParams(void)
{
}
void validate_CRhinoWallImpact(void)
{
VALIDATE_SIZE(CRhinoWallImpact, 0x88);
}

View File

@ -5,8 +5,16 @@
#define EFFECTS_H
#include "ob.h"
#include "m3dcolij.h"
#include "export.h"
class CRhinoWallImpact : public CQuadBit
{
public:
EXPORT CRhinoWallImpact(SLineInfo*);
u8 padBottom[4];
};
class CElectrify : public CSimpleTexturedRibbon
{
public:
@ -41,6 +49,7 @@ void validate_CSkinGoo(void);
void validate_SSkinGooSource(void);
void validate_SSkinGooSource2(void);
void validate_SSkinGooParams(void);
void validate_CRhinoWallImpact(void);
EXPORT void Effects_Electrify(CSuper*);
EXPORT void Effects_UnElectrify(CSuper*);

View File

@ -73,8 +73,6 @@ void validate_SLineInfo(void)
VALIDATE(SLineInfo, field_70, 0x70);
VALIDATE(SLineInfo, field_74, 0x74);
VALIDATE(SLineInfo, field_78, 0x78);
VALIDATE(SLineInfo, field_7A, 0x7A);
VALIDATE(SLineInfo, field_7C, 0x7C);
VALIDATE(SLineInfo, field_80, 0x80);
VALIDATE(SLineInfo, field_84, 0x84);

View File

@ -30,9 +30,7 @@ struct SLineInfo
int field_6C;
int field_70;
int field_74;
__int16 field_78;
__int16 field_7A;
__int16 field_7C;
CSVector field_78;
int field_80;
int field_84;

View File

@ -375,6 +375,7 @@ int main()
validate_CCombatImpactRing();
validate_SCamera();
validate_SRibbonPoint();
validate_CRhinoWallImpact();
puts("[*] Validation done!");

View File

@ -161,9 +161,9 @@ void CManipOb::Smash(void)
v4.field_6C = 0;
v4.field_70 = 0;
v4.field_74 = 0;
v4.field_78 = 0;
v4.field_7A = (__int16)0xF000;
v4.field_7C = 0;
v4.field_78.vx = 0;
v4.field_78.vy = (i16)0xF000;
v4.field_78.vz = 0;
this->mAccellorVel.vx = 0;
this->mAccellorVel.vy = 0x20000;

2
ob.cpp
View File

@ -172,7 +172,7 @@ void CBody::UpdateShadow(void){
vec.vz = 0;
unsigned __int16 lastParam = this->field_D0;
this->bodyQuadBit->OrientUsing(&this->bodyVector, &vec, lastParam, lastParam);
this->bodyQuadBit->OrientUsing(&this->bodyVector, reinterpret_cast<SVECTOR*>(&vec), lastParam, lastParam);
__int8 trans = ((this->field_D4 - this->field_D2) << 7) / this->field_D4;

View File

@ -689,9 +689,9 @@ void CPlayer::TidyUpZipWebLandingPosition(int a2)
v21.field_6C = 0;
v21.field_70 = 0;
v21.field_74 = 0;
v21.field_78 = 0;
v21.field_7A = 0;
v21.field_7C = 0;
v21.field_78.vx = 0;
v21.field_78.vy = 0;
v21.field_78.vz = 0;
int i = 0;
do
@ -725,9 +725,9 @@ void CPlayer::TidyUpZipWebLandingPosition(int a2)
M3dZone_LineToItem(&v21, 1);
if ( v21.field_68 )
{
int v18 = a2 * v21.field_7C;
int v19 = v17 + a2 * v21.field_7A;
this->mPos.vx += a2 * v21.field_78;
int v18 = a2 * v21.field_78.vz;
int v19 = v17 + a2 * v21.field_78.vy;
this->mPos.vx += a2 * v21.field_78.vx;
this->mPos.vy = v19;
this->mPos.vz = z + v18;
}