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[]) {
|
fn main (argc real, argv str[]) {
|
||||||
let screen_width = 800;
|
let screen_width = 800;
|
||||||
|
@ -13,32 +13,31 @@ fn main (argc real, argv str[]) {
|
||||||
PURPLE
|
PURPLE
|
||||||
);
|
);
|
||||||
|
|
||||||
let players = me.login(password);
|
let running = true;
|
||||||
|
while (running) {
|
||||||
let window = Window("zwl client", screen_width, screen_height);
|
window("zwl client", screen_width, screen_height) {
|
||||||
let splitbox = window.split("vertical", 0.75); /* vertical split 75% left */
|
splitbox(parent.size*0.25) {
|
||||||
let universe = Universe();
|
canvas("2D") {
|
||||||
let canvas = Canvas();
|
if (button("logout")) {
|
||||||
canvas.append(Button("logout", fn () {
|
|
||||||
me.logout();
|
me.logout();
|
||||||
window.send("close");
|
running = false;
|
||||||
}));
|
}
|
||||||
splitbox.left.append(universe);
|
}
|
||||||
splitbox.right.append(canvas);
|
}
|
||||||
|
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");
|
exits("Client Closed Successfully");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fn player_behavior(Message m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ type Camera {
|
||||||
*/
|
*/
|
||||||
type Player {
|
type Player {
|
||||||
init (username str, pos Vec3, color Color) {
|
init (username str, pos Vec3, color Color) {
|
||||||
this.server = `tcp://localhost:25565`;
|
this.server = Client("tcp://localhost:25565");
|
||||||
this.username = username;
|
this.username = username;
|
||||||
this.pos = pos;
|
this.pos = pos;
|
||||||
this.color = color;
|
this.color = color;
|
||||||
|
@ -40,22 +40,22 @@ type Player {
|
||||||
}
|
}
|
||||||
|
|
||||||
update() {
|
update() {
|
||||||
if (key_down(KEY_RIGHT)) {
|
if (key_down("right")) {
|
||||||
this.pos.x = this.pos.x + 0.2;
|
this.pos.x = this.pos.x + 0.2;
|
||||||
this.server.write(Command(this.username, KEY_RIGHT))
|
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.pos.x = this.pos.x - 0.2;
|
||||||
this.server.write(Command(this.username, KEY_LEFT))
|
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.pos.z = this.pos.z + 0.2;
|
||||||
this.server.write(Command(this.username, KEY_DOWN))
|
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.pos.z = this.pos.z - 0.2;
|
||||||
this.server.write(Command(this.username, KEY_UP))
|
this.server.write(Command(this.username, KEY_UP))
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,22 @@
|
||||||
use `common.ztl`;
|
use "common.ztl";
|
||||||
|
|
||||||
fn main (argc real, argv str[]) {
|
fn main (argc real, argv str[]) {
|
||||||
let s = `tcp://0.0.0.0:25565`;
|
let s = Server("tcp://0.0.0.0:25565");
|
||||||
s.bind("players", fn () Player[] {
|
let running = true;
|
||||||
let players = [ Player("user", (0, 0, 0), RED) ];
|
let players = [ Player("user", (0, 0, 0), RED) ];
|
||||||
return players;
|
while(running) {
|
||||||
});
|
if (let client = s.accept("players")) {
|
||||||
s.start();
|
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);
|
exits(nil);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue