Files
Diddy-Kong-Racing/include/object_properties.h
T
Ryan MyersandGitHub 97aaf39e64 Cleanup, and documenting (#583)
* 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!
2025-05-21 12:56:15 -04:00

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