Rework large parts of init.lua, except the formspecs
This commit is contained in:
parent
7318dd22e5
commit
141451cf93
@ -1,14 +1,38 @@
|
|||||||
|
-- ██╗ █████╗ ██████╗ ██╗ ██╗██████╗ ██╗███╗ ██╗████████╗██╗ ██╗
|
||||||
|
-- ██║ ██╔══██╗██╔══██╗╚██╗ ██╔╝██╔══██╗██║████╗ ██║╚══██╔══╝██║ ██║
|
||||||
|
-- ██║ ███████║██████╔╝ ╚████╔╝ ██████╔╝██║██╔██╗ ██║ ██║ ███████║
|
||||||
|
-- ██║ ██╔══██║██╔══██╗ ╚██╔╝ ██╔══██╗██║██║╚██╗██║ ██║ ██╔══██║
|
||||||
|
-- ███████╗██║ ██║██████╔╝ ██║ ██║ ██║██║██║ ╚████║ ██║ ██║ ██║
|
||||||
|
-- ╚══════╝╚═╝ ╚═╝╚═════╝ ╚═╝ ╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═╝
|
||||||
|
-- Ascii art font: ANSI Shadow, from patorjk.com/software/taag/
|
||||||
--
|
--
|
||||||
|
-- The code for labyrinth is licensed as follows:
|
||||||
|
-- MIT License, ExeVirus (c) 2021
|
||||||
--
|
--
|
||||||
--
|
-- Please see the LICENSE file for texture licenses
|
||||||
-- Labyrinth Core Game
|
|
||||||
--
|
|
||||||
--
|
|
||||||
--
|
|
||||||
|
|
||||||
|
|
||||||
|
--Settings Changes --
|
||||||
|
--BE VERY CAREFUL WHEN PLAYING WITH OTHER PEOPLES SETTINGS--
|
||||||
minetest.settings:set("enable_damage","false")
|
minetest.settings:set("enable_damage","false")
|
||||||
|
local max_block_send_distance = minetest.settings:get("max_block_send_distance")
|
||||||
|
local block_send_optimize_distance = minetest.settings:get("block_send_optimize_distance")
|
||||||
|
if max_block_send_distance == 31 then -- no one would set these to 31, so it must have been a crash,
|
||||||
|
max_block_send_distance = 8 -- and we should revert to defaults on proper shutdown
|
||||||
|
end
|
||||||
|
if block_send_optimize_distance == 31 then
|
||||||
|
block_send_optimize_distance = 4
|
||||||
|
end
|
||||||
|
minetest.settings:set("max_block_send_distance","8")
|
||||||
|
minetest.settings:set("block_send_optimize_distance","4")
|
||||||
|
minetest.register_on_shutdown(function()
|
||||||
|
minetest.settings:set("max_block_send_distance",tostring(max_block_send_distance))
|
||||||
|
minetest.settings:set("block_send_optimize_distance",tostring(block_send_optimize_distance))
|
||||||
|
end)
|
||||||
|
--End Settings Changes--
|
||||||
|
|
||||||
local GenMaze = dofile(minetest.get_modpath("game") .. "/maze.lua")
|
local DefaultGenerateMaze = dofile(minetest.get_modpath("game") .. "/maze.lua")
|
||||||
|
local GenMaze = DefaultGenerateMaze
|
||||||
|
|
||||||
--Style registrations
|
--Style registrations
|
||||||
|
|
||||||
@ -17,25 +41,27 @@ local styles = {}
|
|||||||
local music = nil
|
local music = nil
|
||||||
|
|
||||||
-------------------
|
-------------------
|
||||||
-- Global function register_style(name, map_from_maze)
|
-- Global function laby_register_style(name, music_name, map_from_maze, cleanup, genMaze)
|
||||||
--
|
--
|
||||||
-- name: text in lowercase, typically, of the map style
|
-- name: text in lowercase, typically, of the map style
|
||||||
|
-- music_name: music file name
|
||||||
-- map_from_maze = function(maze, player)
|
-- map_from_maze = function(maze, player)
|
||||||
-- maze is from GenMaze() above, an input
|
-- maze is from GenMaze() above, an input
|
||||||
-- player is the player_ref to place them at the start of the maze
|
-- player is the player_ref to place them at the start of the maze
|
||||||
-- map_from_maze should turn on the music for the maze
|
|
||||||
-- cleanup = function (maze_w, maze_h) -- should replace maze with air
|
-- cleanup = function (maze_w, maze_h) -- should replace maze with air
|
||||||
|
-- genMaze is an optional arguement to provide your own algorithm for this style to generate maps with
|
||||||
--
|
--
|
||||||
function register_style(name, music_name, map_from_maze, cleanup)
|
function laby_register_style(name, music_name, map_from_maze, cleanup, genMaze)
|
||||||
numStyles = numStyles + 1
|
numStyles = numStyles + 1
|
||||||
styles[numStyles] = {}
|
styles[numStyles] = {}
|
||||||
styles[numStyles].name = name
|
styles[numStyles].name = name
|
||||||
styles[numStyles].music = music_name
|
styles[numStyles].music = music_name
|
||||||
styles[numStyles].gen_map = map_from_maze
|
styles[numStyles].gen_map = map_from_maze
|
||||||
styles[numStyles].cleanup = cleanup
|
styles[numStyles].cleanup = cleanup
|
||||||
|
styles[numStyles].genMaze = genMaze
|
||||||
end
|
end
|
||||||
|
|
||||||
--Common node between styles
|
--Common node between styles, used for hidden floor to fall onto
|
||||||
minetest.register_node("game:inv",
|
minetest.register_node("game:inv",
|
||||||
{
|
{
|
||||||
description = "Ground Block",
|
description = "Ground Block",
|
||||||
@ -51,8 +77,6 @@ minetest.register_item(":", {
|
|||||||
groups = {not_in_creative_inventory=1},
|
groups = {not_in_creative_inventory=1},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--Style Registrations
|
--Style Registrations
|
||||||
dofile(minetest.get_modpath("game") .. "/styles/classic.lua")
|
dofile(minetest.get_modpath("game") .. "/styles/classic.lua")
|
||||||
dofile(minetest.get_modpath("game") .. "/styles/grassy.lua")
|
dofile(minetest.get_modpath("game") .. "/styles/grassy.lua")
|
||||||
@ -68,6 +92,11 @@ local gscroll = 0
|
|||||||
local selectedStyle = 1
|
local selectedStyle = 1
|
||||||
local first_load = false
|
local first_load = false
|
||||||
local function setup(player)
|
local function setup(player)
|
||||||
|
if styles[selectedStyle].genMaze ~= nil and type(styles[selectedStyle].genMaze) == "function" then
|
||||||
|
GenMaze = styles[selectedStyle].genMaze
|
||||||
|
else
|
||||||
|
GenMaze = DefaultGenerateMaze
|
||||||
|
end
|
||||||
--Load up the level
|
--Load up the level
|
||||||
local maze = GenMaze(math.floor(gwidth/2)*2+((gwidth+1)%2),math.floor(gheight/2)*2+(gheight+1)%2)
|
local maze = GenMaze(math.floor(gwidth/2)*2+((gwidth+1)%2),math.floor(gheight/2)*2+(gheight+1)%2)
|
||||||
restart = styles[selectedStyle].gen_map
|
restart = styles[selectedStyle].gen_map
|
||||||
@ -84,7 +113,6 @@ local function setup(player)
|
|||||||
minetest.after(2, function() first_load = true end)
|
minetest.after(2, function() first_load = true end)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
--------- GUI ------------
|
--------- GUI ------------
|
||||||
|
|
||||||
--Main_Menu formspec for Labyrinth
|
--Main_Menu formspec for Labyrinth
|
||||||
@ -94,24 +122,22 @@ local height = height_in or 42
|
|||||||
local scroll = scroll_in or 0
|
local scroll = scroll_in or 0
|
||||||
--Header
|
--Header
|
||||||
local r = {
|
local r = {
|
||||||
"formspec_version[3]",
|
[[
|
||||||
"size[11,11]",
|
formspec_version[3]
|
||||||
"position[0.5,0.5]",
|
size[11,11]
|
||||||
"anchor[0.5,0.5]",
|
position[0.5,0.5]
|
||||||
"no_prepend[]",
|
anchor[0.5,0.5]
|
||||||
"bgcolor[#DFE0EDD0;both;#00000080]",
|
no_prepend[]
|
||||||
"box[0.5,1;10,9.5;#DDD7]",
|
bgcolor[#DFE0EDD0;both;#00000080]
|
||||||
|
box[0.5,1;10,9.5;#DDD7]
|
||||||
|
hypertext[1,0.1;9,5;;<global halign=center color=#03A size=32 font=Regular>
|
||||||
|
Labyrinth<global halign=left color=#000 size=24 font=Regular>
|
||||||
|
|
||||||
|
Level style:]
|
||||||
|
button[7.5,0.15;3.3,0.7;labyexit;Quit Labyrinth]
|
||||||
|
scroll_container[0.5,2;10,2;scroll;horizontal;0.1]
|
||||||
|
]],
|
||||||
}
|
}
|
||||||
--title
|
|
||||||
table.insert(r,"hypertext[1,0.1;9,2;;")
|
|
||||||
table.insert(r,"<global halign=center color=#03A size=32 font=Regular>")
|
|
||||||
table.insert(r,"Labyrinth")
|
|
||||||
table.insert(r,"<global halign=left color=#000 size=24 font=Regular>\n\n")
|
|
||||||
table.insert(r,"Level style:]")
|
|
||||||
--quit game button
|
|
||||||
table.insert(r,"button[7.5,0.15;3.3,0.7;labyexit;Quit Labyrinth]")
|
|
||||||
--Scroll container containing setnames with icons:
|
|
||||||
table.insert(r,"scroll_container[0.5,2;10,2;scroll;horizontal;0.1]")
|
|
||||||
--for each set, output the icon and set_name as a button
|
--for each set, output the icon and set_name as a button
|
||||||
for i=1, numStyles, 1 do
|
for i=1, numStyles, 1 do
|
||||||
if selectedStyle == i then
|
if selectedStyle == i then
|
||||||
@ -121,42 +147,38 @@ for i=1, numStyles, 1 do
|
|||||||
table.insert(r,"image_button["..((i-1)*2+0.25)..",0.15;1.5,1.5;"..name..".png;style"..i..";"..name.."]")
|
table.insert(r,"image_button["..((i-1)*2+0.25)..",0.15;1.5,1.5;"..name..".png;style"..i..";"..name.."]")
|
||||||
end
|
end
|
||||||
table.insert(r,"scroll_container_end[]")
|
table.insert(r,"scroll_container_end[]")
|
||||||
table.insert(r,"scrollbaroptions[max="..(numStyles*20)..";thumbsize="..(numStyles*10).."]")
|
table.insert(r,"scrollbaroptions[max="..(numStyles*10)..";thumbsize="..(numStyles*10).."]")
|
||||||
table.insert(r,"scrollbar[1,4;9,0.5;horizontal;scroll;"..scroll.."]")
|
table.insert(r,"scrollbar[1,4;9,0.5;horizontal;scroll;"..scroll.."]")
|
||||||
|
table.insert(r,
|
||||||
table.insert(r,"button_exit[1.25,5.5;4,1;easy;Easy (40x40)]")
|
[[button_exit[1.25,5.5;4,1;easy;Easy (40x40)]
|
||||||
table.insert(r,"button_exit[5.75,5.5;4,1;medium;Medium (70x70)]")
|
button_exit[5.75,5.5;4,1;medium;Medium (70x70)]
|
||||||
table.insert(r,"button_exit[1.25,7;4,1;hard;Hard (120x120)]")
|
button_exit[1.25,7;4,1;hard;Hard (120x120)]
|
||||||
|
]])
|
||||||
table.insert(r,"field[5.75,6.9;4,0.5;custom_w;"..minetest.colorize("#000","Width")..";"..width.."]")
|
table.insert(r,"field[5.75,6.9;4,0.5;custom_w;"..minetest.colorize("#000","Width")..";"..width.."]")
|
||||||
table.insert(r,"field[5.75,7.9;4,0.5;custom_h;"..minetest.colorize("#000","Height")..";"..height.."]")
|
table.insert(r,"field[5.75,7.9;4,0.5;custom_h;"..minetest.colorize("#000","Height")..";"..height.."]")
|
||||||
table.insert(r,"field_close_on_enter[custom_w;false]")
|
table.insert(r,
|
||||||
table.insert(r,"field_close_on_enter[custom_h;false]")
|
[[field_close_on_enter[custom_w;false]
|
||||||
table.insert(r,"button_exit[5.75,8.5;4,1;custom;Custom]")
|
field_close_on_enter[custom_h;false]
|
||||||
|
button_exit[5.75,8.5;4,1;custom;Custom]
|
||||||
|
]])
|
||||||
return table.concat(r);
|
return table.concat(r);
|
||||||
end
|
end
|
||||||
|
|
||||||
local function pause_menu()
|
local function pause_menu() return
|
||||||
local r = {
|
[[formspec_version[3]
|
||||||
"formspec_version[3]",
|
size[8,8]
|
||||||
"size[8,8]",
|
position[0.5,0.5]
|
||||||
"position[0.5,0.5]",
|
anchor[0.5,0.5]
|
||||||
"anchor[0.5,0.5]",
|
no_prepend[]
|
||||||
"no_prepend[]",
|
bgcolor[#DFE0EDD0;both;#00000080]
|
||||||
"bgcolor[#DFE0EDD0;both;#00000080]",
|
button_exit[0.6,0.5;6.8,1;game_menu;Quit to Game Menu]
|
||||||
}
|
button_exit[0.6,2;6.8,1;restart;Restart with new Map]
|
||||||
table.insert(r,"button_exit[0.6,0.5;6.8,1;game_menu;Quit to Game Menu]")
|
hypertext[2,3.5;4,4.25;;<global halign=center color=#03A size=32 font=Regular>Credits<global halign=center color=#000 size=16 font=Regular>
|
||||||
table.insert(r,"button_exit[0.6,2;6.8,1;restart;Restart with new Map]")
|
Original Game by ExeVirus
|
||||||
table.insert(r,"hypertext[2,3.5;4,4.25;;")
|
Source code is MIT License, 2021
|
||||||
table.insert(r,"<global halign=center color=#03A size=32 font=Regular>")
|
Media/Music is:\nCC-BY-SA, ExeVirus 2021
|
||||||
table.insert(r,"Credits")
|
Music coming soon to Spotify and other streaming services!]
|
||||||
table.insert(r,"<global halign=center color=#000 size=16 font=Regular>\n")
|
]]
|
||||||
table.insert(r,"Original Game by ExeVirus\n")
|
|
||||||
table.insert(r,"Source code is MIT License, 2021\n")
|
|
||||||
table.insert(r,"Media/Music is:\nCC-BY-SA, ExeVirus 2021\n")
|
|
||||||
table.insert(r,"Music coming soon to Spotify and other streaming services!\n]")
|
|
||||||
return table.concat(r);
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local function to_game_menu(player)
|
local function to_game_menu(player)
|
||||||
@ -252,40 +274,28 @@ end
|
|||||||
|
|
||||||
minetest.register_on_player_receive_fields(onRecieveFields)
|
minetest.register_on_player_receive_fields(onRecieveFields)
|
||||||
|
|
||||||
local function safe_clear()
|
local function safe_clear(w, l)
|
||||||
local vm = minetest.get_voxel_manip()
|
local vm = minetest.get_voxel_manip()
|
||||||
local emin, emax = vm:read_from_map({x=0,y=-20,z=0}, {x=225,y=10,z=225})
|
local emin, emax = vm:read_from_map({x=-10,y=-11,z=-10}, {x=w,y=10,z=l})
|
||||||
local data = vm:get_data()
|
|
||||||
local a = VoxelArea:new{
|
|
||||||
MinEdge = emin,
|
|
||||||
MaxEdge = emax
|
|
||||||
}
|
|
||||||
local air = minetest.get_content_id("air")
|
|
||||||
|
|
||||||
--Generally a good idea to zero it out
|
|
||||||
for z=0, 225 do --z
|
|
||||||
for y=0,10 do --
|
|
||||||
for x=0, 225 do --x
|
|
||||||
data[a:index(x, y, z)] = air
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
vm:set_data(data)
|
|
||||||
vm:write_to_map(true)
|
|
||||||
|
|
||||||
local vm = minetest.get_voxel_manip()
|
|
||||||
local emin, emax = vm:read_from_map({x=-50,y=-20,z=-50}, {x=225,y=-20,z=225})
|
|
||||||
local data = vm:get_data()
|
local data = vm:get_data()
|
||||||
local a = VoxelArea:new{
|
local a = VoxelArea:new{
|
||||||
MinEdge = emin,
|
MinEdge = emin,
|
||||||
MaxEdge = emax
|
MaxEdge = emax
|
||||||
}
|
}
|
||||||
local invisible = minetest.get_content_id("game:inv")
|
local invisible = minetest.get_content_id("game:inv")
|
||||||
|
local air = minetest.get_content_id("air")
|
||||||
|
|
||||||
--Generally a good idea to zero it out
|
for z=0, l-10 do --z
|
||||||
for z=-50, 250 do --z
|
for y=0,10 do --y
|
||||||
for x=-50, 250 do --x
|
for x=0, w-10 do --x
|
||||||
data[a:index(x, -20, z)] = invisible
|
data[a:index(x, y, z)] = air
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
for z=-10, l do --z
|
||||||
|
for x=-10, w do --x
|
||||||
|
data[a:index(x, -11, z)] = invisible
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
vm:set_data(data)
|
vm:set_data(data)
|
||||||
@ -294,7 +304,7 @@ end
|
|||||||
|
|
||||||
minetest.register_on_joinplayer(
|
minetest.register_on_joinplayer(
|
||||||
function(player)
|
function(player)
|
||||||
safe_clear()
|
safe_clear(300,300)
|
||||||
player:set_properties({
|
player:set_properties({
|
||||||
textures = {"inv.png", "inv.png"},
|
textures = {"inv.png", "inv.png"},
|
||||||
visual = "upright_sprite",
|
visual = "upright_sprite",
|
||||||
@ -335,5 +345,3 @@ function(dtime)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -165,4 +165,4 @@ local function cleanup(width, height)
|
|||||||
vm:write_to_map(true)
|
vm:write_to_map(true)
|
||||||
end
|
end
|
||||||
|
|
||||||
register_style("cave","cave", map_function, cleanup)
|
laby_register_style("cave","cave", map_function, cleanup)
|
||||||
|
@ -125,4 +125,4 @@ local function cleanup(width, height)
|
|||||||
vm:write_to_map(true)
|
vm:write_to_map(true)
|
||||||
end
|
end
|
||||||
|
|
||||||
register_style("classic","classic", map_function, cleanup)
|
laby_register_style("classic","classic", map_function, cleanup)
|
@ -226,4 +226,4 @@ local function cleanup(width, height)
|
|||||||
minetest.set_timeofday(0.5)
|
minetest.set_timeofday(0.5)
|
||||||
end
|
end
|
||||||
|
|
||||||
register_style("club","club", map_function, cleanup)
|
laby_register_style("club","club", map_function, cleanup)
|
||||||
|
@ -78,4 +78,4 @@ local function cleanup(width, height)
|
|||||||
vm:write_to_map(true)
|
vm:write_to_map(true)
|
||||||
end
|
end
|
||||||
|
|
||||||
register_style("glass","glass", map_function, cleanup)
|
laby_register_style("glass","glass", map_function, cleanup)
|
@ -141,4 +141,4 @@ local function cleanup(width, height)
|
|||||||
vm:write_to_map(true)
|
vm:write_to_map(true)
|
||||||
end
|
end
|
||||||
|
|
||||||
register_style("grassy","grassy", map_function, cleanup)
|
laby_register_style("grassy","grassy", map_function, cleanup)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user