diff --git a/docs/project-syntax-example/src/client.ztl b/docs/project-syntax-example/src/client.ztl index 0133f28..e6d92b5 100644 --- a/docs/project-syntax-example/src/client.ztl +++ b/docs/project-syntax-example/src/client.ztl @@ -1,4 +1,4 @@ -use `common.ztl`; +use "common.ztl"; fn main (argc real, argv str[]) { let screen_width = 800; @@ -13,32 +13,31 @@ fn main (argc real, argv str[]) { PURPLE ); - let players = me.login(password); + let running = true; + while (running) { + window("zwl client", screen_width, screen_height) { + splitbox(parent.size*0.25) { + canvas("2D") { + if (button("logout")) { + me.logout(); + running = false; + } + } + } + splitbox(parent.size*0.75) { + canvas("3D") { + model(Floor((0, 0, 0), 30)); + me.update(); + model(Cube(me.pos, (0.5, 0.5, 0.5), me.appearance)); + if (let players = me.server.read("players")) { + for (p in players) { + model(Cube(p.pos, (0.5, 0.5, 0.5), p.apperance)); + } + } + } + } + } + } - let window = Window("zwl client", screen_width, screen_height); - let splitbox = window.split("vertical", 0.75); /* vertical split 75% left */ - let universe = Universe(); - let canvas = Canvas(); - canvas.append(Button("logout", fn () { - me.logout(); - window.send("close"); - })); - splitbox.left.append(universe); - splitbox.right.append(canvas); - - universe.append(Grid(30, 1.0)); - universe.append(Cube(player.pos, (0.5, 0.5, 0.5), me.appearance), player_behavior); - universe.listen("login", fn () { - let p = m.data as Player; - if (!p) return; - universe.append(Cube(p.pos, (0.5, 0.5, 0.5), p.apperance), player_behavior); - }); - - window.run(); exits("Client Closed Successfully"); } - - -fn player_behavior(Message m) { - -} diff --git a/docs/project-syntax-example/src/common.ztl b/docs/project-syntax-example/src/common.ztl index 7e0986c..25afc2c 100644 --- a/docs/project-syntax-example/src/common.ztl +++ b/docs/project-syntax-example/src/common.ztl @@ -16,7 +16,7 @@ type Camera { */ type Player { init (username str, pos Vec3, color Color) { - this.server = `tcp://localhost:25565`; + this.server = Client("tcp://localhost:25565"); this.username = username; this.pos = pos; this.color = color; @@ -40,22 +40,22 @@ type Player { } update() { - if (key_down(KEY_RIGHT)) { + if (key_down("right")) { this.pos.x = this.pos.x + 0.2; this.server.write(Command(this.username, KEY_RIGHT)) } - if (key_down(KEY_LEFT)) { + if (key_down("left")) { this.pos.x = this.pos.x - 0.2; this.server.write(Command(this.username, KEY_LEFT)) } - if (key_down(KEY_DOWN)) { + if (key_down("down")) { this.pos.z = this.pos.z + 0.2; this.server.write(Command(this.username, KEY_DOWN)) } - if (key_down(KEY_UP)) { + if (key_down("up")) { this.pos.z = this.pos.z - 0.2; this.server.write(Command(this.username, KEY_UP)) } diff --git a/docs/project-syntax-example/src/server.ztl b/docs/project-syntax-example/src/server.ztl index a51f5ab..e0fc193 100644 --- a/docs/project-syntax-example/src/server.ztl +++ b/docs/project-syntax-example/src/server.ztl @@ -1,11 +1,22 @@ -use `common.ztl`; +use "common.ztl"; fn main (argc real, argv str[]) { - let s = `tcp://0.0.0.0:25565`; - s.bind("players", fn () Player[] { - let players = [ Player("user", (0, 0, 0), RED) ]; - return players; - }); - s.start(); + let s = Server("tcp://0.0.0.0:25565"); + let running = true; + let players = [ Player("user", (0, 0, 0), RED) ]; + while(running) { + if (let client = s.accept("players")) { + if (let message = client.get()) { + if (message == "close") { + client.close(); + running = false; + } else if (message == "players") { + client.write(players); + } else { + print("unknown message {message}"); + } + } + } + } exits(nil); }