Add particles for arrow destruction

scene_man
En Yi 2023-11-10 23:15:12 +08:00
parent b17c521dfd
commit 029415e19f
3 changed files with 23 additions and 2 deletions

View File

@ -6,6 +6,7 @@ typedef enum EntityTag {
ENEMY_ENT_TAG,
CRATES_ENT_TAG,
CHEST_ENT_TAG,
ARROW_ENT_TAG,
BOULDER_ENT_TAG,
LEVEL_END_TAG,
DESTRUCTABLE_ENT_TAG,

View File

@ -282,6 +282,20 @@ void destroy_entity(Scene_t* scene, TileGrid_t* tilemap, Entity_t* p_ent)
};
play_particle_emitter(&scene->part_sys, &emitter);
}
else if (p_ent->m_tag == ARROW_ENT_TAG)
{
const CTransform_t* p_ctransform = get_component(p_ent, CTRANSFORM_COMP_T);
ParticleEmitter_t emitter = {
.spr = get_sprite(&scene->engine->assets, "p_arrow"),
.config = get_emitter_conf(&scene->engine->assets, "pe_burst"),
.position = p_ctransform->position,
.n_particles = 2,
.user_data = &(CONTAINER_OF(scene, LevelScene_t, scene)->data),
.update_func = &simple_particle_system_update,
};
play_particle_emitter(&scene->part_sys, &emitter);
}
remove_entity_from_tilemap(&scene->ent_manager, tilemap, p_ent);
}

View File

@ -2,7 +2,7 @@
#include "constants.h"
#include "raymath.h"
static SpriteRenderInfo_t item_sprite_map[19] = {0};
static SpriteRenderInfo_t item_sprite_map[20] = {0};
bool init_item_creation(Assets_t* assets)
{
@ -28,6 +28,7 @@ bool init_item_creation(Assets_t* assets)
item_sprite_map[17].sprite = get_sprite(assets, "explode");
item_sprite_map[17].offset = (Vector2){-12, -12};
item_sprite_map[18].sprite = get_sprite(assets, "chest");
item_sprite_map[19].sprite = get_sprite(assets, "boulder");
return true;
}
@ -96,12 +97,17 @@ Entity_t* create_boulder(EntityManager_t* ent_manager, Assets_t* assets)
p_hurtbox->size = p_bbox->size;
p_hurtbox->def = 2;
p_hurtbox->damage_src = -1;
CSprite_t* p_cspr = add_component(p_boulder, CSPRITE_T);
p_cspr->sprites = item_sprite_map;
p_cspr->current_idx = 19;
return p_boulder;
}
Entity_t* create_arrow(EntityManager_t* ent_manager, Assets_t* assets, uint8_t dir)
{
Entity_t* p_arrow = add_entity(ent_manager, DESTRUCTABLE_ENT_TAG);
Entity_t* p_arrow = add_entity(ent_manager, ARROW_ENT_TAG);
if (p_arrow == NULL) return NULL;
add_component(p_arrow, CTILECOORD_COMP_T);