summaryrefslogtreecommitdiff
path: root/src/menu
diff options
context:
space:
mode:
Diffstat (limited to 'src/menu')
-rw-r--r--src/menu/input.moon30
-rw-r--r--src/menu/main.moon67
-rw-r--r--src/menu/playername.moon23
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