94 lines
1.8 KiB
Plaintext
94 lines
1.8 KiB
Plaintext
use "common.ztl"
|
|
|
|
fn login(s: 9p, p: Player, password: str): []Player {
|
|
s.auth(p.username, password)
|
|
return s.read("players")
|
|
}
|
|
|
|
fn main(argc: i32, argv: []str): i32 {
|
|
const screen_width = 800;
|
|
const screen_height = 450;
|
|
|
|
let username = argv[0];
|
|
let password = argv[1];
|
|
|
|
let s = tunnel("localhost:25565");
|
|
s.attach();
|
|
|
|
let me = Player(
|
|
username,
|
|
Vec(0.0, 1.0, 2.0),
|
|
purple
|
|
);
|
|
let players = login(s, me, password);
|
|
|
|
let camera = Camera3D(
|
|
Vec(0.0, 1.0, 0.0),
|
|
45.0,
|
|
:CAMERA_PERSPECTIVE,
|
|
Vec(
|
|
me.pos.x + 10.0,
|
|
me.pos.y + 10.0,
|
|
me.pos.z
|
|
),
|
|
me.pos
|
|
);
|
|
|
|
init_window("zwl client : raylib", screen_width, screen_height);
|
|
set_target_fps(60);
|
|
|
|
(* Main game loop *)
|
|
while ( not window_should_close() ) {
|
|
let player_updated = false;
|
|
|
|
if (is_key_down(KEY_RIGHT)) {
|
|
me.pos.x = me.pos.x + 0.2;
|
|
player_updated = true;
|
|
}
|
|
|
|
if (is_key_down(KEY_LEFT)) {
|
|
me.pos.x = me.pos.x - 0.2;
|
|
player_updated = true;
|
|
}
|
|
|
|
if (is_key_down(KEY_DOWN)) {
|
|
me.pos.z = me.pos.z + 0.2;
|
|
player_updated = true;
|
|
}
|
|
|
|
if (is_key_down(KEY_UP)) {
|
|
me.pos.z = me.pos.z - 0.2;
|
|
player_updated = true;
|
|
}
|
|
|
|
sync_camera(s, me, camera);
|
|
|
|
if (player_updated) {
|
|
players = move(s, me);
|
|
} else {
|
|
players = ping(s, me);
|
|
}
|
|
|
|
begin_drawing();
|
|
clear_background(RAYWHITE);
|
|
|
|
begin_mode_3d(camera);
|
|
|
|
(* Draw floor *)
|
|
draw_grid(30, 1.0);
|
|
|
|
draw_cube(me.pos, 0.5, 0.5, 0.5, me.apperance);
|
|
|
|
for (player in players) {
|
|
draw_cube(player.pos, 0.5, 0.5, 0.5, player.apperance);
|
|
}
|
|
|
|
end_mode_3d();
|
|
|
|
end_drawing();
|
|
}
|
|
|
|
logout(me);
|
|
close_window(); (* Close window and OpenGL context *)
|
|
}
|