gui example, server socket example

This commit is contained in:
zongor 2025-05-31 23:56:07 -04:00
parent 96785dcd22
commit a6e254a100
3 changed files with 49 additions and 39 deletions

View File

@ -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) {
}

View File

@ -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))
}

View File

@ -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);
}