]> git.lizzy.rs Git - minetest.git/blobdiff - builtin/mainmenu/textures.lua
Allow random menu images for subgames
[minetest.git] / builtin / mainmenu / textures.lua
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