Add particles for arrow destruction
parent
b17c521dfd
commit
029415e19f
|
@ -6,6 +6,7 @@ typedef enum EntityTag {
|
||||||
ENEMY_ENT_TAG,
|
ENEMY_ENT_TAG,
|
||||||
CRATES_ENT_TAG,
|
CRATES_ENT_TAG,
|
||||||
CHEST_ENT_TAG,
|
CHEST_ENT_TAG,
|
||||||
|
ARROW_ENT_TAG,
|
||||||
BOULDER_ENT_TAG,
|
BOULDER_ENT_TAG,
|
||||||
LEVEL_END_TAG,
|
LEVEL_END_TAG,
|
||||||
DESTRUCTABLE_ENT_TAG,
|
DESTRUCTABLE_ENT_TAG,
|
||||||
|
|
|
@ -282,6 +282,20 @@ void destroy_entity(Scene_t* scene, TileGrid_t* tilemap, Entity_t* p_ent)
|
||||||
};
|
};
|
||||||
play_particle_emitter(&scene->part_sys, &emitter);
|
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);
|
remove_entity_from_tilemap(&scene->ent_manager, tilemap, p_ent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#include "constants.h"
|
#include "constants.h"
|
||||||
#include "raymath.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)
|
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].sprite = get_sprite(assets, "explode");
|
||||||
item_sprite_map[17].offset = (Vector2){-12, -12};
|
item_sprite_map[17].offset = (Vector2){-12, -12};
|
||||||
item_sprite_map[18].sprite = get_sprite(assets, "chest");
|
item_sprite_map[18].sprite = get_sprite(assets, "chest");
|
||||||
|
item_sprite_map[19].sprite = get_sprite(assets, "boulder");
|
||||||
return true;
|
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->size = p_bbox->size;
|
||||||
p_hurtbox->def = 2;
|
p_hurtbox->def = 2;
|
||||||
p_hurtbox->damage_src = -1;
|
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;
|
return p_boulder;
|
||||||
}
|
}
|
||||||
|
|
||||||
Entity_t* create_arrow(EntityManager_t* ent_manager, Assets_t* assets, uint8_t dir)
|
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;
|
if (p_arrow == NULL) return NULL;
|
||||||
|
|
||||||
add_component(p_arrow, CTILECOORD_COMP_T);
|
add_component(p_arrow, CTILECOORD_COMP_T);
|
||||||
|
|
Loading…
Reference in New Issue