Compare commits

...

2 Commits

Author SHA1 Message Date
0c266e4127 fp: Clinger dash 2023-10-08 20:19:30 +11:00
4e9cc3b4ed fp: Message ping 2023-10-08 20:11:38 +11:00
4 changed files with 31 additions and 17 deletions

BIN
Data/Audio/message.ogg (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -515,6 +515,7 @@ void TELY_DLL_Init(void *user_data)
game->audio[FP_GameAudio_MerchantGhost] = platform->func_load_audio(assets, DQN_STRING8("Ghost"), DQN_STRING8("Data/Audio/merchant_ghost.ogg"));
game->audio[FP_GameAudio_MerchantGym] = platform->func_load_audio(assets, DQN_STRING8("Gym"), DQN_STRING8("Data/Audio/merchant_gym.ogg"));
game->audio[FP_GameAudio_MerchantPhone] = platform->func_load_audio(assets, DQN_STRING8("Phone"), DQN_STRING8("Data/Audio/merchant_tech.ogg"));
game->audio[FP_GameAudio_Message] = platform->func_load_audio(assets, DQN_STRING8("Message"), DQN_STRING8("Data/Audio/message.ogg"));
platform->user_data = game;
{
@ -1368,6 +1369,7 @@ void FP_EntityActionStateMachine(FP_Game *game, TELY_Audio *audio, TELY_Platform
projectile_pos,
projectile_acceleration,
"Phone Message Projectile");
TELY_Audio_Play(audio, game->audio[FP_GameAudio_Message], 1.f /*volume*/);
} else {
Dqn_FArray<Dqn_Rect, FP_GameDirection_Count> attack_boxes = FP_Game_CalcEntityMeleeAttackBoxes(game, entity->handle);
entity->attack_box_size = attack_boxes.data[entity->direction].size;
@ -1713,6 +1715,11 @@ void FP_Update(TELY_Platform *platform, FP_Game *game, TELY_PlatformInput *input
if (dist_to_waypoint_sq > DQN_SQUARED(arrival_threshold)) {
Dqn_V2 entity_to_waypoint_norm = Dqn_V2_Normalise(entity_to_waypoint);
acceleration_meters_per_s = entity_to_waypoint_norm * (entity->base_acceleration_per_s.meters * 0.25f);
if (entity->type == FP_EntityType_Clinger && game->play.clock_ms >= entity->clinger_next_dash_timestamp) {
entity->clinger_next_dash_timestamp = game->play.clock_ms + 2000;
acceleration_meters_per_s = entity_to_waypoint_norm * entity->base_acceleration_per_s.meters * 45.f;
}
break;
}
@ -2024,6 +2031,9 @@ void FP_Update(TELY_Platform *platform, FP_Game *game, TELY_PlatformInput *input
uint32_t max_vary = DQN_CAST(uint32_t)(one_meter * 2.f);
waypoint->data.offset += Dqn_V2_InitNx2(DQN_CAST(Dqn_f32)Dqn_PCG32_Range(&game->play.rng, min_vary, max_vary),
DQN_CAST(Dqn_f32)Dqn_PCG32_Range(&game->play.rng, min_vary, max_vary));
if (Dqn_PCG32_NextF32(&game->play.rng) >= .5f)
waypoint->data.offset *= -1;
}
game->play.enemies_spawned_this_wave++;

View File

@ -463,7 +463,6 @@ static FP_GameEntityHandle FP_Entity_CreateTerry(FP_Game *game, Dqn_V2 pos, DQN_
entity->local_hit_box_size = FP_Game_MetersToPixelsNx2(game->play, 0.5f, entity->sprite_height.meters * .6f);
entity->hp_cap = FP_DEFAULT_DAMAGE * 3;
entity->hp = entity->hp_cap;
entity->coins = 1'000'000;
FP_Entity_AddDebugEditorFlags(game, result);
entity->flags |= FP_GameEntityFlag_NonTraversable;
entity->flags |= FP_GameEntityFlag_Attackable;

View File

@ -220,6 +220,7 @@ struct FP_GameEntity
Dqn_usize terry_mobile_data_plan;
Dqn_usize terry_mobile_data_plan_cap;
Dqn_usize clinger_next_dash_timestamp;
Dqn_usize coins;
FP_GameInventory inventory;
@ -272,6 +273,7 @@ enum FP_GameAudio
FP_GameAudio_MerchantGhost,
FP_GameAudio_MerchantGym,
FP_GameAudio_MerchantPhone,
FP_GameAudio_Message,
FP_GameAudio_Count,
};