reality-engine/docs/old/project-example-v2/src/client.ztl

92 lines
1.8 KiB
Plaintext

use "common.ztl";
Player[] login (9pc s Player p str password) {
s.auth(p.username, password);
return s.read("players");
};
i32 main (i32 argc str[] argv) {
const i32 screen_width = 800;
const i32 screen_height = 450;
str username = argv[0];
str password = argv[1];
Player me = {
username: username,
pos: {0.0 1.0 2.0},
apperance: purple,
};
Player[] players = me.login(password);
Camera3D camera = {
up: {0.0 1.0 0.0},
fov: 45.0,
type: CAMERA_PERSPECTIVE,
pos: {
me.pos.x + 10.0,
me.pos.y + 10.0,
me.pos.z,
},
target: me.pos,
};
init_window("zwl client : raylib", screen_width, screen_height);
set_target_fps(60);
/* Main game loop */
while ( not window_should_close ) {
if (is_key_down(KEY_RIGHT)) {
me.pos.x += 0.2;
player_updated = true;
};
if (is_key_down(KEY_LEFT)) {
me.pos.x -= 0.2;
player_updated = true;
};
if (is_key_down(KEY_DOWN)) {
me.pos.z += 0.2;
player_updated = true;
};
if (is_key_down(KEY_UP)) {
me.pos.z -= 0.2;
player_updated = true;
};
me.sync_camera(camera);
if (player_updated) {
players = me.move();
} else {
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 */
players = logout(me);
close_window(); /* Close window and OpenGL context */
return 0;
};