Allow random menu images for subgames
authorsfan5 <sfan5@live.de>
Sat, 18 Jul 2015 12:31:34 +0000 (14:31 +0200)
committerest31 <MTest31@outlook.com>
Tue, 21 Jul 2015 14:58:22 +0000 (16:58 +0200)
builtin/common/misc_helpers.lua
builtin/mainmenu/textures.lua

index 1c9f2a48ff28ac0c30042a069336bea2241c694c..bf672e6da54230ee05bc3ba58ee65b5ec9bbb07f 100644 (file)
@@ -159,6 +159,7 @@ function dump(o, indent, nested, level)
        return "{"..table.concat(t, ", ").."}"
 end
 
+--------------------------------------------------------------------------------
 function string.split(str, delim, include_empty, max_splits, sep_is_pattern)
        delim = delim or ","
        max_splits = max_splits or -1
@@ -183,10 +184,23 @@ function string.split(str, delim, include_empty, max_splits, sep_is_pattern)
        return items
 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)
        local f = io.open(filename, "r")
-       if f==nil then
+       if f == nil then
                return false
        else
                f:close()
index 56992c0c5cca0fe1ff857894377b1a222a2901ea..700bdb5cc05a0caa957cc1cd12723000c0dffd26 100644 (file)
@@ -129,7 +129,7 @@ function mm_texture.set_generic(identifier)
 end
 
 --------------------------------------------------------------------------------
-function mm_texture.set_game(identifier,gamedetails)
+function mm_texture.set_game(identifier, gamedetails)
        
        if gamedetails == nil then
                return false
@@ -137,15 +137,33 @@ function mm_texture.set_game(identifier,gamedetails)
 
        if mm_texture.texturepack ~= nil then
                local path = mm_texture.texturepack .. DIR_DELIM ..
-                                               gamedetails.id .. "_menu_" .. identifier .. ".png"
-               if core.set_background(identifier,path) then
+                       gamedetails.id .. "_menu_" .. identifier .. ".png"
+               if core.set_background(identifier, path) then
                        return true
                end
        end
        
-       local path = gamedetails.path .. DIR_DELIM .."menu" ..
-                                                                        DIR_DELIM .. identifier .. ".png"
-       if core.set_background(identifier,path) then
+       -- Find out how many randomized textures the subgame provides
+       local n, filename
+       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
        end