gui example, server socket example
This commit is contained in:
parent
96785dcd22
commit
a6e254a100
|
@ -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 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 () {
|
||||
let running = true;
|
||||
while (running) {
|
||||
window("zwl client", screen_width, screen_height) {
|
||||
splitbox(parent.size*0.25) {
|
||||
canvas("2D") {
|
||||
if (button("logout")) {
|
||||
me.logout();
|
||||
window.send("close");
|
||||
}));
|
||||
splitbox.left.append(universe);
|
||||
splitbox.right.append(canvas);
|
||||
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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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) {
|
||||
|
||||
}
|
||||
|
|
|
@ -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))
|
||||
}
|
||||
|
|
|
@ -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 s = Server("tcp://0.0.0.0:25565");
|
||||
let running = true;
|
||||
let players = [ Player("user", (0, 0, 0), RED) ];
|
||||
return players;
|
||||
});
|
||||
s.start();
|
||||
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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue