mirror of
https://github.com/izzy2lost/Diddy-Kong-Racing.git
synced 2026-06-19 01:16:26 -07:00
* Some amount of documenting in printf.c * Formatter, and do some mild cleanup and documentation in menu.c * Fix gSaveMenuObjectIndices * Use ObjectTransform in MenuAsset as it's what's being passed to cam_push_model_mtx * Fix warnings and format * Cleanup some objects.c code and it's usage of casting. * Add Object to Object_64 * Much better score for func_8000B750 * Match func_8000B750 * Update score * Do some naming * Sorry one more better documenting!
217 lines
4.7 KiB
C
217 lines
4.7 KiB
C
#ifndef _OBJECT_PROPERTIES_H_
|
|
#define _OBJECT_PROPERTIES_H_
|
|
|
|
#include "types.h"
|
|
#include "enums.h"
|
|
#include "level_object_entries.h"
|
|
|
|
/**
|
|
* Objects have a union at offset 0x78, that's 8 bytes large.
|
|
* Here's a collection of unions to help improve readability for them.
|
|
*/
|
|
|
|
typedef struct ObjPropertyCommon {
|
|
s32 unk0;
|
|
s32 unk4;
|
|
} ObjPropertyCommon;
|
|
|
|
typedef struct ObjPropertyDistance {
|
|
f32 radius;
|
|
s32 unk4;
|
|
} ObjPropertyDistance;
|
|
|
|
typedef struct ObjPropertySpeed {
|
|
s32 speed;
|
|
s32 unk4;
|
|
} ObjPropertySpeed;
|
|
|
|
typedef struct ObjPropertyBanana {
|
|
s32 status;
|
|
s16 intangibleTimer;
|
|
s16 destroyTimer;
|
|
} ObjPropertyBanana;
|
|
|
|
typedef struct ObjPropertyName {
|
|
f32 radius;
|
|
s16 levelID;
|
|
s16 opacity;
|
|
} ObjPropertyName;
|
|
|
|
typedef struct ObjPropertyProjectile {
|
|
s32 timer;
|
|
s32 unk4;
|
|
} ObjPropertyProjectile;
|
|
|
|
typedef struct ObjPropertyLog {
|
|
s32 angleVel;
|
|
s32 velocityY;
|
|
} ObjPropertyLog;
|
|
|
|
typedef struct ObjPropertyScenery {
|
|
struct Object *interactObj;
|
|
s16 hitTimer;
|
|
s16 angleVel;
|
|
} ObjPropertyScenery;
|
|
|
|
typedef struct ObjPropertyFireball {
|
|
struct Object *obj;
|
|
s32 timer;
|
|
} ObjPropertyFireball;
|
|
|
|
typedef struct ObjPropertyLasergun {
|
|
s32 timer;
|
|
struct Object_LaserGun *obj;
|
|
} ObjPropertyLasergun;
|
|
|
|
typedef struct ObjPropertyTrophyCabinet {
|
|
s32 action;
|
|
s32 trophy;
|
|
} ObjPropertyTrophyCabinet;
|
|
|
|
typedef struct ObjPropertyEggSpawner {
|
|
struct Object *egg;
|
|
} ObjPropertyEggSpawner;
|
|
|
|
typedef struct ObjPropertyZipper {
|
|
s32 radius;
|
|
} ObjPropertyZipper;
|
|
|
|
typedef struct ObjPropertyCharacterFlag {
|
|
s32 playerID;
|
|
s32 characterID;
|
|
} ObjPropertyCharacterFlag;
|
|
|
|
typedef struct ObjPropertyNPC {
|
|
s32 action;
|
|
s32 timer;
|
|
} ObjPropertyNPC;
|
|
|
|
typedef struct ObjPropertyLavaSpurt {
|
|
s32 actionTimer;
|
|
s32 delayTimer;
|
|
} ObjPropertyLavaSpurt;
|
|
|
|
typedef struct ObjPropertyAnimation {
|
|
s32 action;
|
|
s32 behaviourID;
|
|
} ObjPropertyAnimation;
|
|
|
|
typedef struct ObjPropertyInfoPoint {
|
|
s32 radius;
|
|
s32 visible;
|
|
} ObjPropertyInfoPoint;
|
|
|
|
typedef struct ObjPropertyBombExplosion {
|
|
s32 timer;
|
|
s32 unk4;
|
|
} ObjPropertyBombExplosion;
|
|
|
|
typedef struct ObjPropertyLighthouse {
|
|
s32 active;
|
|
} ObjPropertyLighthouse;
|
|
|
|
typedef struct ObjPropertyDoor {
|
|
s32 closeAngle;
|
|
s32 openAngle;
|
|
} ObjPropertyDoor;
|
|
|
|
typedef struct ObjPropertySkyControl {
|
|
s32 setting;
|
|
s32 radius;
|
|
} ObjPropertySkyControl;
|
|
|
|
typedef struct ObjPropertyTreasureSucker {
|
|
s32 playerID;
|
|
s32 spawnTimer;
|
|
} ObjPropertyTreasureSucker;
|
|
|
|
typedef struct ObjPropertyTreasureBanana {
|
|
s32 diff;
|
|
struct Object_Racer *racer;
|
|
} ObjPropertyTreasureBanana;
|
|
|
|
typedef struct ObjPropertyBananaSpawner {
|
|
s32 timer;
|
|
s32 spawn;
|
|
} ObjPropertyBananaSpawner;
|
|
|
|
typedef struct ObjPropertyWorldKey {
|
|
s32 keyID;
|
|
} ObjPropertyWorldKey;
|
|
|
|
typedef struct ObjPropertyWeaponBalloon {
|
|
s32 balloonID;
|
|
s32 particleTimer;
|
|
} ObjPropertyWeaponBalloon;
|
|
|
|
typedef struct ObjPropertyRacer {
|
|
struct Object *unk0;
|
|
s32 unk4;
|
|
} ObjPropertyRacer;
|
|
|
|
typedef struct ObjPropertySetupPoint {
|
|
s32 racerIndex;
|
|
s32 entranceID;
|
|
} ObjPropertySetupPoint;
|
|
|
|
typedef struct ObjPropertyWeapon {
|
|
s32 decayTimer;
|
|
u8 status;
|
|
u8 submerged;
|
|
s16 scale;
|
|
} ObjPropertyWeapon;
|
|
|
|
typedef struct ObjPropertyCamControl {
|
|
s32 cameraID;
|
|
} ObjPropertyCamControl;
|
|
|
|
typedef struct ObjPropertyTimeTrial {
|
|
s32 timestamp;
|
|
struct ObjectHeader *header;
|
|
} ObjPropertyTimeTrial;
|
|
|
|
typedef struct ObjPropertyBoost {
|
|
struct Object *obj;
|
|
s32 unk4;
|
|
} ObjPropertyBoost;
|
|
|
|
typedef struct ObjProperties {
|
|
union {
|
|
ObjPropertyCommon common;
|
|
ObjPropertyDistance distance;
|
|
ObjPropertySpeed speed;
|
|
ObjPropertyBanana banana;
|
|
ObjPropertyName levelName;
|
|
ObjPropertyProjectile projectile;
|
|
ObjPropertyLog log;
|
|
ObjPropertyScenery scenery;
|
|
ObjPropertyFireball fireball;
|
|
ObjPropertyLasergun lasergun;
|
|
ObjPropertyTrophyCabinet trophyCabinet;
|
|
ObjPropertyEggSpawner eggSpawner;
|
|
ObjPropertyZipper zipper;
|
|
ObjPropertyCharacterFlag characterFlag;
|
|
ObjPropertyNPC npc;
|
|
ObjPropertyLavaSpurt lavaSpurt;
|
|
ObjPropertyAnimation animatedObj;
|
|
ObjPropertyInfoPoint infoPoint;
|
|
ObjPropertyBombExplosion bombExplosion;
|
|
ObjPropertyLighthouse lighthouse;
|
|
ObjPropertyDoor door;
|
|
ObjPropertySkyControl skyControl;
|
|
ObjPropertyTreasureSucker treasureSucker;
|
|
ObjPropertyTreasureBanana treasureBanana;
|
|
ObjPropertyBananaSpawner bananaSpawner;
|
|
ObjPropertyWorldKey worldKey;
|
|
ObjPropertyWeaponBalloon weaponBalloon;
|
|
ObjPropertyRacer racer;
|
|
ObjPropertySetupPoint setupPoint;
|
|
ObjPropertyWeapon weapon;
|
|
ObjPropertyCamControl camControl;
|
|
ObjPropertyTimeTrial timeTrial;
|
|
ObjPropertyBoost boost;
|
|
};
|
|
} ObjProperties;
|
|
|
|
#endif
|