95 lines
1.9 KiB
Plaintext
95 lines
1.9 KiB
Plaintext
use "common.ztl"
|
|
|
|
fn :login (9p :s Player :p str :password) Player[] {
|
|
s.auth(p.username, password);
|
|
return s.read("players");
|
|
}
|
|
|
|
|
|
fn :main (i32 :argc str[] :argv) i32 {
|
|
set :screen_width to i32 800;
|
|
set :screen_height to i32 450;
|
|
|
|
set :username to argv[0];
|
|
set :password to argv[1];
|
|
|
|
set :me to Player
|
|
username
|
|
0.0 1.0 2.0
|
|
purple
|
|
;
|
|
|
|
set :players to Player[] login(password);
|
|
|
|
set :camera to Camera3D
|
|
0.0 1.0 0.0
|
|
45.0
|
|
:CAMERA_PERSPECTIVE
|
|
add me.pos.x 10.0
|
|
add 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 ) {
|
|
|
|
set :player_updated to false;
|
|
|
|
if (is_key_down(:KEY_RIGHT)) {
|
|
set me.pos.x to {add me.pos.x 0.2};
|
|
set :player_updated true;
|
|
}
|
|
|
|
if (is_key_down(:KEY_LEFT)) {
|
|
set me.pos.x to {sub me.pos.x 0.2};
|
|
set :player_updated true;
|
|
}
|
|
|
|
if (is_key_down(:KEY_DOWN)) {
|
|
set me.pos.z to {add me.pos.z 0.2};
|
|
set :player_updated true;
|
|
}
|
|
|
|
if (is_key_down(:KEY_UP)) {
|
|
set me.pos.z to {sub me.pos.z 0.2};
|
|
set :player_updated true;
|
|
}
|
|
|
|
me.sync_camera(camera);
|
|
|
|
if (player_updated) {
|
|
set :players me.move();
|
|
} else {
|
|
set :players me.ping();
|
|
}
|
|
|
|
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();
|
|
}
|
|
/* Detect window close button or ESC key */
|
|
|
|
me.logout();
|
|
close_window(); /*Close window and OpenGL context */
|
|
return 0;
|
|
}
|
|
|