Extracted JokerObject and CardObject common functionalities to SpriteObject, removing duplicate code and dangerous casts.

This commit is contained in:
MeirGavish
2025-07-27 01:13:57 +03:00
parent 942a954d00
commit 95565862b0
9 changed files with 330 additions and 218 deletions
+30
View File
@@ -2,6 +2,7 @@
#define SPRITE_H
#include <tonc.h>
#include <maxmod.h>
typedef struct
{
@@ -11,6 +12,22 @@ typedef struct
POINT pos;
} Sprite;
// A sprite object is a sprite that is selectable and movable in animation
typedef struct
{
Sprite* sprite;
FIXED tx, ty; // target position
FIXED x, y; // position
FIXED vx, vy; // velocity
FIXED tscale;
FIXED scale;
FIXED vscale;
FIXED trotation; // this never gets used so i might remove it later
FIXED rotation;
FIXED vrotation;
bool selected;
} SpriteObject;
// Sprite methods
Sprite *sprite_new(u16 a0, u16 a1, u32 tid, u32 pb, int sprite_index);
Sprite *affine_sprite_new(u16 a0, u16 a1, u32 tid, u32 pb);
@@ -28,4 +45,17 @@ INLINE void sprite_position(Sprite *sprite, int x, int y)
void sprite_init();
void sprite_draw();
// SpriteObject methods
SpriteObject *sprite_object_new();
void sprite_object_destroy(SpriteObject **sprite_object);
void sprite_object_set_sprite(SpriteObject* sprite_object, Sprite* sprite);
void sprite_object_reset_transform(SpriteObject* sprite_object);
void sprite_object_update(SpriteObject *sprite_object);
void sprite_object_shake(SpriteObject* sprite_object, mm_word sound_id);
void sprite_object_set_selected(SpriteObject* sprite_object, bool selected);
bool sprite_object_is_selected(SpriteObject* sprite_object);
Sprite* sprite_object_get_sprite(SpriteObject* sprite_object);
#endif // SPRITE_H