kind of fixed how game_speed behaves
This commit is contained in:
@@ -72,7 +72,7 @@ LIBDIRS := $(LIBGBA) $(LIBTONC)
|
|||||||
ifneq ($(BUILD),$(notdir $(CURDIR)))
|
ifneq ($(BUILD),$(notdir $(CURDIR)))
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
|
|
||||||
export OUTPUT := $(CURDIR)/$(TARGET)
|
export OUTPUT := $(CURDIR)/$(BUILD)/$(TARGET)
|
||||||
|
|
||||||
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
|
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
|
||||||
$(foreach dir,$(DATA),$(CURDIR)/$(dir)) \
|
$(foreach dir,$(DATA),$(CURDIR)/$(dir)) \
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
+12
-12
@@ -4,9 +4,9 @@
|
|||||||
#define MAX_HAND_SIZE 16
|
#define MAX_HAND_SIZE 16
|
||||||
#define MAX_DECK_SIZE 52
|
#define MAX_DECK_SIZE 52
|
||||||
#define MAX_JOKERS_HELD_SIZE 5 // This doesn't account for negatives right now.
|
#define MAX_JOKERS_HELD_SIZE 5 // This doesn't account for negatives right now.
|
||||||
#define MAX_SHOP_JOKERS 2 // TODO: Make this dynamic and allow for other items besides jokers
|
#define MAX_SHOP_JOKERS 2 // TODO: Make this dynamic and allow for other items besides jokers
|
||||||
#define MAX_SELECTION_SIZE 5
|
#define MAX_SELECTION_SIZE 5
|
||||||
#define MAX_CARD_SCORE_DIGITS 2 // Current digit limit for score received from cards including mult etc. from jokers
|
#define MAX_CARD_SCORE_DIGITS 2 // Current digit limit for score received from cards including mult etc. from jokers
|
||||||
#define MAX_CARD_SCORE_STR_LEN (MAX_CARD_SCORE_DIGITS + 1) // For the '+' or 'X'
|
#define MAX_CARD_SCORE_STR_LEN (MAX_CARD_SCORE_DIGITS + 1) // For the '+' or 'X'
|
||||||
#define FRAMES(x) (((x) + game_speed - 1) / game_speed)
|
#define FRAMES(x) (((x) + game_speed - 1) / game_speed)
|
||||||
|
|
||||||
@@ -81,25 +81,25 @@ void game_update();
|
|||||||
void game_set_state(enum GameState new_game_state);
|
void game_set_state(enum GameState new_game_state);
|
||||||
|
|
||||||
// Forward declaration
|
// Forward declaration
|
||||||
struct List;
|
struct List;
|
||||||
typedef struct List List;
|
typedef struct List List;
|
||||||
|
|
||||||
// Utility functions for other files
|
// Utility functions for other files
|
||||||
typedef struct CardObject CardObject; // forward declaration, actually declared in card.h
|
typedef struct CardObject CardObject; // forward declaration, actually declared in card.h
|
||||||
typedef struct JokerObject JokerObject;
|
typedef struct JokerObject JokerObject;
|
||||||
CardObject **get_hand_array(void);
|
CardObject** get_hand_array(void);
|
||||||
int get_hand_top(void);
|
int get_hand_top(void);
|
||||||
int hand_get_size(void);
|
int hand_get_size(void);
|
||||||
CardObject **get_played_array(void);
|
CardObject** get_played_array(void);
|
||||||
int get_played_top(void);
|
int get_played_top(void);
|
||||||
List *get_jokers(void);
|
List* get_jokers(void);
|
||||||
|
|
||||||
int get_deck_top(void);
|
int get_deck_top(void);
|
||||||
int get_num_discards_remaining(void);
|
int get_num_discards_remaining(void);
|
||||||
int get_money(void);
|
int get_money(void);
|
||||||
|
|
||||||
extern int game_speed; // had to do this use this it the sprites animations
|
extern int game_speed; // had to do this use this it the sprites animations
|
||||||
// that were not affected by game_speed, like discard
|
// that were not affected by game_speed, like discard
|
||||||
// and draw-to-deck animations.
|
// and draw-to-deck animations.
|
||||||
|
|
||||||
#endif // GAME_H
|
#endif // GAME_H
|
||||||
|
|||||||
+745
-781
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -83,7 +83,7 @@ static int get_unused_joker_pb()
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int allocate_pb_if_needed(u8 joker_id)
|
static int allocate_pb_if_needed(u8 joker_id)
|
||||||
{
|
{
|
||||||
int joker_spritesheet_idx = joker_get_spritesheet_idx(joker_id);
|
int joker_spritesheet_idx = joker_get_spritesheet_idx(joker_id);
|
||||||
int joker_pb = joker_spritesheet_pb_map[joker_spritesheet_idx];
|
int joker_pb = joker_spritesheet_pb_map[joker_spritesheet_idx];
|
||||||
if (joker_pb != UNDEFINED)
|
if (joker_pb != UNDEFINED)
|
||||||
|
|||||||
+23
-27
@@ -13,7 +13,7 @@
|
|||||||
#define SPRITE_FOCUS_RAISE_PX 10
|
#define SPRITE_FOCUS_RAISE_PX 10
|
||||||
|
|
||||||
OBJ_ATTR obj_buffer[MAX_SPRITES];
|
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};
|
static bool free_affines[MAX_AFFINES] = {false};
|
||||||
@@ -26,7 +26,7 @@ Sprite *sprite_new(u16 a0, u16 a1, u32 tid, u32 pb, int sprite_index)
|
|||||||
sprite->obj = NULL;
|
sprite->obj = NULL;
|
||||||
sprite->aff = NULL;
|
sprite->aff = NULL;
|
||||||
|
|
||||||
if (!free_sprites[sprite_index])
|
if(!free_sprites[sprite_index])
|
||||||
{
|
{
|
||||||
free_sprites[sprite_index] = sprite;
|
free_sprites[sprite_index] = sprite;
|
||||||
}
|
}
|
||||||
@@ -40,9 +40,9 @@ Sprite *sprite_new(u16 a0, u16 a1, u32 tid, u32 pb, int sprite_index)
|
|||||||
{
|
{
|
||||||
int aff_index = MAX_AFFINES;
|
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;
|
free_affines[i] = true;
|
||||||
aff_index = i;
|
aff_index = i;
|
||||||
@@ -74,8 +74,7 @@ Sprite *sprite_new(u16 a0, u16 a1, u32 tid, u32 pb, int sprite_index)
|
|||||||
|
|
||||||
void sprite_destroy(Sprite **sprite)
|
void sprite_destroy(Sprite **sprite)
|
||||||
{
|
{
|
||||||
if (*sprite == NULL)
|
if (*sprite == NULL) return;
|
||||||
return;
|
|
||||||
obj_hide((*sprite)->obj);
|
obj_hide((*sprite)->obj);
|
||||||
free_sprites[(*sprite)->obj - obj_buffer] = NULL;
|
free_sprites[(*sprite)->obj - obj_buffer] = NULL;
|
||||||
if ((*sprite)->aff != NULL)
|
if ((*sprite)->aff != NULL)
|
||||||
@@ -88,15 +87,14 @@ void sprite_destroy(Sprite **sprite)
|
|||||||
|
|
||||||
int sprite_get_layer(Sprite *sprite)
|
int sprite_get_layer(Sprite *sprite)
|
||||||
{
|
{
|
||||||
if (sprite == NULL || sprite->obj == NULL)
|
if (sprite == NULL || sprite->obj == NULL) return -1;
|
||||||
return -1;
|
|
||||||
return sprite->obj - obj_buffer;
|
return sprite->obj - obj_buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sprite functions
|
// Sprite functions
|
||||||
void sprite_init()
|
void sprite_init()
|
||||||
{
|
{
|
||||||
oam_init(obj_buffer, MAX_SPRITES);
|
oam_init(obj_buffer, MAX_SPRITES);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sprite_draw()
|
void sprite_draw()
|
||||||
@@ -115,9 +113,9 @@ int sprite_get_pb(const Sprite *sprite)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SpriteObject methods
|
// SpriteObject methods
|
||||||
SpriteObject *sprite_object_new()
|
SpriteObject* sprite_object_new()
|
||||||
{
|
{
|
||||||
SpriteObject *sprite_object = (SpriteObject *)malloc(sizeof(SpriteObject));
|
SpriteObject* sprite_object = (SpriteObject*)malloc(sizeof(SpriteObject));
|
||||||
sprite_object->sprite = NULL;
|
sprite_object->sprite = NULL;
|
||||||
sprite_object_reset_transform(sprite_object);
|
sprite_object_reset_transform(sprite_object);
|
||||||
sprite_object->selected = false;
|
sprite_object->selected = false;
|
||||||
@@ -126,16 +124,15 @@ SpriteObject *sprite_object_new()
|
|||||||
return sprite_object;
|
return sprite_object;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sprite_object_destroy(SpriteObject **sprite_object)
|
void sprite_object_destroy(SpriteObject** sprite_object)
|
||||||
{
|
{
|
||||||
if (*sprite_object == NULL)
|
if (*sprite_object == NULL) return;
|
||||||
return;
|
|
||||||
sprite_destroy(&((*sprite_object)->sprite));
|
sprite_destroy(&((*sprite_object)->sprite));
|
||||||
free(*sprite_object);
|
free(*sprite_object);
|
||||||
*sprite_object = NULL;
|
*sprite_object = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sprite_object_set_sprite(SpriteObject *sprite_object, Sprite *sprite)
|
void sprite_object_set_sprite(SpriteObject* sprite_object, Sprite* sprite)
|
||||||
{
|
{
|
||||||
if (sprite_object == NULL)
|
if (sprite_object == NULL)
|
||||||
return;
|
return;
|
||||||
@@ -143,7 +140,7 @@ void sprite_object_set_sprite(SpriteObject *sprite_object, Sprite *sprite)
|
|||||||
sprite_object->sprite = sprite;
|
sprite_object->sprite = sprite;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sprite_object_reset_transform(SpriteObject *sprite_object)
|
void sprite_object_reset_transform(SpriteObject* sprite_object)
|
||||||
{
|
{
|
||||||
sprite_object->tx = 0; // Target position
|
sprite_object->tx = 0; // Target position
|
||||||
sprite_object->ty = 0;
|
sprite_object->ty = 0;
|
||||||
@@ -159,7 +156,7 @@ void sprite_object_reset_transform(SpriteObject *sprite_object)
|
|||||||
sprite_object->vrotation = 0;
|
sprite_object->vrotation = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sprite_object_update(SpriteObject *sprite_object)
|
void sprite_object_update(SpriteObject* sprite_object)
|
||||||
{
|
{
|
||||||
sprite_object->vx += (sprite_object->tx - sprite_object->x) / (8 / game_speed); // SPEED
|
sprite_object->vx += (sprite_object->tx - sprite_object->x) / (8 / game_speed); // SPEED
|
||||||
sprite_object->vy += (sprite_object->ty - sprite_object->y) / (8 / game_speed);
|
sprite_object->vy += (sprite_object->ty - sprite_object->y) / (8 / game_speed);
|
||||||
@@ -215,39 +212,38 @@ void sprite_object_update(SpriteObject *sprite_object)
|
|||||||
sprite_position(sprite_object->sprite, fx2int(sprite_object->x), fx2int(sprite_object->y));
|
sprite_position(sprite_object->sprite, fx2int(sprite_object->x), fx2int(sprite_object->y));
|
||||||
}
|
}
|
||||||
|
|
||||||
void sprite_object_shake(SpriteObject *sprite_object, mm_word sound_id)
|
void sprite_object_shake(SpriteObject* sprite_object, mm_word sound_id)
|
||||||
{
|
{
|
||||||
sprite_object->vscale = float2fx(0.3f);
|
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)
|
if (sound_id == UNDEFINED) return; // If no sound ID is provided, do nothing
|
||||||
return; // If no sound ID is provided, do nothing
|
|
||||||
|
|
||||||
play_sfx(sound_id, MM_BASE_PITCH_RATE);
|
play_sfx(sound_id, MM_BASE_PITCH_RATE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sprite_object_set_selected(SpriteObject *sprite_object, bool selected)
|
void sprite_object_set_selected(SpriteObject* sprite_object, bool selected)
|
||||||
{
|
{
|
||||||
if (sprite_object == NULL)
|
if (sprite_object == NULL)
|
||||||
return;
|
return;
|
||||||
sprite_object->selected = selected;
|
sprite_object->selected = selected;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool sprite_object_is_selected(SpriteObject *sprite_object)
|
bool sprite_object_is_selected(SpriteObject* sprite_object)
|
||||||
{
|
{
|
||||||
if (sprite_object == NULL)
|
if (sprite_object == NULL)
|
||||||
return false;
|
return false;
|
||||||
return sprite_object->selected;
|
return sprite_object->selected;
|
||||||
}
|
}
|
||||||
|
|
||||||
Sprite *sprite_object_get_sprite(SpriteObject *sprite_object)
|
Sprite* sprite_object_get_sprite(SpriteObject* sprite_object)
|
||||||
{
|
{
|
||||||
if (sprite_object == NULL)
|
if (sprite_object == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
return sprite_object->sprite;
|
return sprite_object->sprite;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sprite_object_set_focus(SpriteObject *sprite_object, bool focus)
|
void sprite_object_set_focus(SpriteObject* sprite_object, bool focus)
|
||||||
{
|
{
|
||||||
if (sprite_object->focused == focus)
|
if (sprite_object->focused == focus)
|
||||||
{
|
{
|
||||||
@@ -255,11 +251,11 @@ void sprite_object_set_focus(SpriteObject *sprite_object, bool focus)
|
|||||||
}
|
}
|
||||||
sprite_object->focused = 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);
|
sprite_object->ty = sprite_object->ty + int2fx((focus ? -1 : 1) * SPRITE_FOCUS_RAISE_PX);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool sprite_object_is_focused(SpriteObject *sprite_object)
|
bool sprite_object_is_focused(SpriteObject* sprite_object)
|
||||||
{
|
{
|
||||||
return sprite_object->focused;
|
return sprite_object->focused;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user