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