Add temple ambience

master
Wuzzy 2022-03-06 16:24:20 +01:00
parent 7cbd327ad4
commit 89d06d6b34
9 changed files with 32 additions and 16 deletions

View File

@ -43,8 +43,10 @@ Models:
- Player models comes from Minetest Game (see license of Minetest Game 5.4.1 for details) - Player models comes from Minetest Game (see license of Minetest Game 5.4.1 for details)
Sounds: Sounds:
- Ocean waves come from <https://freesound.org/people/inchadney/sounds/135805/> - `lzr_ambience_ocean.ogg` comes from <https://freesound.org/people/inchadney/sounds/135805/>
- by inchadney (CC BY 3.0) - by inchadney (CC BY 3.0)
- `lzr_ambience_temple.ogg` comes from <https://freesound.org/people/Zixem/sounds/69391/>
- by Zixem (CC0)
- Mirror rotation sound comes from <https://freesound.org/people/killianm97/sounds/554236/> - Mirror rotation sound comes from <https://freesound.org/people/killianm97/sounds/554236/>
- by killanm97 (CC0) - by killanm97 (CC0)
- `screwdriver2_rotate.ogg` comes from <https://freesound.org/people/el_boss/sounds/560700/> - `screwdriver2_rotate.ogg` comes from <https://freesound.org/people/el_boss/sounds/560700/>

View File

@ -24,6 +24,11 @@ function lzr_ambience.set_ambience(id)
minetest.log("error", "[lzr_ambience] set_ambience called with invalid ambience ID ("..tostring(id)..")") minetest.log("error", "[lzr_ambience] set_ambience called with invalid ambience ID ("..tostring(id)..")")
return false return false
end end
minetest.log("info", "[lzr_ambience] Ambience set to: "..tostring(id))
-- No-op if we already have this ambience active
if current_singleplayer_ambience_id == id then
return true
end
lzr_ambience.stop_ambience() lzr_ambience.stop_ambience()
current_singleplayer_ambience = minetest.sound_play({name=ambience.soundname}, {gain = ambience.gain, to_player="singleplayer", loop=true}) current_singleplayer_ambience = minetest.sound_play({name=ambience.soundname}, {gain = ambience.gain, to_player="singleplayer", loop=true})
current_singleplayer_ambience_id = id current_singleplayer_ambience_id = id
@ -31,10 +36,7 @@ function lzr_ambience.set_ambience(id)
end end
lzr_ambience.add_ambience("ocean", "lzr_ambience_ocean", 0.08) lzr_ambience.add_ambience("ocean", "lzr_ambience_ocean", 0.08)
current_singleplayer_ambience_id = "ocean" lzr_ambience.add_ambience("temple", "lzr_ambience_temple", 1.0)
local setting = minetest.settings:get_bool("lzr_ambience_start_with_ambience") local setting = minetest.settings:get_bool("lzr_ambience_start_with_ambience")
if setting == nil then setting = true end if setting == nil then setting = true end

Binary file not shown.

View File

@ -159,5 +159,6 @@ lzr_gamestate.register_on_enter_state(function(state)
local player = minetest.get_player_by_name("singleplayer") local player = minetest.get_player_by_name("singleplayer")
lzr_player.set_editor_inventory(player) lzr_player.set_editor_inventory(player)
lzr_gui.set_editor_gui(player) lzr_gui.set_editor_gui(player)
lzr_ambience.set_ambience("ocean")
end end
end) end)

View File

@ -1,2 +1,2 @@
name = lzr_editor name = lzr_editor
depends = lzr_gamestate, lzr_gui, lzr_player, lzr_node_drops depends = lzr_gamestate, lzr_gui, lzr_player, lzr_node_drops, lzr_ambience

View File

@ -1,6 +1,6 @@
lzr_levels_level_1.mts,Demo Level 1,lzr_core:wood|lzr_decor:woodframed_glass lzr_levels_level_1.mts,Demo Level 1,lzr_core:wood|lzr_decor:woodframed_glass,ocean
lzr_levels_level_2.mts,Demo Level 2,lzr_core:wood|lzr_decor:woodframed_glass lzr_levels_level_2.mts,Demo Level 2,lzr_core:wood|lzr_decor:woodframed_glass,ocean
lzr_levels_level_3.mts,Demo Level 3,lzr_core:wood|lzr_decor:woodframed_glass lzr_levels_level_3.mts,Demo Level 3,lzr_core:wood|lzr_decor:woodframed_glass,ocean
lzr_levels_level_4.mts,Demo Level 4,lzr_core:wood|lzr_decor:woodframed_glass lzr_levels_level_4.mts,Demo Level 4,lzr_core:wood|lzr_decor:woodframed_glass,ocean
lzr_levels_level_5.mts,Demo Level 5,lzr_core:wood|lzr_decor:woodframed_glass lzr_levels_level_5.mts,Demo Level 5,lzr_core:wood|lzr_decor:woodframed_glass,ocean
lzr_levels_level_6.mts,Demo Level 6,lzr_decor:ocean_stone|lzr_decor:ocean_stone|lzr_core:dirt|lzr_core:dirt lzr_levels_level_6.mts,Demo Level 6,lzr_decor:ocean_stone|lzr_decor:ocean_stone|lzr_core:dirt|lzr_core:dirt,temple

