From 3d24cd7f6d22610bb2366f630eb680b38ef55557 Mon Sep 17 00:00:00 2001 From: Agent X <44549182+AgentXLP@users.noreply.github.com> Date: Mon, 15 Jul 2024 10:48:01 -0400 Subject: [PATCH] Day Night Cycle DX v2.2 --- mods/day-night-cycle/a-constants.lua | 6 +- mods/day-night-cycle/a-utils.lua | 1 + mods/day-night-cycle/b-time.lua | 25 +++++-- mods/day-night-cycle/data/bhvDNCSkybox.bhv | Bin 105 -> 113 bytes mods/day-night-cycle/main.lua | 62 ++++++++---------- mods/day-night-cycle/skybox.lua | 4 +- mods/day-night-cycle/sound/03_level_grass.m64 | Bin 5122 -> 3053 bytes mods/day-night-cycle/sound/05_level_water.m64 | Bin 4780 -> 6585 bytes mods/day-night-cycle/sound/06_level_hot.m64 | Bin 2451 -> 2021 bytes mods/day-night-cycle/sound/08_level_snow.m64 | Bin 8143 -> 7264 bytes 10 files changed, 54 insertions(+), 44 deletions(-) mode change 100644 => 100755 mods/day-night-cycle/a-constants.lua mode change 100644 => 100755 mods/day-night-cycle/a-utils.lua mode change 100644 => 100755 mods/day-night-cycle/b-time.lua mode change 100644 => 100755 mods/day-night-cycle/main.lua mode change 100644 => 100755 mods/day-night-cycle/skybox.lua diff --git a/mods/day-night-cycle/a-constants.lua b/mods/day-night-cycle/a-constants.lua old mode 100644 new mode 100755 index bd6eb4170..91a709ac9 --- a/mods/day-night-cycle/a-constants.lua +++ b/mods/day-night-cycle/a-constants.lua @@ -1,8 +1,8 @@ -- version -DNC_VERSION = "v2.1" +DNC_VERSION = "v2.2" -- skybox constants -E_MODEL_SKYBOX = smlua_model_util_get_id("dnc_skybox_geo") +E_MODEL_DNC_SKYBOX = smlua_model_util_get_id("dnc_skybox_geo") SKYBOX_SCALE = 600 SKYBOX_DAY = 0 @@ -19,7 +19,7 @@ BACKGROUND_BELOW_CLOUDS_SUNSET = 15 -- time constants SECOND = 30 -- how many frames are in 1 second -MINUTE = SECOND * 60 -- how many frames are in 1 minutes +MINUTE = SECOND * 60 -- how many frames are in 1 minute HOUR_SUNRISE_START = 4 HOUR_SUNRISE_END = 5 diff --git a/mods/day-night-cycle/a-utils.lua b/mods/day-night-cycle/a-utils.lua old mode 100644 new mode 100755 index fe293bc0e..826e420d4 --- a/mods/day-night-cycle/a-utils.lua +++ b/mods/day-night-cycle/a-utils.lua @@ -113,6 +113,7 @@ function table_clone(table) return clone end +--- Checks common conditions that make HUD rendering out of place function check_common_hud_render_cancels() local action = gMarioStates[0].action return obj_get_first_with_behavior_id(id_bhvActSelector) ~= nil or diff --git a/mods/day-night-cycle/b-time.lua b/mods/day-night-cycle/b-time.lua old mode 100644 new mode 100755 index 2d44859db..ec1f964af --- a/mods/day-night-cycle/b-time.lua +++ b/mods/day-night-cycle/b-time.lua @@ -75,7 +75,6 @@ function set_time_scale(scale) end --- @param time number ---- @return string --- Returns the properly formatted time string function get_time_string(time) if type(time) ~= "number" then @@ -122,17 +121,34 @@ function time_tick() end end +--- @param sequenceId SeqId +--- @param m64Name string +--- Registers a custom sequence as night music function night_music_register(sequenceId, m64Name) + if type(sequenceId) ~= "number" or math_floor(sequenceId) ~= sequenceId or sequenceId < 0 or sequenceId >= SEQ_COUNT then + error("night_music_register: Parameter 'sequenceId' must be a SeqId") + return + end + if type(m64Name) ~= "string" then + error("night_music_register: Parameter 'm64Name' must be a string") + return + end + local id = SEQ_COUNT + sequenceId - smlua_audio_utils_replace_sequence(id, 20, 127, m64Name) + smlua_audio_utils_replace_sequence(id, 42, 80, m64Name) sNightSequences[sequenceId] = id end -function handle_night_music() +--- Returns whether or not night music should be played +function should_play_night_music() + return is_dnc_enabled() and show_day_night_cycle() and playNightMusic and dayNightCycleApi.playNightMusic +end + +function update_night_music() if gNetworkPlayers[0].currActNum == 99 or gMarioStates[0].area == nil then return end local musicParam = gMarioStates[0].area.musicParam2 - if not playNightMusic or not dayNightCycleApi.playNightMusic then + if not should_play_night_music() then if playingNightMusic then playingNightMusic = false fade_volume_scale(SEQ_PLAYER_LEVEL, 127, 1) @@ -168,6 +184,7 @@ function handle_night_music() end --- @param obj Object +--- Function to delete an object if it's dark out, meant to be used in behaviors function delete_at_dark(obj) if obj == nil then error("delete_at_dark: Parameter 'obj' must be an Object") diff --git a/mods/day-night-cycle/data/bhvDNCSkybox.bhv b/mods/day-night-cycle/data/bhvDNCSkybox.bhv index bbd26bea989e51412625fd197719beebda229f29..9bf2d0c64ea0ac3f319fba1c8b48beba582232c7 100644 GIT binary patch delta 41 qcmc~SoM6czoRm=(pOTk6(N;nN#*Qz}u1w0Wh|kH-FJNF`-~<3FC=Hna delta 33 mcmXTSoM6eqpOjHH(NRJKM8_9rS0?3G#OLJa7cej|Z~_3jdkSR$ diff --git a/mods/day-night-cycle/main.lua b/mods/day-night-cycle/main.lua old mode 100644 new mode 100755 index 5c392c02c..b1f983387 --- a/mods/day-night-cycle/main.lua +++ b/mods/day-night-cycle/main.lua @@ -1,7 +1,6 @@ -- name: Day Night Cycle DX -- incompatible: light day-night-cycle --- description: Day Night Cycle DX v2.1\nBy \\#ec7731\\Agent X\n\n\\#dcdcdc\\This mod adds a fully featured day & night cycle system with night, sunrise, day and sunset to sm64coopdx. It includes an API and hook system for interfacing with several components of the mod externally. This mod was originally made for sm64ex-coop but has been practically rewritten for sm64coopdx.\n\nDays last 24 minutes and with the /time command, you can get/set the time or change your settings.\n\nThere is also now a new menu in the pause menu for Day Night Cycle DX!\n\nSpecial thanks to \\#00ffff\\AngelicMiracles\\#dcdcdc\\ for the sunset, sunrise and night time skyboxes.\nSpecial thanks to \\#344ee1\\eros71\\#dcdcdc\\ for salvaging\nthe mod files. --- pausable: true +-- description: Day Night Cycle DX v2.2\nBy \\#ec7731\\Agent X\n\n\\#dcdcdc\\This mod adds a fully featured day & night cycle system with night, sunrise, day and sunset to sm64coopdx. It includes an API and hook system for interfacing with several components of the mod externally. This mod was originally made for sm64ex-coop but has been practically rewritten for sm64coopdx.\n\nDays last 24 minutes and with the /time command, you can get/set the time or change your settings.\n\nThere is also now a new menu in the pause menu for Day Night Cycle DX!\n\nSpecial thanks to \\#00ffff\\AngelicMiracles\\#dcdcdc\\ for the sunset, sunrise and night time skyboxes.\nSpecial thanks to \\#344ee1\\eros71\\#dcdcdc\\ for salvaging\nthe mod files. --- @class Vec2f --- @field public x number @@ -71,28 +70,32 @@ function show_day_night_cycle() or in_vanilla_level(LEVEL_DDD) or in_vanilla_level(LEVEL_THI) or (in_vanilla_level(LEVEL_CASTLE) and gNetworkPlayers[0].currAreaIndex ~= 3) or in_vanilla_level(LEVEL_WDW) end +local function reset_lighting() + set_lighting_dir(1, 0) + set_lighting_dir(2, 0) + set_lighting_color(0, 255) + set_lighting_color(1, 255) + set_lighting_color(2, 255) + set_vertex_color(0, 255) + set_vertex_color(1, 255) + set_vertex_color(2, 255) + set_fog_color(0, 255) + set_fog_color(1, 255) + set_fog_color(2, 255) + set_fog_intensity(1) +end + local function update() if not is_dnc_enabled() then - set_lighting_dir(1, 0) - set_lighting_dir(2, 0) - set_lighting_color(0, 255) - set_lighting_color(1, 255) - set_lighting_color(2, 255) - set_vertex_color(0, 255) - set_vertex_color(1, 255) - set_vertex_color(2, 255) - set_fog_color(0, 255) - set_fog_color(1, 255) - set_fog_color(2, 255) - set_fog_intensity(1) - + reset_lighting() return end if network_check_singleplayer_pause() then return end + if network_player_connected_count() == 1 and obj_get_first_with_behavior_id(id_bhvActSelector) ~= nil then return end if network_is_server() then time_tick() end - if not init then handle_night_music() end + if not init then update_night_music() end -- spawn skyboxes local skybox = get_skybox() @@ -110,7 +113,7 @@ local function update() spawn_non_sync_object( bhvDNCSkybox, - E_MODEL_SKYBOX, + E_MODEL_DNC_SKYBOX, 0, 0, 0, --- @param o Object function(o) @@ -124,7 +127,7 @@ local function update() -- spawn static skybox spawn_non_sync_object( bhvDNCSkybox, - E_MODEL_SKYBOX, + E_MODEL_DNC_SKYBOX, 0, 0, 0, --- @param o Object function(o) @@ -174,7 +177,7 @@ local function update() ambientColor = COLOR_AMBIENT_DAY end local overrideAmbientColor = dnc_call_hook(DNC_HOOK_SET_AMBIENT_LIGHTING_COLOR, table_clone(ambientColor)) - if overrideAmbientColor ~= nil and type(overrideColor) == "table" then ambientColor = overrideColor end + if overrideAmbientColor ~= nil and type(overrideColor) == "table" then ambientColor = overrideAmbientColor end -- calculate fog color local fogColor = COLOR_DAY @@ -244,18 +247,7 @@ local function update() set_fog_color(2, fogColor.b) set_fog_intensity(intensity) else - set_lighting_dir(1, 0) - set_lighting_dir(2, 0) - set_lighting_color(0, 255) - set_lighting_color(1, 255) - set_lighting_color(2, 255) - set_vertex_color(0, 255) - set_vertex_color(1, 255) - set_vertex_color(2, 255) - set_fog_color(0, 255) - set_fog_color(1, 255) - set_fog_color(2, 255) - set_fog_intensity(1) + reset_lighting() end init = false @@ -271,7 +263,7 @@ local function on_hud_render_behind() local scale = 0.5 local text = get_time_string(gGlobalSyncTable.time) - local hidden = hud_is_hidden() + local hidden = hud_is_hidden() or (hud_get_value(HUD_DISPLAY_FLAGS) & HUD_DISPLAY_FLAG_LIVES) == 0 local x = if_then_else(hidden, (djui_hud_get_screen_width() * 0.5) - (djui_hud_measure_text(text) * (0.5 * scale)), 24) local y = if_then_else(hidden, (djui_hud_get_screen_height() - 20), 32) local overridePos = dnc_call_hook(DNC_HOOK_SET_DISPLAY_TIME_POS, { x = x, y = y }) @@ -414,7 +406,6 @@ local function on_sync_command() gGlobalSyncTable.timeScale = REAL_MINUTE save_time() - mod_storage_save_number("scale", REAL_MINUTE) end local function on_music_command() @@ -510,7 +501,6 @@ local function on_subtract_hour() save_time() end - local sReadonlyMetatable = { __index = function(table, key) return rawget(table, key) @@ -536,6 +526,8 @@ _G.dayNightCycleApi = { get_time_string = get_time_string, delete_at_dark = delete_at_dark, show_day_night_cycle = show_day_night_cycle, + should_play_night_music = should_play_night_music, + night_music_register = night_music_register, dnc_hook_event = dnc_hook_event, constants = { SECOND = SECOND, @@ -634,7 +626,7 @@ if network_is_server() then hook_mod_menu_checkbox("Enable Day Night Cycle", gGlobalSyncTable.dncEnabled, on_set_dnc_enabled) hook_mod_menu_checkbox("24 Hour Time", use24h, on_set_24h_time) hook_mod_menu_checkbox("Night Time Music", playNightMusic, on_set_night_time_music) - hook_mod_menu_slider("Time Scale: " .. math_tointeger(gGlobalSyncTable.timeScale), gGlobalSyncTable.timeScale, 0, 20, on_set_time_scale) + hook_mod_menu_slider("Time Scale: " .. gGlobalSyncTable.timeScale, gGlobalSyncTable.timeScale, 0, 20, on_set_time_scale) hook_mod_menu_button("Add 1 In-Game Hour", on_add_hour) hook_mod_menu_button("Subtract 1 In-Game Hour", on_subtract_hour) end \ No newline at end of file diff --git a/mods/day-night-cycle/skybox.lua b/mods/day-night-cycle/skybox.lua old mode 100644 new mode 100755 index f86ce775a..dab52a8e7 --- a/mods/day-night-cycle/skybox.lua +++ b/mods/day-night-cycle/skybox.lua @@ -2,13 +2,13 @@ local set_override_far,obj_mark_for_deletion,vec3f_to_object_pos,get_skybox,clampf = set_override_far,obj_mark_for_deletion,vec3f_to_object_pos,get_skybox,clampf --- @param o Object -function bhv_skybox_init(o) +function bhv_dnc_skybox_init(o) o.header.gfx.skipInViewCheck = true set_override_far(200000) end --- @param o Object -function bhv_skybox_loop(o) +function bhv_dnc_skybox_loop(o) if not is_dnc_enabled() then obj_mark_for_deletion(o) return diff --git a/mods/day-night-cycle/sound/03_level_grass.m64 b/mods/day-night-cycle/sound/03_level_grass.m64 index 658f648d7cb889e8e3f17785b83dbc5d3e8203e5..9a06dec07f3b49f83b96ed75472baeaa5255faf7 100644 GIT binary patch literal 3053 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 literal 5122 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 diff --git a/mods/day-night-cycle/sound/06_level_hot.m64 b/mods/day-night-cycle/sound/06_level_hot.m64 index c8cdf33b57558c2d7be9bee6fc4a4da81239e94e..13302acff1f0852fcdd3aa370be1f7c077c3b3c5 100644 GIT binary patch literal 2021 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 KiaM5_5dQ^Ew)}Dc diff --git a/mods/day-night-cycle/sound/08_level_snow.m64 b/mods/day-night-cycle/sound/08_level_snow.m64 index cbd5e55505adb03c59f8f2843d8451ce12112755..38d1d3c9026857c5548f0a413adc27bd3d4a7f73 100644 GIT binary patch literal 7264 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 NQ}@-2_cd&p`ZrZrQ_bu=j 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