diff options
Diffstat (limited to 'src/menu')
| -rw-r--r-- | src/menu/input.moon | 30 | ||||
| -rw-r--r-- | src/menu/main.moon | 67 | ||||
| -rw-r--r-- | src/menu/playername.moon | 23 |
3 files changed, 120 insertions, 0 deletions
diff --git a/src/menu/input.moon b/src/menu/input.moon new file mode 100644 index 0000000..eb3cffe --- /dev/null +++ b/src/menu/input.moon @@ -0,0 +1,30 @@ +ui = require("ui") +world = require("world") +main_menu = require("menu.main") +input = {} + +buttons = {} +input.initalize = () -> + button_mk = ui.button(-630,-100,300,200,"Mouse\nand\nKeyboard") + button_touch = ui.button(-300,-250,500,500,"Touch") + button_controller = ui.button(250,-64,380,128,"Controller") + button_touch.on = () => + world.controller = require("controllers.touch") + input.remove! + button_mk.on = () => + print("setting mk controller") + world.controller = require("controllers.mouse_keyboard") + input.remove! + require("menu.main").initalize! + button_controller.on = () => + world.controller = require("controllers.controller") + input.remove! + buttons = {button_mk, button_touch, button_controller} + +input.remove = () -> + print("Removing buttons", buttons) + for button in *buttons + print("Deleting button",button) + ui.delete(button) + +input diff --git a/src/menu/main.moon b/src/menu/main.moon new file mode 100644 index 0000000..764ce28 --- /dev/null +++ b/src/menu/main.moon @@ -0,0 +1,67 @@ +ui = require("ui") +router = require("router") +world = require("world") +menu = {} + +buttons = {} +buttons_data = { + { + text: "Settings" + on: () => + menu.destroy! + require("menu.settings").initalize! + } + { + text: "Join" + on: () => + menu.destroy! + require("menu.join").initalize! + } + { + text: "Host" + on: () => + print("Setting co...") + if not @node.co + @node.co = coroutine.create(() -> + server = router.Router! + server\initalize! + server + ) + button = @ + @node\action(() => + print("In coroutine, menu is", menu) + if @co and coroutine.status(@co) ~= "dead" + succ, val = coroutine.resume(@co) + if not succ + error(debug.traceback(@co,val)) + if type(val) == "string" + print("Setting text", val) + button.text.text = val + else + print("Returned router") + world.router = val + menu.destroy! + require("menu.playername").initalize(true) + ) + } + { + text: "Tutorial" + on: () => + menu.destroy! + print("Load tutorial level") + } +} +menu.initalize = () -> + starty = -200 + for i = starty, ((#buttons_data-1) * (64 + 32)) + starty, 64 + 32 + print("making button", #buttons + 1) + buttons[#buttons + 1] = ui.button(-100,i,200,64,buttons_data[#buttons + 1].text) + buttons[#buttons].on = buttons_data[#buttons].on + + print("intalize") + +menu.destroy = () -> + for button in *buttons + ui.delete(button) + +menu diff --git a/src/menu/playername.moon b/src/menu/playername.moon new file mode 100644 index 0000000..afcddd0 --- /dev/null +++ b/src/menu/playername.moon @@ -0,0 +1,23 @@ +ui = require("ui") +world = require("world") + +menu = {} + +buttons = {} +menu.initalize = (is_host) -> + text = ui.textbox(-100,16,200,32) + submit = ui.button(-100,-16,200,32,"Use alias") + submit.on = () => + menu.destroy! + print("Got name:", text.text.text) -- <textbox class>.<am.text node>.<actual text lookup> + if is_host + require("worldgen") + print("Building player with", world.router, world.controller, text.text.text) + player = require("player").Player(world.router, world.controller ,text.text.text) + buttons = {text, submit} + +menu.destroy = () -> + for button in *buttons + ui.delete(button) + +menu |
