spidey-decomp/simby.h
2024-07-31 18:03:14 +02:00

214 lines
3.8 KiB
C++

#pragma once
#ifndef SIMBY_H
#define SIMBY_H
#include "export.h"
#include "baddy.h"
class CPunchOb : public CBaddy {
public:
EXPORT CPunchOb(i16*, i32);
EXPORT virtual ~CPunchOb(void);
EXPORT virtual i32 Hit(SHitInfo*);
EXPORT virtual void AI(void);
EXPORT void SendPulse(void);
unsigned char padTop[4];
unsigned char field_328;
unsigned char padFull[0x32C - 0x328 - 1];
};
class CSimby : public CBaddy {
public:
EXPORT CSimby(int*, int);
EXPORT CSimby(void);
EXPORT void FlashUpdate(void);
EXPORT void SetAlertModeTimer(int);
EXPORT void ClearAttackData(void);
EXPORT void SetUpUnitFromDirection(CVector*, int);
EXPORT void SetUpJumpData(i32, i32);
EXPORT void RunAppropriateHitAnim(void);
EXPORT i32 FireTrappedToDeath(void);
EXPORT i32 PlayAndAttachXAPlease(i32, i32, CBody*, i32);
EXPORT void PlayGruntSound(void);
EXPORT void TakeHit(void);
EXPORT void Shoot(void);
EXPORT void SetUpHandPos(void);
i32 field_324;
i16 field_328;
u16 field_32A;
u16 field_32C;
i16 field_32E;
i32 field_330;
u8 padAfter330[0x348-0x330-4];
i32 field_348;
i32 field_34C;
i32 field_350;
i32 field_354;
i32 field_358;
i32 field_35C;
i32 field_360;
i32 field_364;
CVector field_368;
i32 field_374;
i32 field_378;
i32 field_37C;
i32 field_380;
i32 field_384;
i32 field_388;
i32 field_38C;
i32 field_390;
i32 field_394;
i32 field_398;
i32 field_39C;
u8 padAfter39C[0x3CC-0x39C-4];
i32 field_3CC;
i32 field_3D0;
u8 padAfter3D0[0x3DC-0x3D0-4];
CVector field_3DC;
u8 padAfter3E4[0x3F0-0x3E4-4];
i32 field_3F0;
u8 padAfter3F0[4];
i32 field_3F8;
i32 field_3FC;
i32 field_400;
i32 field_404;
i32 field_408;
i32 field_40C;
u8 padBottom[0x460 - 0x40C-4];
};
class CSimbyBase : public CBaddy {
public:
unsigned char padFull[0x334 - 0x324];
};
class CSimbySlimeBase : public CQuadBit
{
public:
EXPORT void ScaleUp(void);
EXPORT void ScaleDown(void);
EXPORT void ScaleDownAndDie(void);
unsigned char topPad[0x9C-0x84];
int field_9C;
unsigned char padAfter9C[0xA4-0x9C-4];
int field_A4;
unsigned char bottomPad[0x114-0xA4-4];
};
class CEmber : public CFlatBit
{
public:
EXPORT CEmber(const CVector*, int);
CVector field_68;
i32 field_74;
CVector field_78;
i32 field_84;
i32 field_88;
i32 field_8C;
};
class CSimbyShot : public CQuadBit
{
public:
EXPORT CSimbyShot(CVector*);
u8 padFull[0x34];
};
class CSkidMark : public CQuadBit
{
public:
EXPORT CSkidMark(void);
EXPORT virtual void Move(void);
};
class CFireySpark : public CPixel
{
public:
EXPORT CFireySpark(CVector*, CVector*, i32);
EXPORT virtual ~CFireySpark(void);
EXPORT virtual void Move(void);
i32 field_3C;
u8 field_40;
u8 field_41;
u8 field_42;
u8 field_43;
i32 field_44;
i32 field_48;
i32 field_4C;
};
class CSimbyDroplet : public CFlatBit
{
public:
EXPORT CSimbyDroplet(i16*, i32);
EXPORT virtual ~CSimbyDroplet(void);
EXPORT virtual void Move(void);
#ifndef _WIN32
// @FIXME
u8 padTop[2];
#endif
u16 field_68;
u16 field_6A;
i32 field_6C;
};
class CSymBurn : public CSuper
{
public:
EXPORT CSymBurn(CVector*);
EXPORT virtual ~CSymBurn(void);
EXPORT virtual void AI(void);
u8 padTop[0x10];
i32 field_1A4;
};
void validate_CPunchOb(void);
void validate_CSimby(void);
void validate_CSimbyBase(void);
void validate_CSimbySlimeBase(void);
void validate_CEmber(void);
void validate_CSimbyShot(void);
void validate_CSkidMark(void);
void validate_CFireySpark(void);
void validate_CSimbyDroplet(void);
void validate_CSymBurn(void);
EXPORT void MakeVertexWibbler(void);
EXPORT void Simby_CreateSimby(const u32 *stack, u32 *result);
EXPORT void Simby_CreateEmber(const u32*, u32*);
EXPORT void Simby_CreateSimbyDroplet(const u32 *, u32 *);
EXPORT void Simby_CreateSimbyPunchOb(const u32 *, u32 *);
EXPORT void Simby_SplattyExplosion(CVector*, CVector*, i32);
#endif