1 lzr_levels_level_1.mts Demo Level 1 lzr_core:wood|lzr_decor:woodframed_glass ocean
2 lzr_levels_level_2.mts Demo Level 2 lzr_core:wood|lzr_decor:woodframed_glass ocean
3 lzr_levels_level_3.mts Demo Level 3 lzr_core:wood|lzr_decor:woodframed_glass ocean
4 lzr_levels_level_4.mts Demo Level 4 lzr_core:wood|lzr_decor:woodframed_glass ocean
5 lzr_levels_level_5.mts Demo Level 5 lzr_core:wood|lzr_decor:woodframed_glass ocean
6 lzr_levels_level_6.mts Demo Level 6 lzr_decor:ocean_stone|lzr_decor:ocean_stone|lzr_core:dirt|lzr_core:dirt temple

View File

@ -42,8 +42,16 @@ local flat_index_to_pos = function(index, size)
return vector.new(x,y,z) return vector.new(x,y,z)
end end
-- Read the level schematics to find out some metadata about them --[[ Read the level schematics to find out some metadata about them
-- and count the number of levels and count the number of levels. A CSV file is used for metadata.
Syntax of level_data.cvs:
<File name>, <Title>, <Border nodes>, <Ambience>
Border nodes is a list of nodenames for the level border, separated by the pipe symbol (|), in this order:
wall, window, floor, ceiling
wall is mandatory, the rest is optional (will default to the wall node)
Ambience is an ambience ID for the background noise (see lzr_ambience).
]]
local analyze_levels = function() local analyze_levels = function()
local level_list_path = minetest.get_modpath("lzr_levels").."/data/level_data.csv" local level_list_path = minetest.get_modpath("lzr_levels").."/data/level_data.csv"
local level_list_file = io.open(level_list_path, "r") local level_list_file = io.open(level_list_path, "r")
@ -55,12 +63,13 @@ local analyze_levels = function()
local filename = matches[1] local filename = matches[1]
local lname = matches[2] local lname = matches[2]
local nodes = matches[3] local nodes = matches[3]
local ambience = matches[4]
local node_matches = string.split(nodes, "|") local node_matches = string.split(nodes, "|")
local node_wall = node_matches[1] local node_wall = node_matches[1]
local node_window = node_matches[2] or node_wall local node_window = node_matches[2] or node_wall
local node_floor = node_matches[3] or node_wall local node_floor = node_matches[3] or node_wall
local node_ceiling = node_matches[4] or node_wall local node_ceiling = node_matches[4] or node_wall
table.insert(level_data, {filename=filename, name=lname, node_wall=node_wall, node_window=node_window, node_floor=node_floor, node_ceiling=node_ceiling}) table.insert(level_data, {filename=filename, name=lname, node_wall=node_wall, node_window=node_window, node_floor=node_floor, node_ceiling=node_ceiling, ambience=ambience})
end end
lzr_levels.LAST_LEVEL = #level_data lzr_levels.LAST_LEVEL = #level_data
@ -297,6 +306,7 @@ function lzr_levels.start_level(level)
if lzr_gamestate.get_state() ~= lzr_gamestate.EDITOR then if lzr_gamestate.get_state() ~= lzr_gamestate.EDITOR then
lzr_gamestate.set_state(lzr_gamestate.LEVEL) lzr_gamestate.set_state(lzr_gamestate.LEVEL)
end end
lzr_ambience.set_ambience(level_data[level].ambience)
minetest.log("action", "[lzr_levels] Starting level "..level) minetest.log("action", "[lzr_levels] Starting level "..level)
end end

View File

@ -1,2 +1,2 @@
name = lzr_levels name = lzr_levels
depends = lzr_core, lzr_mapgen, lzr_globals, screwdriver2, lzr_gamestate depends = lzr_core, lzr_mapgen, lzr_globals, screwdriver2, lzr_gamestate, lzr_ambience

View File

@ -69,6 +69,7 @@ lzr_gamestate.register_on_enter_state(function(state)
local player = minetest.get_player_by_name("singleplayer") local player = minetest.get_player_by_name("singleplayer")
lzr_player.set_play_inventory(player) lzr_player.set_play_inventory(player)
lzr_gui.set_menu_gui(player) lzr_gui.set_menu_gui(player)
lzr_ambience.set_ambience("ocean")
end end
end) end)