From 8498068e4cdfe832f66476358de5be4914764724 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 26 Dec 2021 03:37:04 +0100 Subject: [PATCH] Add start book --- mods/lzr_globals/init.lua | 3 ++ mods/lzr_levels/init.lua | 38 ++++++++++++++++-- mods/lzr_menu/init.lua | 26 ++++++++++++ mods/lzr_menu/mod.conf | 2 +- .../textures/lzr_menu_book_bottom.png | Bin 0 -> 268 bytes mods/lzr_menu/textures/lzr_menu_book_end.png | Bin 0 -> 267 bytes mods/lzr_menu/textures/lzr_menu_book_side.png | Bin 0 -> 263 bytes mods/lzr_menu/textures/lzr_menu_book_top.png | Bin 0 -> 416 bytes mods/lzr_startitems/init.lua | 7 ---- mods/lzr_startitems/mod.conf | 2 - 10 files changed, 64 insertions(+), 14 deletions(-) create mode 100644 mods/lzr_menu/textures/lzr_menu_book_bottom.png create mode 100644 mods/lzr_menu/textures/lzr_menu_book_end.png create mode 100644 mods/lzr_menu/textures/lzr_menu_book_side.png create mode 100644 mods/lzr_menu/textures/lzr_menu_book_top.png delete mode 100644 mods/lzr_startitems/init.lua delete mode 100644 mods/lzr_startitems/mod.conf diff --git a/mods/lzr_globals/init.lua b/mods/lzr_globals/init.lua index 2a4ba1a..ffa8207 100644 --- a/mods/lzr_globals/init.lua +++ b/mods/lzr_globals/init.lua @@ -6,3 +6,6 @@ lzr_globals.PLAYFIELD_END = vector.add(lzr_globals.PLAYFIELD_START, lzr_globals. lzr_globals.LEVEL_POS = { x = 0, y = 0, z = 0 } lzr_globals.MENU_SHIP_POS = { x = -500, y = -4, z = -500 } lzr_globals.MENU_SHIP_PLAYER_SPAWN_OFFSET = { x = 7, y = 8.5, z = 29 } +lzr_globals.MENU_SHIP_STARTBOOK_OFFSET = { x = 7, y = 10, z = 31 } +lzr_globals.MENU_PLAYER_SPAWN_POS = vector.add(lzr_globals.MENU_SHIP_POS, lzr_globals.MENU_SHIP_PLAYER_SPAWN_OFFSET) + diff --git a/mods/lzr_levels/init.lua b/mods/lzr_levels/init.lua index bea4927..bc5dc3f 100644 --- a/mods/lzr_levels/init.lua +++ b/mods/lzr_levels/init.lua @@ -65,15 +65,20 @@ function lzr_levels.build_level(level) return minetest.place_schematic(lzr_globals.LEVEL_POS, minetest.get_modpath("lzr_levels").."/schematics/lzr_levels_level_"..tonumber(level)..".mts", "0", {}, true, "") end -local function reset_inventory(player) +local function clear_inventory(player) local inv = player:get_inventory() for i=1,inv:get_size("main") do inv:set_stack("main", i, "") end +end + +local function reset_inventory(player) + clear_inventory(player) + local inv = player:get_inventory() inv:add_item("main", "screwdriver:screwdriver") end -local current_level = 1 +local current_level = nil local get_singleplayer = function() return minetest.get_player_by_name("singleplayer") @@ -98,6 +103,13 @@ function lzr_levels.next_level() end end +function lzr_levels.leave_level() + local player = get_singleplayer() + current_level = nil + clear_inventory(player) + player:set_pos(vector.add(lzr_globals.MENU_SHIP_POS, lzr_globals.MENU_SHIP_PLAYER_SPAWN_OFFSET)) +end + minetest.register_chatcommand("level", { privs = { server = true }, description = S("Go to level"), @@ -121,7 +133,25 @@ minetest.register_chatcommand("restart", { params = "", description = S("Restart current level"), func = function(name, param) - lzr_levels.start_level(current_level) - return true + if current_level then + lzr_levels.start_level(current_level) + return true + else + return false, S("Not playing in a level!") + end + end, +}) + +minetest.register_chatcommand("leave", { + privs = {}, + params = "", + description = S("Leave current level"), + func = function(name, param) + if current_level then + lzr_levels.leave_level(current_level) + return true + else + return false, S("Not playing in a level!") + end end, }) diff --git a/mods/lzr_menu/init.lua b/mods/lzr_menu/init.lua index 22b867c..be6f6a9 100644 --- a/mods/lzr_menu/init.lua +++ b/mods/lzr_menu/init.lua @@ -1,5 +1,8 @@ +local S = minetest.get_translator("lzr_menu") + local build_ship = function(pos) minetest.place_schematic(pos, minetest.get_modpath("lzr_menu").."/schematics/lzr_menu_ship.mts", "0", {}, true, "") + minetest.set_node(vector.add(lzr_globals.MENU_SHIP_POS, lzr_globals.MENU_SHIP_STARTBOOK_OFFSET), {name="lzr_menu:startbook", param2=0}) end local emerge_callback = function(blockpos, action, calls_remaining, param) @@ -25,4 +28,27 @@ minetest.register_on_joinplayer(function(player) player:set_pos(vector.add(lzr_globals.MENU_SHIP_POS, lzr_globals.MENU_SHIP_PLAYER_SPAWN_OFFSET)) end) +local on_punch = function() + lzr_levels.start_level(1) +end +local on_rightclick = on_punch + +minetest.register_node("lzr_menu:startbook", { + description = S("Start Game Book"), + tiles = { "lzr_menu_book_top.png", "lzr_menu_book_bottom.png", "lzr_menu_book_side.png", "lzr_menu_book_side.png", "lzr_menu_book_end.png", "lzr_menu_book_end.png" }, + paramtype = "light", + paramtype2 = "facedir", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + { -0.4375, -0.5, -0.375, 0.4375, -0.4375, 0.1875 }, + { -0.375, -0.4375, -0.375, 0.375, -0.375, 0.1875 } + } + }, + sunlight_propagates = true, + on_punch = on_punch, + on_rightclick = on_rightclick, + groups = { snappy = 3, not_in_creative_inventory = 1, }, +}) diff --git a/mods/lzr_menu/mod.conf b/mods/lzr_menu/mod.conf index 95460b9..c4a3810 100644 --- a/mods/lzr_menu/mod.conf +++ b/mods/lzr_menu/mod.conf @@ -1,2 +1,2 @@ name = lzr_menu -depends = lzr_globals, lzr_core, xdecor, lzr_mapgen +depends = lzr_globals, lzr_core, xdecor, lzr_mapgen, lzr_levels diff --git a/mods/lzr_menu/textures/lzr_menu_book_bottom.png b/mods/lzr_menu/textures/lzr_menu_book_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..78b8f16c51f7a570afeaf21f77edcc336938ac36 GIT binary patch literal 268 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgflc6kvFZTW^Ed7zMNW=KSdbAE1a zYF-JD%fR4Vl$uzQnxasiS(2gP?&%wlqL<1J6i@baaSYKopIr0*KQpstLuaGQfkOul zDC~%0JK9pef=6ZL_k;d3F615xIqR}&^1p=!GcLH!4A?25mVDzoe|uYfz*Zj%=6=rI zw`W|4J>;Tr!*I>d_J?M37Pf>+x7ABz&NE?K$j0z#p49#9r!(9@?(lT=b6Mw<&;$T` C!C0jL literal 0 HcmV?d00001 diff --git a/mods/lzr_menu/textures/lzr_menu_book_end.png b/mods/lzr_menu/textures/lzr_menu_book_end.png new file mode 100644 index 0000000000000000000000000000000000000000..1a587b4fa7ab6d52593aaa0d867a28be2a470c4d GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgflc6kvF&5wP?#y}z2%#er@=ltB< z)VvZPmw~~#C^fMpHASI3vm`^o-P1Q9MK6^dD4yi$;uxZF{_SaPz6Jvkmy5rDw6Hj5 z6~;15`m4?IdV!GVrJxKsrpCOcH&cx*7p-~{GBJ{o^$+W;DM3Bi9Lo)rO$64xF34kE zGdHoFE9=FmdKI;Vst04SwY Ag#Z8m literal 0 HcmV?d00001 diff --git a/mods/lzr_menu/textures/lzr_menu_book_side.png b/mods/lzr_menu/textures/lzr_menu_book_side.png new file mode 100644 index 0000000000000000000000000000000000000000..1ff41785bb6d8ceb13e64ee565267820c13ae686 GIT binary patch literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgflc6kvFbulwJ6QGc6W=KSdbAE1a zYF-JD%fR4Vl$uzQnxasiS(2gP?&%wlqL<1J6p!MWYZiP+i=JlXoBTdnb9+?$ x=bGn-W?gzLmG1HPdxzsIlT8u|wI@t|FvYBrI=lT};yI8LJYD@<);T3K0RS0lR<-~D literal 0 HcmV?d00001 diff --git a/mods/lzr_menu/textures/lzr_menu_book_top.png b/mods/lzr_menu/textures/lzr_menu_book_top.png new file mode 100644 index 0000000000000000000000000000000000000000..5d57ab977bf808aee02fdc759f848dfc739b8da7 GIT binary patch literal 416 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgflc6kvF)gKo1AR*bzkcblJ{M_8s zyb>Unfx)>bHL)Z$MWH;iBtya7(>EYRFO?lA{@v5XF~s8Z-N}YQM+|se?@vFgX8wTf zOqobbV{tKKlvJAk0nQDww-#qZ ztbP0l+XkKGG3Tv literal 0 HcmV?d00001 diff --git a/mods/lzr_startitems/init.lua b/mods/lzr_startitems/init.lua deleted file mode 100644 index 90caf01..0000000 --- a/mods/lzr_startitems/init.lua +++ /dev/null @@ -1,7 +0,0 @@ -minetest.register_on_joinplayer(function(player) - local inv = player:get_inventory() - if inv:contains_item("main", "screwdriver:screwdriver") then - else - inv:add_item("main", "screwdriver:screwdriver") - end -end) diff --git a/mods/lzr_startitems/mod.conf b/mods/lzr_startitems/mod.conf deleted file mode 100644 index c986004..0000000 --- a/mods/lzr_startitems/mod.conf +++ /dev/null @@ -1,2 +0,0 @@ -name = lzr_startitems -depends = screwdriver