6 Commits

Author SHA1 Message Date
doylet 50d6271413 fp: Use audio handles 2023-11-21 22:47:54 +11:00
doylet 93e5302c60 fp: Add initial impl of fade in and out wave music 2023-11-21 00:14:50 +11:00
doylet b03c6c3e56 fp: Get new audio stop functionality 2023-11-15 09:47:34 +11:00
Jojangles 074ba436cb Honestly i'm floundering right now 2023-11-14 09:05:25 +11:00
Jojangles 2d685fcdb9 Submodule changes 2023-11-14 08:59:28 +11:00
Jojangles ebc969603d tely: Add a way to stop music from playing 2023-11-14 08:44:10 +11:00
5 changed files with 25 additions and 20 deletions
BIN
View File
Binary file not shown.
+1 -1
+9 -10
View File
@@ -454,6 +454,7 @@ void TELY_OS_DLLInit(TELY_OS *os)
game->audio[FP_GameAudio_Ambience1] = os->funcs.load_audio(assets, DQN_STR8("Ambience one"), DQN_STR8("Data/Audio/ambience_1.ogg"));
game->audio[FP_GameAudio_Ambience2] = os->funcs.load_audio(assets, DQN_STR8("Ambience two"), DQN_STR8("Data/Audio/ambience_2.ogg"));
game->audio[FP_GameAudio_Music1] = os->funcs.load_audio(assets, DQN_STR8("Music one"), DQN_STR8("Data/Audio/music_1.ogg"));
game->audio[FP_GameAudio_Music2] = os->funcs.load_audio(assets, DQN_STR8("Music two"), DQN_STR8("Data/Audio/music_2.ogg"));
// NOTE: Load sprite sheets ====================================================================
os->user_data = game;
@@ -2014,12 +2015,18 @@ static void FP_Update(TELY_OS *os, FP_Game *game, TELY_OSInput *input, TELY_Audi
// haven't given the player cooldown yet, so we assign a timestamp for that
if (game->play.wave_cooldown_timestamp_ms == 0) {
game->play.wave_cooldown_timestamp_ms = game->play.clock_ms + FP_COOLDOWN_WAVE_TIME_MS;
TELY_Audio_Fade(audio, game->bg_music1, TELY_AudioEffectFade_Out, 2000 /*fade_duration_ms*/);
game->bg_music2 = TELY_Audio_Play(audio, game->audio[FP_GameAudio_Music2], 1.f);
TELY_Audio_Fade(audio, game->bg_music2, TELY_AudioEffectFade_In, 2000 /*fade_duration_ms*/);
} else {
// NOTE: Check if cooldown has elapsed, the next wave can start if so
if (game->play.clock_ms > game->play.wave_cooldown_timestamp_ms) {
game->play.enemies_per_wave = DQN_MAX(5 * DQN_CAST(uint32_t)game->play.mob_spawners.size, DQN_CAST(uint32_t)(game->play.enemies_per_wave * 1.5));
game->play.enemies_spawned_this_wave = 0; // Important! Reset the spawn count
game->play.wave_cooldown_timestamp_ms = 0; // Important! We reset the timestamp for the next wave
TELY_Audio_Fade(audio, game->bg_music2, TELY_AudioEffectFade_Out, 2000 /*fade_duration_ms*/);
game->bg_music1 = TELY_Audio_Play(audio, game->audio[FP_GameAudio_Music1], 1.f);
TELY_Audio_Fade(audio, game->bg_music1, TELY_AudioEffectFade_In, 2000 /*fade_duration_ms*/);
if (monkey_spawn && game->play.current_wave != 0) {
// NOTE: We spawn a monkey at these wave intervals;
@@ -2036,6 +2043,7 @@ static void FP_Update(TELY_OS *os, FP_Game *game, TELY_OSInput *input, TELY_Audi
}
game->play.current_wave++;
//TELY_Audio_Stop(audio, game->audio[FP_GameAudio_Music2]);
}
}
@@ -4453,16 +4461,6 @@ void TELY_OS_DLLFrameUpdate(TELY_OS *os)
// =============================================================================================
TELY_Audio *audio = &os->audio;
#if 1
if (audio->playback_size == 0) {
TELY_Audio_Play(audio, game->audio[FP_GameAudio_Ambience2], 1.f /*volume*/);
}
#endif
// =============================================================================================
if (game->play.state == FP_GameState_Play || game->play.state == FP_GameState_Tutorial) {
if (TELY_OSInput_KeyWasDown(input->mouse_left) && TELY_OSInput_KeyIsDown(input->mouse_left)) {
if (game->play.prev_active_entity.id)
@@ -4492,6 +4490,7 @@ void TELY_OS_DLLFrameUpdate(TELY_OS *os)
}
}
TELY_Audio *audio = &os->audio;
for (game->play.delta_s_accumulator += DQN_CAST(Dqn_f32)input->delta_s;
game->play.delta_s_accumulator > FP_GAME_PHYSICS_STEP;
game->play.delta_s_accumulator -= FP_GAME_PHYSICS_STEP) {
+12 -9
View File
@@ -339,6 +339,7 @@ enum FP_GameAudio
FP_GameAudio_Ambience1,
FP_GameAudio_Ambience2,
FP_GameAudio_Music1,
FP_GameAudio_Music2,
FP_GameAudio_Count,
};
@@ -480,15 +481,17 @@ struct FP_Game
TELY_AssetFontHandle jetbrains_mono_font;
TELY_AssetFontHandle talkco_font;
TELY_AssetAudioHandle audio[FP_GameAudio_Count];
TELY_AssetSpriteSheet atlas_sprite_sheet;
TELY_RFui rfui;
FP_GamePlay play;
Dqn_Arena *frame_arena;
uint16_t font_size;
uint16_t large_font_size;
uint16_t large_talkco_font_size;
uint16_t xlarge_talkco_font_size;
TELY_AssetAudioHandle audio[FP_GameAudio_Count];
TELY_AudioPlaybackHandle bg_music1;
TELY_AudioPlaybackHandle bg_music2;
TELY_AssetSpriteSheet atlas_sprite_sheet;
TELY_RFui rfui;
FP_GamePlay play;
Dqn_Arena *frame_arena;
uint16_t font_size;
uint16_t large_font_size;
uint16_t large_talkco_font_size;
uint16_t xlarge_talkco_font_size;
};
struct FP_GameAStarNode
BIN
View File
Binary file not shown.