mirror of
https://github.com/zeldaret/tmc
synced 2026-06-02 02:00:32 -04:00
define collisions
This commit is contained in:
@@ -22,7 +22,7 @@ typedef struct EnemyDefinition {
|
||||
u8 health;
|
||||
s16 speed;
|
||||
u8 damageType;
|
||||
u8 flags2;
|
||||
u8 collisionMask;
|
||||
} EnemyDefinition;
|
||||
|
||||
typedef struct ProjectileDefinition {
|
||||
@@ -43,7 +43,7 @@ typedef struct ProjectileDefinition {
|
||||
u8 field0x40;
|
||||
s16 speed;
|
||||
u8 damageType;
|
||||
u8 flags2;
|
||||
u8 collisionMask;
|
||||
} ProjectileDefinition;
|
||||
|
||||
// Sprite data definition for objects and npcs
|
||||
|
||||
+36
-4
@@ -79,7 +79,39 @@ typedef enum {
|
||||
DirectionNorthWest = 0x1c, /**< North West. */
|
||||
} Direction;
|
||||
|
||||
#define CONTACT_TAKE_DAMAGE 0x80
|
||||
/** Collision layer flags. */
|
||||
typedef enum {
|
||||
COL_LAYER_NONE = 0x0,
|
||||
COL_LAYER_BOTTOM = 0x1,
|
||||
COL_LAYER_TOP = 0x2,
|
||||
COL_LAYER_BOTH = 0x3
|
||||
} CollisionLayer;
|
||||
|
||||
/**
|
||||
* Collision class flags.
|
||||
* An Entity's collision class is determined by the first 3 bits of #Entity::collisionFlags.
|
||||
* What classes an Entity collides with is determined by the bitfield #Entity::collisionMask.
|
||||
*/
|
||||
typedef enum {
|
||||
COL_CLASS_NONE = 0x0,
|
||||
COL_CLASS_PLAYER = 0x1,
|
||||
COL_CLASS_ITEM = 0x2,
|
||||
COL_CLASS_FLAMMABLE = 0x3,
|
||||
COL_CLASS_4 = 0x4,
|
||||
COL_CLASS_5 = 0x5,
|
||||
COL_CLASS_6 = 0x6,
|
||||
COL_CLASS_PACCI_OBJ = 0x7,
|
||||
} CollisionClass;
|
||||
|
||||
/** Collision flags. */
|
||||
typedef enum {
|
||||
COL_FLAG_3D = 0x10,
|
||||
COL_FLAG_SOLID = 0x20,
|
||||
COL_FLAG_REFLECT = 0x80,
|
||||
} CollisionFlags;
|
||||
|
||||
#define COLLISION_MASK(layer) (1 << (layer))
|
||||
#define CONTACT_NOW 0x80
|
||||
|
||||
typedef struct {
|
||||
void* entity1;
|
||||
@@ -194,11 +226,11 @@ typedef struct Entity_ {
|
||||
/*0x2c*/ union SplitWord x; /**< X position, fixed point Q16.16. */
|
||||
/*0x30*/ union SplitWord y; /**< Y position, fixed point Q16.16. */
|
||||
/*0x34*/ union SplitWord z; /**< Z position, fixed point Q16.16. */
|
||||
/*0x38*/ u8 collisionLayer; /**< Collision layer. */
|
||||
/*0x38*/ u8 collisionLayer; /**< @see CollisionLayer. */
|
||||
/*0x39*/ s8 interactType;
|
||||
/*0x3a*/ u8 gustJarState; /**< 4: grabbed by GustJar */
|
||||
/*0x3b*/ u8 flags2; /**< Debug visualization related? */
|
||||
/*0x3c*/ u8 collisionFlags; /**< Controls collision modes. */
|
||||
/*0x3b*/ u8 collisionMask; /**< Bitfield. @see CollisionClass */
|
||||
/*0x3c*/ u8 collisionFlags; /**< @see CollisionFlags, @see CollisionClass */
|
||||
/*0x3d*/ s8 iframes; /**< Invulnerability frames. */
|
||||
/*0x3e*/ u8 knockbackDirection; /**< Direction of knockback. */
|
||||
/*0x3f*/ u8 hitType; /**< Behavior as a collision sender. */
|
||||
|
||||
+1
-1
@@ -511,7 +511,7 @@ typedef struct {
|
||||
/*0x39*/ u8 field_0x39;
|
||||
/*0x3a*/ u8 field_0x3a;
|
||||
/*0x3b*/ u8 field_0x3b;
|
||||
/*0x3c*/ u8 field_0x3c;
|
||||
/*0x3c*/ u8 killed; /**< Non-zero if player is dead */
|
||||
/*0x3d*/ u8 moleMittsState;
|
||||
/*0x3e*/ u8 swordDamage : 2;
|
||||
/* */ u8 filler14 : 6;
|
||||
|
||||
Reference in New Issue
Block a user