Allow random menu images for subgames

This commit is contained in:
sfan5 2015-07-18 14:31:34 +02:00 committed by est31
parent fa7fe510d9
commit 8994913259
2 changed files with 39 additions and 7 deletions

@ -159,6 +159,7 @@ function dump(o, indent, nested, level)
return "{"..table.concat(t, ", ").."}" return "{"..table.concat(t, ", ").."}"
end end
--------------------------------------------------------------------------------
function string.split(str, delim, include_empty, max_splits, sep_is_pattern) function string.split(str, delim, include_empty, max_splits, sep_is_pattern)
delim = delim or "," delim = delim or ","
max_splits = max_splits or -1 max_splits = max_splits or -1
@ -183,10 +184,23 @@ function string.split(str, delim, include_empty, max_splits, sep_is_pattern)
return items return items
end end
--------------------------------------------------------------------------------
function table.indexof(list, val)
for i = 1, #list do
if list[i] == val then
return i
end
end
return -1
end
assert(table.indexof({"foo", "bar"}, "foo") == 1)
assert(table.indexof({"foo", "bar"}, "baz") == -1)
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
function file_exists(filename) function file_exists(filename)
local f = io.open(filename, "r") local f = io.open(filename, "r")
if f==nil then if f == nil then
return false return false
else else
f:close() f:close()

@ -129,7 +129,7 @@ function mm_texture.set_generic(identifier)
end end
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
function mm_texture.set_game(identifier,gamedetails) function mm_texture.set_game(identifier, gamedetails)
if gamedetails == nil then if gamedetails == nil then
return false return false
@ -138,14 +138,32 @@ function mm_texture.set_game(identifier,gamedetails)
if mm_texture.texturepack ~= nil then if mm_texture.texturepack ~= nil then
local path = mm_texture.texturepack .. DIR_DELIM .. local path = mm_texture.texturepack .. DIR_DELIM ..
gamedetails.id .. "_menu_" .. identifier .. ".png" gamedetails.id .. "_menu_" .. identifier .. ".png"
if core.set_background(identifier,path) then if core.set_background(identifier, path) then
return true return true
end end
end end
local path = gamedetails.path .. DIR_DELIM .."menu" .. -- Find out how many randomized textures the subgame provides
DIR_DELIM .. identifier .. ".png" local n, filename
if core.set_background(identifier,path) then local menu_files = core.get_dir_list(gamedetails.path .. DIR_DELIM .. "menu", false)
for i = 1, #menu_files do
local filename = identifier .. "." .. i .. ".png"
if table.indexof(menu_files, filename) == -1 then
n = i - 1
break
end
end
-- Select random texture, 0 means standard texture
n = math.random(0, n)
if n == 0 then
filename = identifier .. ".png"
else
filename = identifier .. "." .. n .. ".png"
end
local path = gamedetails.path .. DIR_DELIM .. "menu" ..
DIR_DELIM .. filename
if core.set_background(identifier, path) then
return true return true
end end