Add sprite info for arrows and bombs

scene_man
En Yi 2023-08-15 20:43:04 +08:00
parent 6d97272420
commit b980f16def
2 changed files with 20 additions and 6 deletions

View File

@ -38,6 +38,8 @@
#define GROUND_X_FRICTION 5.8 #define GROUND_X_FRICTION 5.8
#define GROUND_Y_FRICTION 1.0 #define GROUND_Y_FRICTION 1.0
#define ARROW_SPEED 350
#define MAX_WATER_LEVEL 4 #define MAX_WATER_LEVEL 4
#define WATER_BBOX_STEP (TILE_SIZE / MAX_WATER_LEVEL) #define WATER_BBOX_STEP (TILE_SIZE / MAX_WATER_LEVEL)

View File

@ -2,14 +2,19 @@
#include "constants.h" #include "constants.h"
#include "raymath.h" #include "raymath.h"
static SpriteRenderInfo_t item_sprite_map[3] = {0}; static SpriteRenderInfo_t item_sprite_map[7] = {0};
bool init_item_creation(Assets_t* assets) bool init_item_creation(Assets_t* assets)
{ {
item_sprite_map[0].sprite = get_sprite(assets, "w_crate"); item_sprite_map[0].sprite = get_sprite(assets, "w_crate");
item_sprite_map[1].sprite = get_sprite(assets, "m_crate"); item_sprite_map[1].sprite = get_sprite(assets, "m_crate");
item_sprite_map[2].sprite = get_sprite(assets, "arrow"); item_sprite_map[2].sprite = get_sprite(assets, "r_arrow");
item_sprite_map[2].offset = (Vector2){-8, 4}; item_sprite_map[2].offset = (Vector2){-8, 4};
item_sprite_map[3].sprite = get_sprite(assets, "u_arrow");
item_sprite_map[4].sprite = get_sprite(assets, "l_arrow");
item_sprite_map[5].sprite = get_sprite(assets, "d_arrow");
item_sprite_map[6].sprite = get_sprite(assets, "bomb");
item_sprite_map[6].offset = (Vector2){0, -4};
return true; return true;
} }
@ -95,19 +100,22 @@ Entity_t* create_arrow(EntityManager_t* ent_manager, Assets_t* assets, uint8_t d
{ {
case 0: case 0:
p_hitbox->boxes[0] = (Rectangle){10, TILE_SIZE / 2 - 5, 10, 5}; p_hitbox->boxes[0] = (Rectangle){10, TILE_SIZE / 2 - 5, 10, 5};
p_ctransform->velocity.x = -250; p_ctransform->velocity.x = -ARROW_SPEED;
p_cspr->current_idx += 2;
break; break;
case 2: case 2:
p_hitbox->boxes[0] = (Rectangle){TILE_SIZE / 2 - 5, 10, 5, 10}; p_hitbox->boxes[0] = (Rectangle){TILE_SIZE / 2 - 5, 10, 5, 10};
p_ctransform->velocity.y = -250; p_ctransform->velocity.y = -ARROW_SPEED;
p_cspr->current_idx += 1;
break; break;
case 3: case 3:
p_hitbox->boxes[0] = (Rectangle){TILE_SIZE / 2 - 5, 10, 5, 10}; p_hitbox->boxes[0] = (Rectangle){TILE_SIZE / 2 - 5, 10, 5, 10};
p_ctransform->velocity.y = 250; p_ctransform->velocity.y = ARROW_SPEED;
p_cspr->current_idx += 3;
break; break;
default: default:
p_hitbox->boxes[0] = (Rectangle){10, TILE_SIZE / 2 - 5, 10, 5}; p_hitbox->boxes[0] = (Rectangle){10, TILE_SIZE / 2 - 5, 10, 5};
p_ctransform->velocity.x = 250; p_ctransform->velocity.x = ARROW_SPEED;
break; break;
} }
@ -129,6 +137,10 @@ Entity_t* create_bomb(EntityManager_t* ent_manager, Assets_t* assets, Vector2 la
CContainer_t* p_container = add_component(p_bomb, CCONTAINER_T); CContainer_t* p_container = add_component(p_bomb, CCONTAINER_T);
p_container->item = CONTAINER_EXPLOSION; p_container->item = CONTAINER_EXPLOSION;
CSprite_t* p_cspr = add_component(p_bomb, CSPRITE_T);
p_cspr->sprites = item_sprite_map;
p_cspr->current_idx = 6;
CTransform_t* p_ctransform = add_component(p_bomb, CTRANSFORM_COMP_T); CTransform_t* p_ctransform = add_component(p_bomb, CTRANSFORM_COMP_T);
p_ctransform->active = true; p_ctransform->active = true;
p_ctransform->shape_factor = (Vector2){0.1, 0.1}; p_ctransform->shape_factor = (Vector2){0.1, 0.1};