1
0
Fork 0
undar-lang-register/docs/old/project-example-v3/src/client.ztl

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