Clang format sprite (#262)
This commit is contained in:
@@ -20,6 +20,7 @@ jobs:
|
||||
run: >
|
||||
clang-format --dry-run -Werror
|
||||
include/bitset.h source/bitset.c
|
||||
include/sprite.h source/sprite.c
|
||||
include/splash_screen.h source/splash_screen.c
|
||||
# Currently contains only the code that has been formatted to conform
|
||||
# When all existing code conforms, change to this:
|
||||
|
||||
+23
-23
@@ -1,18 +1,17 @@
|
||||
#ifndef SPRITE_H
|
||||
#define SPRITE_H
|
||||
|
||||
#include <tonc.h>
|
||||
#include <maxmod.h>
|
||||
#include <tonc.h>
|
||||
|
||||
#define CARD_SPRITE_SIZE 32
|
||||
#define MAX_SPRITES 128
|
||||
#define CARD_SPRITE_SIZE 32
|
||||
#define MAX_SPRITES 128
|
||||
#define MAX_SPRITE_OBJECTS 16
|
||||
|
||||
|
||||
typedef struct
|
||||
typedef struct
|
||||
{
|
||||
OBJ_ATTR *obj;
|
||||
OBJ_AFFINE *aff;
|
||||
OBJ_ATTR* obj;
|
||||
OBJ_AFFINE* aff;
|
||||
POINT pos;
|
||||
int idx;
|
||||
} Sprite;
|
||||
@@ -22,7 +21,7 @@ typedef struct
|
||||
{
|
||||
Sprite* sprite;
|
||||
FIXED tx, ty; // target position
|
||||
FIXED x, y; // position
|
||||
FIXED x, y; // position
|
||||
FIXED vx, vy; // velocity
|
||||
FIXED tscale;
|
||||
FIXED scale;
|
||||
@@ -32,21 +31,14 @@ typedef struct
|
||||
FIXED vrotation;
|
||||
bool selected;
|
||||
bool focused;
|
||||
|
||||
|
||||
} 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);
|
||||
void sprite_destroy(Sprite **sprite);
|
||||
int sprite_get_layer(Sprite *sprite);
|
||||
INLINE void sprite_position(Sprite *sprite, int x, int y)
|
||||
{
|
||||
sprite->pos.x = x;
|
||||
sprite->pos.y = y;
|
||||
|
||||
obj_set_pos(sprite->obj, x, y);
|
||||
}
|
||||
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);
|
||||
void sprite_destroy(Sprite** sprite);
|
||||
int sprite_get_layer(Sprite* sprite);
|
||||
|
||||
// Sprite functions
|
||||
void sprite_init();
|
||||
@@ -54,11 +46,11 @@ void sprite_draw();
|
||||
int sprite_get_pb(const Sprite* sprite);
|
||||
|
||||
// SpriteObject methods
|
||||
SpriteObject *sprite_object_new();
|
||||
void sprite_object_destroy(SpriteObject **sprite_object);
|
||||
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_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);
|
||||
@@ -67,4 +59,12 @@ Sprite* sprite_object_get_sprite(SpriteObject* sprite_object);
|
||||
void sprite_object_set_focus(SpriteObject* sprite_object, bool focus);
|
||||
bool sprite_object_is_focused(SpriteObject* sprite_object);
|
||||
|
||||
INLINE void sprite_position(Sprite* sprite, int x, int y)
|
||||
{
|
||||
sprite->pos.x = x;
|
||||
sprite->pos.y = y;
|
||||
|
||||
obj_set_pos(sprite->obj, x, y);
|
||||
}
|
||||
|
||||
#endif // SPRITE_H
|
||||
|
||||
+38
-27
@@ -1,33 +1,34 @@
|
||||
#include "game.h"
|
||||
#include "sprite.h"
|
||||
#include "util.h"
|
||||
|
||||
#include "audio_utils.h"
|
||||
#include "soundbank.h"
|
||||
#include "game.h"
|
||||
#include "pool.h"
|
||||
#include "soundbank.h"
|
||||
#include "util.h"
|
||||
|
||||
#include <tonc.h>
|
||||
#include <stdlib.h>
|
||||
#include <maxmod.h>
|
||||
#include <stdlib.h>
|
||||
#include <tonc.h>
|
||||
|
||||
#define MAX_SPRITES 128
|
||||
#define MAX_AFFINES 32
|
||||
#define MAX_SPRITES 128
|
||||
#define MAX_AFFINES 32
|
||||
#define SPRITE_FOCUS_RAISE_PX 10
|
||||
|
||||
OBJ_ATTR obj_buffer[MAX_SPRITES];
|
||||
OBJ_AFFINE *obj_aff_buffer = (OBJ_AFFINE*)obj_buffer;
|
||||
OBJ_AFFINE* obj_aff_buffer = (OBJ_AFFINE*)obj_buffer;
|
||||
|
||||
static Sprite *free_sprites[MAX_SPRITES] = {NULL};
|
||||
static Sprite* free_sprites[MAX_SPRITES] = {NULL};
|
||||
static bool free_affines[MAX_AFFINES] = {false};
|
||||
|
||||
// Sprite methods
|
||||
Sprite *sprite_new(u16 a0, u16 a1, u32 tid, u32 pb, int sprite_index)
|
||||
Sprite* sprite_new(u16 a0, u16 a1, u32 tid, u32 pb, int sprite_index)
|
||||
{
|
||||
Sprite* sprite = POOL_GET(Sprite);
|
||||
|
||||
sprite->obj = NULL;
|
||||
sprite->aff = NULL;
|
||||
|
||||
if(!free_sprites[sprite_index])
|
||||
if (!free_sprites[sprite_index])
|
||||
{
|
||||
free_sprites[sprite_index] = sprite;
|
||||
}
|
||||
@@ -41,9 +42,9 @@ Sprite *sprite_new(u16 a0, u16 a1, u32 tid, u32 pb, int sprite_index)
|
||||
{
|
||||
int aff_index = MAX_AFFINES;
|
||||
|
||||
for(int i = 0; i < MAX_AFFINES; i++)
|
||||
for (int i = 0; i < MAX_AFFINES; i++)
|
||||
{
|
||||
if(!free_affines[i])
|
||||
if (!free_affines[i])
|
||||
{
|
||||
free_affines[i] = true;
|
||||
aff_index = i;
|
||||
@@ -75,9 +76,10 @@ Sprite *sprite_new(u16 a0, u16 a1, u32 tid, u32 pb, int sprite_index)
|
||||
return sprite;
|
||||
}
|
||||
|
||||
void sprite_destroy(Sprite **sprite)
|
||||
void sprite_destroy(Sprite** sprite)
|
||||
{
|
||||
if (*sprite == NULL) return;
|
||||
if (*sprite == NULL)
|
||||
return;
|
||||
|
||||
obj_hide((*sprite)->obj);
|
||||
|
||||
@@ -93,16 +95,17 @@ void sprite_destroy(Sprite **sprite)
|
||||
*sprite = NULL;
|
||||
}
|
||||
|
||||
int sprite_get_layer(Sprite *sprite)
|
||||
int sprite_get_layer(Sprite* sprite)
|
||||
{
|
||||
if (sprite == NULL || sprite->obj == NULL) return UNDEFINED;
|
||||
if (sprite == NULL || sprite->obj == NULL)
|
||||
return UNDEFINED;
|
||||
return sprite->obj - obj_buffer;
|
||||
}
|
||||
|
||||
// Sprite functions
|
||||
void sprite_init()
|
||||
{
|
||||
oam_init(obj_buffer, MAX_SPRITES);
|
||||
oam_init(obj_buffer, MAX_SPRITES);
|
||||
}
|
||||
|
||||
void sprite_draw()
|
||||
@@ -111,7 +114,7 @@ void sprite_draw()
|
||||
oam_copy(oam_mem, obj_buffer, MAX_SPRITES);
|
||||
}
|
||||
|
||||
int sprite_get_pb(const Sprite *sprite)
|
||||
int sprite_get_pb(const Sprite* sprite)
|
||||
{
|
||||
if (sprite == NULL)
|
||||
{
|
||||
@@ -134,7 +137,8 @@ SpriteObject* sprite_object_new()
|
||||
|
||||
void sprite_object_destroy(SpriteObject** sprite_object)
|
||||
{
|
||||
if (*sprite_object == NULL) return;
|
||||
if (*sprite_object == NULL)
|
||||
return;
|
||||
sprite_destroy(&(*sprite_object)->sprite);
|
||||
POOL_FREE(SpriteObject, *sprite_object);
|
||||
*sprite_object = NULL;
|
||||
@@ -169,13 +173,16 @@ void sprite_object_update(SpriteObject* sprite_object)
|
||||
sprite_object->vx += ((sprite_object->tx - sprite_object->x) * get_game_speed()) / 8;
|
||||
sprite_object->vy += ((sprite_object->ty - sprite_object->y) * get_game_speed()) / 8;
|
||||
|
||||
sprite_object->vscale += (sprite_object->tscale - sprite_object->scale) / 8; // Scale up the card when it's played
|
||||
// Scale up the card when it's played
|
||||
sprite_object->vscale += (sprite_object->tscale - sprite_object->scale) / 8;
|
||||
|
||||
sprite_object->vrotation += (sprite_object->trotation - sprite_object->rotation) / 8; // Rotate the card when it's played
|
||||
// Rotate the card when it's played
|
||||
sprite_object->vrotation += (sprite_object->trotation - sprite_object->rotation) / 8;
|
||||
|
||||
// set velocity to 0 if it's close enough to the target
|
||||
const FIXED epsilon = float2fx(0.01f);
|
||||
if (sprite_object->vx < epsilon && sprite_object->vx > -epsilon && sprite_object->vy < epsilon && sprite_object->vy > -epsilon)
|
||||
if (sprite_object->vx < epsilon && sprite_object->vx > -epsilon && sprite_object->vy < epsilon &&
|
||||
sprite_object->vy > -epsilon)
|
||||
{
|
||||
sprite_object->vx = 0;
|
||||
sprite_object->vy = 0;
|
||||
@@ -216,16 +223,20 @@ void sprite_object_update(SpriteObject* sprite_object)
|
||||
sprite_object->rotation += sprite_object->vrotation;
|
||||
}
|
||||
|
||||
obj_aff_rotscale(sprite_object->sprite->aff, sprite_object->scale, sprite_object->scale, -sprite_object->vx + sprite_object->rotation); // Apply rotation and scale to the sprite
|
||||
obj_aff_rotscale(sprite_object->sprite->aff,
|
||||
sprite_object->scale,
|
||||
sprite_object->scale,
|
||||
-sprite_object->vx + sprite_object->rotation); // Apply rotation and scale to the sprite
|
||||
sprite_position(sprite_object->sprite, fx2int(sprite_object->x), fx2int(sprite_object->y));
|
||||
}
|
||||
|
||||
void sprite_object_shake(SpriteObject* sprite_object, mm_word sound_id)
|
||||
{
|
||||
sprite_object->vscale = float2fx(0.3f);
|
||||
sprite_object->vrotation = float2fx(8.0f); //Rotate the card when it's scored
|
||||
sprite_object->vrotation = float2fx(8.0f); // Rotate the card when it's scored
|
||||
|
||||
if (sound_id == UNDEFINED) return; // If no sound ID is provided, do nothing
|
||||
if (sound_id == UNDEFINED)
|
||||
return; // If no sound ID is provided, do nothing
|
||||
|
||||
play_sfx(sound_id, MM_BASE_PITCH_RATE);
|
||||
}
|
||||
@@ -259,7 +270,7 @@ void sprite_object_set_focus(SpriteObject* sprite_object, bool focus)
|
||||
}
|
||||
sprite_object->focused = focus;
|
||||
|
||||
play_sfx(SFX_CARD_FOCUS , MM_BASE_PITCH_RATE + rand() % 512);
|
||||
play_sfx(SFX_CARD_FOCUS, MM_BASE_PITCH_RATE + rand() % 512);
|
||||
sprite_object->ty = sprite_object->ty + int2fx((focus ? -1 : 1) * SPRITE_FOCUS_RAISE_PX);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user