Skip to content

Commit

Permalink
- Rename textures.lua to game_theme.lua
Browse files Browse the repository at this point in the history
- rename the internal textures.lua table to mm_game_theme
- move the music play code to game_theme to fix dialogs stopping music
- Fix Errant \n removal
- Fix guiEngine extraneous \n
  • Loading branch information
ExeVirus committed Nov 5, 2021
1 parent 98dd502 commit 341e85f
Show file tree
Hide file tree
Showing 7 changed files with 71 additions and 94 deletions.
2 changes: 1 addition & 1 deletion builtin/mainmenu/dlg_create_world.lua
Expand Up @@ -393,7 +393,7 @@ local function create_world_buttonhandler(this, fields)
core.settings:set("menu_last_game",pkgmgr.games[gameindex].id)
if this.data.update_worldlist_filter then
menudata.worldlist:set_filtercriteria(pkgmgr.games[gameindex].id)
mm_texture.update("singleplayer", pkgmgr.games[gameindex].id)
mm_game_theme.update("singleplayer", pkgmgr.games[gameindex].id)
end
menudata.worldlist:refresh()
core.settings:set("mainmenu_last_selected_world",
Expand Down
98 changes: 58 additions & 40 deletions builtin/mainmenu/textures.lua → builtin/mainmenu/game_theme.lua
Expand Up @@ -16,109 +16,115 @@
--51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.


mm_texture = {}
mm_game_theme = {}

--------------------------------------------------------------------------------
function mm_texture.init()
mm_texture.defaulttexturedir = core.get_texturepath() .. DIR_DELIM .. "base" ..
function mm_game_theme.init()
mm_game_theme.defaulttexturedir = core.get_texturepath() .. DIR_DELIM .. "base" ..
DIR_DELIM .. "pack" .. DIR_DELIM
mm_texture.basetexturedir = mm_texture.defaulttexturedir
mm_game_theme.basetexturedir = mm_game_theme.defaulttexturedir

mm_texture.texturepack = core.settings:get("texture_path")
mm_game_theme.texturepack = core.settings:get("texture_path")

mm_texture.gameid = nil
mm_game_theme.gameid = nil

mm_game_theme.music_handle = nil
end

--------------------------------------------------------------------------------
function mm_texture.update(tab,gamedetails)
function mm_game_theme.update(tab,gamedetails)
if tab ~= "singleplayer" then
mm_texture.reset()
mm_game_theme.reset()
return
end

if gamedetails == nil then
return
end

mm_texture.update_game(gamedetails)
mm_game_theme.update_game(gamedetails)
end

--------------------------------------------------------------------------------
function mm_texture.reset()
mm_texture.gameid = nil
function mm_game_theme.reset()
mm_game_theme.gameid = nil
local have_bg = false
local have_overlay = mm_texture.set_generic("overlay")
local have_overlay = mm_game_theme.set_generic("overlay")

if not have_overlay then
have_bg = mm_texture.set_generic("background")
have_bg = mm_game_theme.set_generic("background")
end

mm_texture.clear("header")
mm_texture.clear("footer")
mm_game_theme.clear("header")
mm_game_theme.clear("footer")
core.set_clouds(false)

mm_texture.set_generic("footer")
mm_texture.set_generic("header")
mm_game_theme.set_generic("footer")
mm_game_theme.set_generic("header")

if not have_bg then
if core.settings:get_bool("menu_clouds") then
core.set_clouds(true)
else
mm_texture.set_dirt_bg()
mm_game_theme.set_dirt_bg()
end
end

if mm_game_theme.music_handle ~= nil then
core.sound_stop(mm_game_theme.music_handle)
end
end

--------------------------------------------------------------------------------
function mm_texture.update_game(gamedetails)
if mm_texture.gameid == gamedetails.id then
function mm_game_theme.update_game(gamedetails)
if mm_game_theme.gameid == gamedetails.id then
return
end

local have_bg = false
local have_overlay = mm_texture.set_game("overlay",gamedetails)
local have_overlay = mm_game_theme.set_game("overlay",gamedetails)

if not have_overlay then
have_bg = mm_texture.set_game("background",gamedetails)
have_bg = mm_game_theme.set_game("background",gamedetails)
end

mm_texture.clear("header")
mm_texture.clear("footer")
mm_game_theme.clear("header")
mm_game_theme.clear("footer")
core.set_clouds(false)

if not have_bg then

if core.settings:get_bool("menu_clouds") then
core.set_clouds(true)
else
mm_texture.set_dirt_bg()
mm_game_theme.set_dirt_bg()
end
end

mm_texture.set_game("footer",gamedetails)
mm_texture.set_game("header",gamedetails)
mm_game_theme.set_game("footer",gamedetails)
mm_game_theme.set_game("header",gamedetails)

mm_texture.gameid = gamedetails.id
mm_game_theme.gameid = gamedetails.id
end

--------------------------------------------------------------------------------
function mm_texture.clear(identifier)
function mm_game_theme.clear(identifier)
core.set_background(identifier,"")
end

--------------------------------------------------------------------------------
function mm_texture.set_generic(identifier)
function mm_game_theme.set_generic(identifier)
--try texture pack first
if mm_texture.texturepack ~= nil then
local path = mm_texture.texturepack .. DIR_DELIM .."menu_" ..
if mm_game_theme.texturepack ~= nil then
local path = mm_game_theme.texturepack .. DIR_DELIM .."menu_" ..
identifier .. ".png"
if core.set_background(identifier,path) then
return true
end
end

if mm_texture.defaulttexturedir ~= nil then
local path = mm_texture.defaulttexturedir .. DIR_DELIM .."menu_" ..
if mm_game_theme.defaulttexturedir ~= nil then
local path = mm_game_theme.defaulttexturedir .. DIR_DELIM .."menu_" ..
identifier .. ".png"
if core.set_background(identifier,path) then
return true
Expand All @@ -129,14 +135,16 @@ function mm_texture.set_generic(identifier)
end

--------------------------------------------------------------------------------
function mm_texture.set_game(identifier, gamedetails)
function mm_game_theme.set_game(identifier, gamedetails)

if gamedetails == nil then
return false
end

if mm_texture.texturepack ~= nil then
local path = mm_texture.texturepack .. DIR_DELIM ..
mm_game_theme.set_music(gamedetails)

if mm_game_theme.texturepack ~= nil then
local path = mm_game_theme.texturepack .. DIR_DELIM ..
gamedetails.id .. "_menu_" .. identifier .. ".png"
if core.set_background(identifier, path) then
return true
Expand Down Expand Up @@ -171,9 +179,10 @@ function mm_texture.set_game(identifier, gamedetails)
return false
end

function mm_texture.set_dirt_bg()
if mm_texture.texturepack ~= nil then
local path = mm_texture.texturepack .. DIR_DELIM .."default_dirt.png"
--------------------------------------------------------------------------------
function mm_game_theme.set_dirt_bg()
if mm_game_theme.texturepack ~= nil then
local path = mm_game_theme.texturepack .. DIR_DELIM .."default_dirt.png"
if core.set_background("background", path, true, 128) then
return true
end
Expand All @@ -183,3 +192,12 @@ function mm_texture.set_dirt_bg()
local minimalpath = defaulttexturedir .. "menu_bg.png"
core.set_background("background", minimalpath, true, 128)
end

--------------------------------------------------------------------------------
function mm_game_theme.set_music(gamedetails)
if mm_game_theme.music_handle ~= nil then
core.sound_stop(mm_game_theme.music_handle)
end
local music_path = gamedetails.path .. DIR_DELIM .. "menu" .. DIR_DELIM .. "theme"
mm_game_theme.music_handle = core.sound_play(music_path, true)
end
7 changes: 3 additions & 4 deletions builtin/mainmenu/init.lua
Expand Up @@ -35,8 +35,7 @@ dofile(menupath .. DIR_DELIM .. "async_event.lua")
dofile(menupath .. DIR_DELIM .. "common.lua")
dofile(menupath .. DIR_DELIM .. "pkgmgr.lua")
dofile(menupath .. DIR_DELIM .. "serverlistmgr.lua")
dofile(menupath .. DIR_DELIM .. "textures.lua")
dofile(menupath .. DIR_DELIM .. "music_player.lua")
dofile(menupath .. DIR_DELIM .. "game_theme.lua")

dofile(menupath .. DIR_DELIM .. "dlg_config_world.lua")
dofile(menupath .. DIR_DELIM .. "dlg_settings_advanced.lua")
Expand Down Expand Up @@ -88,7 +87,7 @@ local function init_globals()
core.settings:set("menu_last_game", default_game)
end

mm_texture.init()
mm_game_theme.init()

-- Create main tabview
local tv_main = tabview_create("maintab", {x = 12, y = 5.4}, {x = 0, y = 0})
Expand All @@ -114,7 +113,7 @@ local function init_globals()
if tv_main.current_tab == "local" then
local game = pkgmgr.find_by_gameid(core.settings:get("menu_last_game"))
if game == nil then
mm_texture.reset()
mm_game_theme.reset()
end
end

Expand Down
33 changes: 0 additions & 33 deletions builtin/mainmenu/music_player.lua

This file was deleted.

18 changes: 6 additions & 12 deletions builtin/mainmenu/tab_local.lua
Expand Up @@ -54,10 +54,8 @@ if enable_gamebar then
for key,value in pairs(fields) do
for j=1,#pkgmgr.games,1 do
if ("game_btnbar_" .. pkgmgr.games[j].id == key) then
mm_texture.update("singleplayer", pkgmgr.games[j])
mm_game_theme.update("singleplayer", pkgmgr.games[j])
core.set_topleft_text(pkgmgr.games[j].name)
-- Switch game theme, if found, and current game theme is not already playing
menu_music_play(pkgmgr.games[j].path .. DIR_DELIM .. "menu" .. DIR_DELIM .. "theme")
core.settings:set("menu_last_game",pkgmgr.games[j].id)
menudata.worldlist:set_filtercriteria(pkgmgr.games[j].id)
local index = filterlist.get_current_index(menudata.worldlist,
Expand Down Expand Up @@ -325,7 +323,7 @@ local function main_button_handler(this, fields, name, tabdata)
create_world_dlg:set_parent(this)
this:hide()
create_world_dlg:show()
mm_texture.update("singleplayer", current_game())
mm_game_theme.update("singleplayer", current_game())
return true
end

Expand All @@ -342,7 +340,7 @@ local function main_button_handler(this, fields, name, tabdata)
delete_world_dlg:set_parent(this)
this:hide()
delete_world_dlg:show()
mm_texture.update("singleplayer",current_game())
mm_game_theme.update("singleplayer",current_game())
end
end

Expand All @@ -360,7 +358,7 @@ local function main_button_handler(this, fields, name, tabdata)
configdialog:set_parent(this)
this:hide()
configdialog:show()
mm_texture.update("singleplayer",current_game())
mm_game_theme.update("singleplayer",current_game())
end
end

Expand All @@ -377,10 +375,7 @@ if enable_gamebar then
if game then
menudata.worldlist:set_filtercriteria(game.id)
core.set_topleft_text(game.name)
mm_texture.update("singleplayer",game)
if old_tab ~= new_tab then
menu_music_play(game.path .. DIR_DELIM .. "menu" .. DIR_DELIM .. "theme")
end
mm_game_theme.update("singleplayer",game)
end

singleplayer_refresh_gamebar()
Expand All @@ -392,8 +387,7 @@ if enable_gamebar then
gamebar:hide()
end
core.set_topleft_text("")
menu_music_play("main_menu")
mm_texture.update(new_tab,nil)
mm_game_theme.update(new_tab,nil)
end
end
end
Expand Down
2 changes: 1 addition & 1 deletion builtin/mainmenu/tab_settings.lua
Expand Up @@ -247,7 +247,7 @@ local function handle_settings_buttons(this, fields, tabname, tabdata)
adv_settings_dlg:set_parent(this)
this:hide()
adv_settings_dlg:show()
--mm_texture.update("singleplayer", current_game())
--mm_game_theme.update("singleplayer", current_game())
return true
end
if fields["cb_smooth_lighting"] then
Expand Down
5 changes: 2 additions & 3 deletions src/gui/guiEngine.cpp
Expand Up @@ -109,8 +109,7 @@ void MenuMusicFetcher::fetchSounds(const std::string &name,
auto add_paths = [&dst_paths](const std::string name, const std::string base = "") {
dst_paths.insert(base + name + ".ogg");
for (int i = 0; i < 10; i++)
dst_paths.insert(base + name + "." + itos(i) +
".ogg");
dst_paths.insert(base + name + "." + itos(i) + ".ogg");
};
// Allow full paths
if (name.find(DIR_DELIM_CHAR) != std::string::npos) {
Expand Down Expand Up @@ -633,4 +632,4 @@ s32 GUIEngine::playSound(const SimpleSoundSpec &spec, bool looped)
void GUIEngine::stopSound(s32 handle)
{
m_sound_manager->stopSound(handle);
}
}

0 comments on commit 341e85f

Please sign in to comment.