94 lines
1.9 KiB
Plaintext
94 lines
1.9 KiB
Plaintext
use "common.ztl";
|
|
use "raylib" as rl;
|
|
|
|
fn main (i32 argc, str[] argv) i32 {
|
|
set screen_width to 800 as i32;
|
|
set screen_height to 450 as i32;
|
|
|
|
set username to argv[0];
|
|
set password to argv[1];
|
|
|
|
set server to 9p("localhost:25565");
|
|
|
|
set me to Player(
|
|
server,
|
|
username,
|
|
Vec(0.0, 1.0, 2.0),
|
|
purple
|
|
);
|
|
|
|
set players to me.login(password);
|
|
|
|
set camera to rl.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
|
|
);
|
|
|
|
rl.init_window("zwl client : raylib", screen_width, screen_height);
|
|
rl.set_target_fps(60);
|
|
|
|
!!
|
|
Main game loop
|
|
!!
|
|
while ( not rl.window_should_close() ) { ! Detect window close button or ESC key
|
|
|
|
set player_updated to false;
|
|
|
|
if (rl.is_key_down(KEY_RIGHT)) {
|
|
set me.pos.x to (me.pos.x + 0.2);
|
|
set player_updated to true;
|
|
}
|
|
|
|
if (rl.is_key_down(KEY_LEFT)) {
|
|
set me.pos.x to (me.pos.x + 0.2);
|
|
set player_updated to true;
|
|
}
|
|
|
|
if (rl.is_key_down(KEY_DOWN)) {
|
|
set me.pos.z to (me.pos.z + 0.2);
|
|
set player_updated to true;
|
|
}
|
|
|
|
if (rl.is_key_down(KEY_UP)) {
|
|
set me.pos.z to (me.pos.z - 0.2);
|
|
set player_updated to true;
|
|
}
|
|
|
|
me.sync_camera(camera);
|
|
|
|
if (player_updated) {
|
|
set players to me.move();
|
|
} else {
|
|
set players to me.ping();
|
|
}
|
|
|
|
rl.begin_drawing();
|
|
rl.clear_background(RAYWHITE);
|
|
|
|
rl.begin_mode_3d(camera);
|
|
|
|
! Draw floor
|
|
rl.draw_grid(30, 1.0);
|
|
|
|
rl.draw_cube(me.pos, 0.5, 0.5, 0.5, me.apperance);
|
|
|
|
for (player in players) {
|
|
rl.draw_cube(player.pos, 0.5, 0.5, 0.5, player.apperance);
|
|
}
|
|
|
|
rl.end_mode_3d();
|
|
|
|
rl.end_drawing();
|
|
}
|
|
|
|
me.logout();
|
|
close_window(); ! Close window and OpenGL context
|
|
return 0;
|
|
}
|
|
|