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