Add more SFX

Also, revert crate ground state behaviour
scene_man
En Yi 2023-11-13 14:23:31 +08:00
parent c78dc50f50
commit 72c27ed92e
5 changed files with 40 additions and 5 deletions

View File

@ -3,12 +3,12 @@
#define MAX_TEXTURES 16
#define MAX_SPRITES 64
#define MAX_SOUNDS 16
#define MAX_SOUNDS 32
#define MAX_FONTS 4
#define MAX_N_TILES 4096
#define MAX_NAME_LEN 32
#define MAX_LEVEL_PACK 4
#define N_SFX 18
#define N_SFX 32
#define MAX_EMITTER_CONF 8
//#define MAX_PARTICLE_EMITTER 8
#define MAX_ACTIVE_PARTICLE_EMITTER 32

View File

@ -48,6 +48,14 @@ int main(void)
load_sfx(&engine, "snd_wdrop", WATER_IN_SFX);
load_sfx(&engine, "snd_bland", BOULDER_LAND_SFX);
load_sfx(&engine, "snd_bubble", BUBBLE_SFX);
load_sfx(&engine, "snd_mdestroy", METAL_DESTROY_SFX);
load_sfx(&engine, "snd_wdestroy", WOOD_DESTROY_SFX);
load_sfx(&engine, "snd_cland", WOOD_LAND_SFX);
load_sfx(&engine, "snd_explsn", EXPLOSION_SFX);
load_sfx(&engine, "snd_coin", COIN_SFX);
load_sfx(&engine, "snd_arrhit", ARROW_DESTROY_SFX);
load_sfx(&engine, "snd_launch", ARROW_RELEASE_SFX);
load_sfx(&engine, "snd_launch", BOMB_RELEASE_SFX);
LevelScene_t scene;
scene.scene.engine = &engine;

View File

@ -32,5 +32,6 @@ typedef enum SFXTag {
BOMB_RELEASE_SFX,
EXPLOSION_SFX,
BUBBLE_SFX,
COIN_SFX,
} SFXTag_t;
#endif

View File

@ -281,6 +281,7 @@ void destroy_entity(Scene_t* scene, TileGrid_t* tilemap, Entity_t* p_ent)
.update_func = &simple_particle_system_update,
};
play_particle_emitter(&scene->part_sys, &emitter);
play_sfx(scene->engine, COIN_SFX);
}
else if (p_ent->m_tag == ARROW_ENT_TAG)
{
@ -294,6 +295,7 @@ void destroy_entity(Scene_t* scene, TileGrid_t* tilemap, Entity_t* p_ent)
.update_func = &simple_particle_system_update,
};
play_particle_emitter(&scene->part_sys, &emitter);
play_sfx(scene->engine, ARROW_DESTROY_SFX);
}
remove_entity_from_tilemap(&scene->ent_manager, tilemap, p_ent);
@ -1470,6 +1472,10 @@ void state_transition_update_system(Scene_t* scene)
{
play_sfx(scene->engine, BOULDER_LAND_SFX);
}
else if (p_ent->m_tag == CRATES_ENT_TAG)
{
play_sfx(scene->engine, WOOD_LAND_SFX);
}
}
if (p_mstate->water_state == 0b01)
{
@ -1755,15 +1761,19 @@ void container_destroy_system(Scene_t* scene)
{
case CONTAINER_LEFT_ARROW:
new_ent = create_arrow(&scene->ent_manager, 0);
play_sfx(scene->engine, ARROW_RELEASE_SFX);
break;
case CONTAINER_RIGHT_ARROW:
new_ent = create_arrow(&scene->ent_manager, 1);
play_sfx(scene->engine, ARROW_RELEASE_SFX);
break;
case CONTAINER_UP_ARROW:
new_ent = create_arrow(&scene->ent_manager, 2);
play_sfx(scene->engine, ARROW_RELEASE_SFX);
break;
case CONTAINER_DOWN_ARROW:
new_ent = create_arrow(&scene->ent_manager, 3);
play_sfx(scene->engine, ARROW_RELEASE_SFX);
break;
case CONTAINER_BOMB:
if (dmg_src != NULL && dmg_src->m_tag == PLAYER_ENT_TAG)
@ -1782,19 +1792,37 @@ void container_destroy_system(Scene_t* scene)
launch_dir.x = -1;
}
new_ent = create_bomb(&scene->ent_manager, launch_dir);
play_sfx(scene->engine, BOMB_RELEASE_SFX);
}
else
{
new_ent = create_explosion(&scene->ent_manager);
play_sfx(scene->engine, EXPLOSION_SFX);
}
break;
case CONTAINER_EXPLOSION:
new_ent = create_explosion(&scene->ent_manager);
play_sfx(scene->engine, EXPLOSION_SFX);
break;
default:
new_ent = NULL;
break;
}
if (
p_container->item != CONTAINER_EXPLOSION
&& p_container->item != CONTAINER_BOMB
)
{
if (p_container->material == WOODEN_CONTAINER)
{
play_sfx(scene->engine, WOOD_DESTROY_SFX);
}
else
{
play_sfx(scene->engine, METAL_DESTROY_SFX);
}
}
if (new_ent != NULL)
{
CTransform_t* new_p_ct = get_component(new_ent, CTRANSFORM_COMP_T);

View File

@ -46,9 +46,7 @@ Entity_t* create_crate(EntityManager_t* ent_manager, bool metal, ContainerItem_t
CTransform_t* p_ctransform = add_component(p_crate, CTRANSFORM_COMP_T);
p_ctransform->grav_delay = 7;
p_ctransform->shape_factor = metal ? (Vector2){0.7,0.7} : (Vector2){0.8,0.8} ;
CMovementState_t* p_move = add_component(p_crate, CMOVEMENTSTATE_T);
p_move->ground_state |= 3;
add_component(p_crate, CMOVEMENTSTATE_T);
add_component(p_crate, CTILECOORD_COMP_T);
CHurtbox_t* p_hurtbox = add_component(p_crate, CHURTBOX_T);