Extracted focus to SpriteObject for joker selling - WIP
This commit is contained in:
+4
-1
@@ -27,6 +27,8 @@ typedef struct
|
|||||||
FIXED rotation;
|
FIXED rotation;
|
||||||
FIXED vrotation;
|
FIXED vrotation;
|
||||||
bool selected;
|
bool selected;
|
||||||
|
bool focused;
|
||||||
|
|
||||||
} SpriteObject;
|
} SpriteObject;
|
||||||
|
|
||||||
// Sprite methods
|
// Sprite methods
|
||||||
@@ -58,6 +60,7 @@ void sprite_object_shake(SpriteObject* sprite_object, mm_word sound_id);
|
|||||||
void sprite_object_set_selected(SpriteObject* sprite_object, bool selected);
|
void sprite_object_set_selected(SpriteObject* sprite_object, bool selected);
|
||||||
bool sprite_object_is_selected(SpriteObject* sprite_object);
|
bool sprite_object_is_selected(SpriteObject* sprite_object);
|
||||||
Sprite* sprite_object_get_sprite(SpriteObject* sprite_object);
|
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);
|
||||||
|
|
||||||
#endif // SPRITE_H
|
#endif // SPRITE_H
|
||||||
+7
-18
@@ -239,6 +239,7 @@ static const Rect ROUND_END_NUM_HANDS_RECT = {88, 116, UNDEFINED, UNDEF
|
|||||||
static const Rect HAND_REWARD_RECT = {168, UNDEFINED, UNDEFINED, UNDEFINED };
|
static const Rect HAND_REWARD_RECT = {168, UNDEFINED, UNDEFINED, UNDEFINED };
|
||||||
static const Rect CASHOUT_RECT = {88, 72, UNDEFINED, UNDEFINED };
|
static const Rect CASHOUT_RECT = {88, 72, UNDEFINED, UNDEFINED };
|
||||||
static const Rect SHOP_REROLL_RECT = {88, 96, UNDEFINED, UNDEFINED };
|
static const Rect SHOP_REROLL_RECT = {88, 96, UNDEFINED, UNDEFINED };
|
||||||
|
#define ITEM_SHOP_Y 71 // TODO: Needs to be a rect?
|
||||||
|
|
||||||
//TODO: Properly define and use
|
//TODO: Properly define and use
|
||||||
#define MENU_POP_OUT_ANIM_FRAMES 20
|
#define MENU_POP_OUT_ANIM_FRAMES 20
|
||||||
@@ -1002,7 +1003,7 @@ void game_set_state(enum GameState new_game_state)
|
|||||||
game_state = new_game_state;
|
game_state = new_game_state;
|
||||||
}
|
}
|
||||||
|
|
||||||
void jokers_avialable_to_shop_init()
|
void jokers_available_to_shop_init()
|
||||||
{
|
{
|
||||||
int num_defined_jokers = get_joker_registry_size();
|
int num_defined_jokers = get_joker_registry_size();
|
||||||
jokers_available_to_shop = int_list_new(num_defined_jokers);
|
jokers_available_to_shop = int_list_new(num_defined_jokers);
|
||||||
@@ -1015,7 +1016,7 @@ void jokers_avialable_to_shop_init()
|
|||||||
|
|
||||||
void game_init()
|
void game_init()
|
||||||
{
|
{
|
||||||
jokers_avialable_to_shop_init();
|
jokers_available_to_shop_init();
|
||||||
|
|
||||||
hands = max_hands;
|
hands = max_hands;
|
||||||
discards = max_discards;
|
discards = max_discards;
|
||||||
@@ -1789,11 +1790,6 @@ static void held_jokers_update_loop()
|
|||||||
jokers[i]->sprite_object->tx = hand_x - int2fx(spacing_lut[jokers_top][i]);
|
jokers[i]->sprite_object->tx = hand_x - int2fx(spacing_lut[jokers_top][i]);
|
||||||
jokers[i]->sprite_object->ty = hand_y;
|
jokers[i]->sprite_object->ty = hand_y;
|
||||||
|
|
||||||
if (joker_object_is_selected(jokers[i]))
|
|
||||||
{
|
|
||||||
jokers[i]->sprite_object->ty -= int2fx(10);
|
|
||||||
}
|
|
||||||
|
|
||||||
joker_object_update(jokers[i]);
|
joker_object_update(jokers[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2154,10 +2150,10 @@ static void game_shop_create_items(JokerObject *shop_jokers[])
|
|||||||
int_list_remove_by_idx(jokers_available_to_shop, joker_idx);
|
int_list_remove_by_idx(jokers_available_to_shop, joker_idx);
|
||||||
|
|
||||||
shop_jokers[i] = joker_object_new(joker_new(joker_id));
|
shop_jokers[i] = joker_object_new(joker_new(joker_id));
|
||||||
shop_jokers[i]->sprite_object->x = int2fx(120 + i * 32);
|
shop_jokers[i]->sprite_object->x = int2fx(120 + i * CARD_SPRITE_SIZE);
|
||||||
shop_jokers[i]->sprite_object->y = int2fx(160);
|
shop_jokers[i]->sprite_object->y = int2fx(160);
|
||||||
shop_jokers[i]->sprite_object->tx = shop_jokers[i]->sprite_object->x;
|
shop_jokers[i]->sprite_object->tx = shop_jokers[i]->sprite_object->x;
|
||||||
shop_jokers[i]->sprite_object->ty = int2fx(71);
|
shop_jokers[i]->sprite_object->ty = int2fx(ITEM_SHOP_Y);
|
||||||
|
|
||||||
int x = fx2int(shop_jokers[i]->sprite_object->tx) + TILE_SIZE - (get_digits_even(shop_jokers[i]->joker->value) - 1) * TILE_SIZE;
|
int x = fx2int(shop_jokers[i]->sprite_object->tx) + TILE_SIZE - (get_digits_even(shop_jokers[i]->joker->value) - 1) * TILE_SIZE;
|
||||||
int y = fx2int(shop_jokers[i]->sprite_object->ty) + CARD_SPRITE_SIZE + TILE_SIZE;
|
int y = fx2int(shop_jokers[i]->sprite_object->ty) + CARD_SPRITE_SIZE + TILE_SIZE;
|
||||||
@@ -2229,6 +2225,8 @@ static void game_shop_reroll(JokerObject** shop_jokers, int *reroll_cost)
|
|||||||
tte_printf("#{P:%d,%d; cx:0xF000}$%d", SHOP_REROLL_RECT.left, SHOP_REROLL_RECT.top, *reroll_cost);
|
tte_printf("#{P:%d,%d; cx:0xF000}$%d", SHOP_REROLL_RECT.left, SHOP_REROLL_RECT.top, *reroll_cost);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Shop menu input and selection
|
// Shop menu input and selection
|
||||||
static void game_shop_process_user_input(JokerObject** shop_jokers)
|
static void game_shop_process_user_input(JokerObject** shop_jokers)
|
||||||
{
|
{
|
||||||
@@ -2322,8 +2320,6 @@ static void game_shop_process_user_input(JokerObject** shop_jokers)
|
|||||||
{
|
{
|
||||||
if (i == selection_x - 1 && selection_y == 0)
|
if (i == selection_x - 1 && selection_y == 0)
|
||||||
{
|
{
|
||||||
shop_jokers[i]->sprite_object->ty = int2fx(61);
|
|
||||||
|
|
||||||
if (key_hit(SELECT_CARD) && jokers_top < MAX_JOKERS_HELD_SIZE - 1 && money >= shop_jokers[i]->joker->value)
|
if (key_hit(SELECT_CARD) && jokers_top < MAX_JOKERS_HELD_SIZE - 1 && money >= shop_jokers[i]->joker->value)
|
||||||
{
|
{
|
||||||
joker_push(shop_jokers[i]);
|
joker_push(shop_jokers[i]);
|
||||||
@@ -2342,10 +2338,6 @@ static void game_shop_process_user_input(JokerObject** shop_jokers)
|
|||||||
shop_jokers[i] = NULL; // Remove the joker from the shop
|
shop_jokers[i] = NULL; // Remove the joker from the shop
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
shop_jokers[i]->sprite_object->ty = int2fx(71);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2375,7 +2367,6 @@ static void game_shop_lights_anim_frame()
|
|||||||
memcpy16(&pal_bg_mem[8], &shifted_palette[3], 1);
|
memcpy16(&pal_bg_mem[8], &shifted_palette[3], 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void game_shop()
|
void game_shop()
|
||||||
{
|
{
|
||||||
change_background(BG_ID_SHOP);
|
change_background(BG_ID_SHOP);
|
||||||
@@ -2473,8 +2464,6 @@ void game_shop()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void game_blind_select()
|
void game_blind_select()
|
||||||
{
|
{
|
||||||
switch (state) // I'm only using magic numbers here for the sake of simplicity since it's just sequential, but you can replace them with named constants or enums if it makes it clearer
|
switch (state) // I'm only using magic numbers here for the sake of simplicity since it's just sequential, but you can replace them with named constants or enums if it makes it clearer
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
#define MAX_SPRITES 128
|
#define MAX_SPRITES 128
|
||||||
#define MAX_AFFINES 32
|
#define MAX_AFFINES 32
|
||||||
|
#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;
|
||||||
@@ -239,3 +240,18 @@ Sprite* sprite_object_get_sprite(SpriteObject* sprite_object)
|
|||||||
return NULL;
|
return NULL;
|
||||||
return sprite_object->sprite;
|
return sprite_object->sprite;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void sprite_object_set_focus(SpriteObject* sprite_object, bool focus)
|
||||||
|
{
|
||||||
|
if (sprite_object->focused == focus)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
sprite_object->ty = sprite_object->ty + (focus ? -1 : 1) * SPRITE_FOCUS_RAISE_PX;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool sprite_object_is_focused(SpriteObject* sprite_object)
|
||||||
|
{
|
||||||
|
return sprite_object->focused;
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user