104 lines
2.0 KiB
Plaintext
104 lines
2.0 KiB
Plaintext
:vec {
|
|
:x f32
|
|
:y f32
|
|
:z f32
|
|
} type
|
|
|
|
:color {
|
|
:r i8
|
|
:g i8
|
|
:b i8
|
|
} type
|
|
|
|
:player {
|
|
:username str
|
|
:pos vec
|
|
:color color
|
|
} type
|
|
|
|
:login {
|
|
:player 0 check
|
|
:str 1 check
|
|
|
|
(* do the login here *)
|
|
} fn
|
|
|
|
255 255 0 :purple color
|
|
|
|
:main {
|
|
800 :screen_width i32
|
|
450 :screen_height i32
|
|
|
|
argv split
|
|
:username str
|
|
:password str
|
|
|
|
username 0.0 1.0 2.0 purple :me player
|
|
password me login :players set
|
|
|
|
me.pos.x
|
|
me.pos.y 10.0 add
|
|
me.pos.z 10.0 add (* Camera pos *)
|
|
me.pos (* Camera looking at point *)
|
|
0.0 1.0 0.0 (* Camera up vector(rotation towards target) *)
|
|
45.0 (* Camera field - of - view Y *)
|
|
:CAMERA_PERSPECTIVE (* Camera projection type *)
|
|
:camera Camera3D
|
|
|
|
screen_width screen_height "zwl client : raylib" init_window
|
|
60 set_target_fps
|
|
|
|
(* Main game loop *)
|
|
{
|
|
:KEY_RIGHT is_key_down {
|
|
0.2 me.pos.x add :me.pos.x set
|
|
true :player_updated set
|
|
} ifyes
|
|
|
|
:KEY_LEFT is_key_down {
|
|
0.2 me.pos.x sub :me.pos.x set
|
|
true :player_updated set
|
|
} ifyes
|
|
|
|
:KEY_DOWN is_key_down {
|
|
0.2 me.pos.z add :me.pos.z set
|
|
true :player_updated set
|
|
} ifyes
|
|
|
|
:KEY_UP is_key_down {
|
|
0.2 me.pos.z sub :me.pos.z set
|
|
true :player_updated set
|
|
} ifyes
|
|
|
|
camera me sync_camera
|
|
|
|
player_updated choose {
|
|
me move :players set
|
|
} ifyes {
|
|
me ping :players set
|
|
} ifno
|
|
|
|
begin_drawing
|
|
RAYWHITE clear_background
|
|
|
|
camera begin_mode_3d
|
|
|
|
(* Draw floor *)
|
|
30 1.0 draw_grid
|
|
|
|
me.pos 0.5 0.5 0.5 me.apperance draw_cube
|
|
players :player {
|
|
player.pos 0.5 0.5 0.5 player.apperance draw_cube
|
|
} map
|
|
|
|
end_mode_3d
|
|
|
|
end_drawing
|
|
}
|
|
{ window_should_close not } loop-if (* Detect window close button or ESC key *)
|
|
|
|
close_window (*Close window and OpenGL context *)
|
|
|
|
} fn
|
|
|
|
main |