delete old files
This commit is contained in:
parent
00e7037128
commit
281211d150
|
@ -47,3 +47,4 @@ flycheck_*.el
|
||||||
# network security
|
# network security
|
||||||
/network-security.data
|
/network-security.data
|
||||||
|
|
||||||
|
.ccls-cache/
|
|
@ -1,31 +0,0 @@
|
||||||
```c / zig + lisp like
|
|
||||||
(fn main (argc :i32 argv :[str]) (v :i32) (
|
|
||||||
(set message (concat "hello " (get argv 1) " !\n" ))
|
|
||||||
(write :std message)
|
|
||||||
(set v 0)))
|
|
||||||
```
|
|
||||||
|
|
||||||
```c + zig like
|
|
||||||
i32 main(i32 argc, str[] argv) {
|
|
||||||
str message = concat("hello ", argv[1], " !\n");
|
|
||||||
write(:std, message);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
```lisp like
|
|
||||||
(set message (concat "Hello " (get argv 1) " !\n"))
|
|
||||||
(write 0 message)
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
```forth + lisp / var'aq like
|
|
||||||
"Hello " argv shatter strtie " !\n" strtie disp
|
|
||||||
```
|
|
||||||
|
|
||||||
```fortran c / zig + fortran like
|
|
||||||
program main {
|
|
||||||
str message = concat("hello ", argv[1], "! \n")
|
|
||||||
write(0, "%s", message)
|
|
||||||
}
|
|
||||||
```
|
|
|
@ -1,39 +0,0 @@
|
||||||
(255 255 0) ~ purple set
|
|
||||||
|
|
||||||
~ main {
|
|
||||||
800 ~ screen_width set
|
|
||||||
450 ~ screen_height set
|
|
||||||
|
|
||||||
argv split
|
|
||||||
~ username set
|
|
||||||
~ password set
|
|
||||||
|
|
||||||
() username cons (0.0 1.0 2.0) cons purple cons ~ me set
|
|
||||||
() password cons me login cons ~ players set
|
|
||||||
|
|
||||||
() () me shatter pop exch pop shatter cons
|
|
||||||
10.0 add cons
|
|
||||||
10.0 add cons
|
|
||||||
me shatter pop exch pop cons
|
|
||||||
(0.0 1.0 0.0) cons
|
|
||||||
45.0 cons
|
|
||||||
"CAMERA_PERSPECTIVE" cons
|
|
||||||
~ camera set
|
|
||||||
|
|
||||||
screen_width screen_height "zwl client : raylib" init_window
|
|
||||||
60 set_target_fps
|
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
(* Do handling in here *)
|
|
||||||
|
|
||||||
end_mode_3d
|
|
||||||
|
|
||||||
end_drawing
|
|
||||||
} window_should_close repeat (* Detect window close button or ESC key *)
|
|
||||||
|
|
||||||
me logout ~ players set
|
|
||||||
close_window (*Close window and OpenGL context *)
|
|
||||||
} set
|
|
||||||
|
|
||||||
main
|
|
|
@ -1,82 +0,0 @@
|
||||||
program main
|
|
||||||
use raylib
|
|
||||||
use player
|
|
||||||
use json
|
|
||||||
|
|
||||||
i32 screen_width = 800
|
|
||||||
i32 screen_height = 450
|
|
||||||
|
|
||||||
i32 i, status
|
|
||||||
f32 time
|
|
||||||
bool player_updated, exist
|
|
||||||
|
|
||||||
str username
|
|
||||||
str password
|
|
||||||
|
|
||||||
call getarg(1, username)
|
|
||||||
call getarg(2, password)
|
|
||||||
|
|
||||||
open(u, file=file_input)
|
|
||||||
defer close(u)
|
|
||||||
|
|
||||||
inquire(unit=u, size=sz)
|
|
||||||
|
|
||||||
Player me(username=username, pos=(0.0, 1.0, 2.0), apperance=PURPLE)
|
|
||||||
Player(:) players = me.login(password)
|
|
||||||
|
|
||||||
Camera3D camera = Camera3D(pos = (me.pos.x, me.pos.y + 10.0, me.pos.z + 10.0), !Camera pos
|
|
||||||
target = (me.pos.x, me.pos.y, me.pos.z), !Camera looking at point
|
|
||||||
up = (0.0, 1.0, 0.0), !Camera up vector(rotation towards target)
|
|
||||||
fovy = 45.0, !Camera field - of - view Y
|
|
||||||
projection = CAMERA_PERSPECTIVE) !Camera projection type
|
|
||||||
|
|
||||||
init_window(screen_width, screen_height, "zwl client : raylib")
|
|
||||||
set_target_fps(60)
|
|
||||||
|
|
||||||
!Main game loop
|
|
||||||
do while (.not. window_should_close()) ! Detect window close button or ESC key
|
|
||||||
|
|
||||||
if (is_key_down(KEY_RIGHT)) then
|
|
||||||
me.pos.x += 0.2
|
|
||||||
player_updated = .true.
|
|
||||||
else if (is_key_down(KEY_LEFT)) then
|
|
||||||
me.pos.x -= 0.2
|
|
||||||
player_updated = .true.
|
|
||||||
else if (is_key_down(KEY_DOWN)) then
|
|
||||||
me.pos.z += 0.2
|
|
||||||
player_updated = .true.
|
|
||||||
else if (is_key_down(KEY_UP)) then
|
|
||||||
me.pos.z -= 0.2
|
|
||||||
player_updated = .true.
|
|
||||||
end if
|
|
||||||
|
|
||||||
me.sync_camera(camera)
|
|
||||||
|
|
||||||
time = get_time()
|
|
||||||
if (modulo(time, 1.0) .ge. 0.98) then
|
|
||||||
if (player_updated) then
|
|
||||||
players = me.move()
|
|
||||||
else
|
|
||||||
players = me.ping()
|
|
||||||
end if
|
|
||||||
end if
|
|
||||||
|
|
||||||
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)
|
|
||||||
do i = 1, size(players)
|
|
||||||
draw_cube(players(i).pos, 0.5, 0.5, 0.5, players(i).apperance)
|
|
||||||
end do
|
|
||||||
end_mode_3d()
|
|
||||||
end_drawing()
|
|
||||||
|
|
||||||
end do
|
|
||||||
|
|
||||||
players = me.logout()
|
|
||||||
close_window() !Close window and OpenGL context
|
|
||||||
end program
|
|
|
@ -1,43 +0,0 @@
|
||||||
(set screen-width 800:i32)
|
|
||||||
(set screen-height 450:i32)
|
|
||||||
(set username (get argv 1))
|
|
||||||
(set password (get argv 2))
|
|
||||||
(set me (make:player username (0.0 1.0 2.0) PURPLE))
|
|
||||||
(set players (login me))
|
|
||||||
(set camera (make:camera (me.pos.x (add me.pos.y 10.0) (add me.pos.z 10.0))
|
|
||||||
(me.pos.x me.pos.y me.pos.z)
|
|
||||||
(0.0 1.0 0.0)
|
|
||||||
45.0
|
|
||||||
CAMERA-PERSPECTIVE))
|
|
||||||
|
|
||||||
(init-window screen-width screen-height "lisp-ish client : raylib")
|
|
||||||
(set-target-fps 60)
|
|
||||||
|
|
||||||
(using-window
|
|
||||||
(while (not (window-should-close))
|
|
||||||
(case
|
|
||||||
(is-key-down KEY-RIGHT (
|
|
||||||
(inc me.pos.x 0.2)
|
|
||||||
(set player-updated t)))
|
|
||||||
(is-key-down KEY-LEFT (
|
|
||||||
(dec me.pos.x 0.2)
|
|
||||||
(set player-updated t)))
|
|
||||||
(is-key-down KEY-DOWN (
|
|
||||||
(inc me.pos.z 0.2)
|
|
||||||
(set player-updated t)))
|
|
||||||
(is-key-down KEY-UP (
|
|
||||||
(dec me.pos.z 0.2)
|
|
||||||
(set player-updated t))))
|
|
||||||
|
|
||||||
(sync-camera me camera)
|
|
||||||
(choose (player-updated)
|
|
||||||
(set players (move me))
|
|
||||||
(set players (ping me)))
|
|
||||||
|
|
||||||
(begin-drawing (
|
|
||||||
(clear-background RAYWHITE)
|
|
||||||
(begin-mode-3d camera (
|
|
||||||
(draw-grid 30 1.0)
|
|
||||||
(draw-cube me.pos 0.5 0.5 0.5 me.apperance)
|
|
||||||
(for-each (player) players (
|
|
||||||
(draw-cube player.pos 0.5 0.5 0.5 player.apperance)))))))))
|
|
|
@ -1,39 +0,0 @@
|
||||||
(set purple (255 255 0))
|
|
||||||
|
|
||||||
:main {
|
|
||||||
800 :screen_width set
|
|
||||||
450 :screen_height set
|
|
||||||
|
|
||||||
argv split
|
|
||||||
:username set
|
|
||||||
:password set
|
|
||||||
|
|
||||||
(username (0.0 1.0 2.0) purple) :me set
|
|
||||||
(password (me login)) :players set
|
|
||||||
|
|
||||||
() () me shatter pop exch pop shatter cons
|
|
||||||
10.0 add cons
|
|
||||||
10.0 add cons
|
|
||||||
me shatter pop exch pop cons
|
|
||||||
(0.0 1.0 0.0) cons
|
|
||||||
45.0 cons
|
|
||||||
"CAMERA_PERSPECTIVE" cons
|
|
||||||
:camera set
|
|
||||||
|
|
||||||
screen_width screen_height "zwl client : raylib" init_window
|
|
||||||
60 set_target_fps
|
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
(* Do handling in here *)
|
|
||||||
|
|
||||||
end_mode_3d
|
|
||||||
|
|
||||||
end_drawing
|
|
||||||
} window_should_close repeat (* Detect window close button or ESC key *)
|
|
||||||
|
|
||||||
me logout :players set
|
|
||||||
close_window (*Close window and OpenGL context *)
|
|
||||||
} set
|
|
||||||
|
|
||||||
main
|
|
|
@ -1,63 +0,0 @@
|
||||||
i32 main(i32 argc, str argv[]) {
|
|
||||||
|
|
||||||
i32 screen_width = 800
|
|
||||||
i32 screen_height = 450
|
|
||||||
|
|
||||||
str username = argv[1]
|
|
||||||
str password = argv[2]
|
|
||||||
|
|
||||||
Player me(username=username, pos=(0.0, 1.0, 2.0), apperance=PURPLE)
|
|
||||||
Player[] players = me.login(password)
|
|
||||||
|
|
||||||
Camera3D camera(pos = (me.pos.x, me.pos.y + 10.0, me.pos.z + 10.0), //Camera pos
|
|
||||||
target = (me.pos.x, me.pos.y, me.pos.z), //Camera looking at point
|
|
||||||
up = (0.0, 1.0, 0.0), //Camera up vector(rotation towards target)
|
|
||||||
fovy = 45.0, //Camera field - of - view Y
|
|
||||||
projection = CAMERA_PERSPECTIVE) //Camera projection type
|
|
||||||
|
|
||||||
init_window(screen_width, screen_height, "zwl client : raylib")
|
|
||||||
set_target_fps(60)
|
|
||||||
|
|
||||||
//Main game loop
|
|
||||||
do while (.not. window_should_close()) { // Detect window close button or ESC key
|
|
||||||
|
|
||||||
if (is_key_down(KEY_RIGHT)) {
|
|
||||||
me.pos.x = me.pos.x + 0.2
|
|
||||||
player_updated = .true.
|
|
||||||
} else if (is_key_down(KEY_LEFT)) {
|
|
||||||
me.pos.x = me.pos.x - 0.2
|
|
||||||
player_updated = .true.
|
|
||||||
} else if (is_key_down(KEY_DOWN)) {
|
|
||||||
me.pos.z = me.pos.z + 0.2
|
|
||||||
player_updated = .true.
|
|
||||||
} else if (is_key_down(KEY_UP)) {
|
|
||||||
me.pos.z = 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)
|
|
||||||
do (int i = 0; size(players)) {
|
|
||||||
draw_cube(players[i].pos, 0.5, 0.5, 0.5, players[i].apperance)
|
|
||||||
}
|
|
||||||
end_mode_3d()
|
|
||||||
end_drawing()
|
|
||||||
}
|
|
||||||
|
|
||||||
players = me.logout()
|
|
||||||
close_window() //Close window and OpenGL context
|
|
||||||
}
|
|
|
@ -1,110 +0,0 @@
|
||||||
:vec {
|
|
||||||
<f32> :x
|
|
||||||
<f32> :y
|
|
||||||
<f32> :z
|
|
||||||
} type
|
|
||||||
|
|
||||||
:color {
|
|
||||||
<i8> :r
|
|
||||||
<i8> :g
|
|
||||||
<i8> :b
|
|
||||||
} type
|
|
||||||
|
|
||||||
:player {
|
|
||||||
<str> :username
|
|
||||||
<vec> :pos
|
|
||||||
<color> :color
|
|
||||||
} type
|
|
||||||
|
|
||||||
:login {
|
|
||||||
<player> 0 check
|
|
||||||
<str> 1 check
|
|
||||||
|
|
||||||
(* do the login here *)
|
|
||||||
} sub
|
|
||||||
|
|
||||||
255 255 0 <color> new :purple set
|
|
||||||
|
|
||||||
:main {
|
|
||||||
800 <i32> new :screen_width set
|
|
||||||
450 <i32> new :screen_height set
|
|
||||||
|
|
||||||
argv split
|
|
||||||
<str> new :username set
|
|
||||||
<str> new :password set
|
|
||||||
|
|
||||||
username (0.0 1.0 2.0) purple <player> new :me set
|
|
||||||
password me login <(player)> new :players set
|
|
||||||
|
|
||||||
() me (:pos :x) acc push
|
|
||||||
me (:pos :y) acc 10.0 add push
|
|
||||||
me (:pos :z) acc 10.0 add push (* Camera pos *)
|
|
||||||
|
|
||||||
() me (:pos :x) acc push
|
|
||||||
me (:pos :y) acc push
|
|
||||||
me (:pos :z) acc push (* 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 *)
|
|
||||||
<Camera3D> new :camera set
|
|
||||||
|
|
||||||
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) acc inc me (:pos :x) mut :me set
|
|
||||||
true :player_updated set
|
|
||||||
} ifyes
|
|
||||||
|
|
||||||
:KEY_LEFT is_key_down {
|
|
||||||
0.2 me (:pos :x) acc dec me (:pos :x) mut :me set
|
|
||||||
true :player_updated set
|
|
||||||
} ifyes
|
|
||||||
|
|
||||||
:KEY_DOWN is_key_down {
|
|
||||||
0.2 me (:pos :z) acc inc me (:z :pos) mut :me set
|
|
||||||
true :player_updated set
|
|
||||||
} ifyes
|
|
||||||
|
|
||||||
:KEY_UP is_key_down {
|
|
||||||
0.2 me (:pos :z) acc dec me (:z :pos) mut :me set
|
|
||||||
true :player_updated set
|
|
||||||
} ifyes
|
|
||||||
|
|
||||||
camera me sync_camera
|
|
||||||
|
|
||||||
player_updated choose {
|
|
||||||
me move :players set
|
|
||||||
} ifyes {
|
|
||||||
me ping :players set
|
|
||||||
} isubo
|
|
||||||
|
|
||||||
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 {
|
|
||||||
.pos 0.5 0.5 0.5 .apperance draw_cube
|
|
||||||
} map
|
|
||||||
|
|
||||||
end_mode_3d
|
|
||||||
|
|
||||||
end_drawing
|
|
||||||
}
|
|
||||||
{ window_should_close not } while (* Detect window close button or ESC key *)
|
|
||||||
|
|
||||||
:players me logout set
|
|
||||||
close_window() (*Close window and OpenGL context *)
|
|
||||||
|
|
||||||
} sub
|
|
||||||
|
|
||||||
main
|
|
|
@ -1,103 +0,0 @@
|
||||||
: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 str -> nil) {
|
|
||||||
|
|
||||||
(* do the login here *)
|
|
||||||
} fn
|
|
||||||
|
|
||||||
255 255 0 :purple color
|
|
||||||
|
|
||||||
:main (i32 char** -> i32) {
|
|
||||||
800 :screen_width i32
|
|
||||||
450 :screen_height i32
|
|
||||||
|
|
||||||
pop shatter
|
|
||||||
: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
|
|
||||||
|
|
||||||
argv split count main
|
|
|
@ -1,110 +0,0 @@
|
||||||
type :vec {
|
|
||||||
<f32> :x
|
|
||||||
<f32> :y
|
|
||||||
<f32> :z
|
|
||||||
}
|
|
||||||
|
|
||||||
type :color {
|
|
||||||
<i8> :r
|
|
||||||
<i8> :g
|
|
||||||
<i8> :b
|
|
||||||
}
|
|
||||||
|
|
||||||
type :player {
|
|
||||||
<str> :username
|
|
||||||
<vec> :pos
|
|
||||||
<color> :color
|
|
||||||
}
|
|
||||||
|
|
||||||
fn :login {
|
|
||||||
check 0 <player>
|
|
||||||
check 1 <str>
|
|
||||||
|
|
||||||
(* do the login here *)
|
|
||||||
}
|
|
||||||
|
|
||||||
set :purple new <color> [255 255 0]
|
|
||||||
|
|
||||||
fn :main {
|
|
||||||
set :screen_width new <i32> 800
|
|
||||||
set :screen_height new <i32> 450
|
|
||||||
|
|
||||||
split argv
|
|
||||||
set :username new <str>
|
|
||||||
set :password new <str>
|
|
||||||
|
|
||||||
set :me new <player> [
|
|
||||||
username
|
|
||||||
new <vec> [0.0 1.0 2.0]
|
|
||||||
purple
|
|
||||||
]
|
|
||||||
set :players <(<player>)> login me password
|
|
||||||
|
|
||||||
set :camera new <Camera3D> [
|
|
||||||
new <vec> [0.0 1.0 0.0]
|
|
||||||
new <i32> 45.0
|
|
||||||
:CAMERA_PERSPECTIVE
|
|
||||||
new <vec> [add [acc me (:pos :x)] 10.0] [add [acc me (:pos :y)] 10.0] [acc me (:pos :z)]
|
|
||||||
new <vec> [acc me :pos]
|
|
||||||
]
|
|
||||||
|
|
||||||
init_window screen_width screen_height "zwl client : raylib"
|
|
||||||
set_target_fps 60
|
|
||||||
|
|
||||||
(* Main game loop *)
|
|
||||||
while { not window_should_close } {
|
|
||||||
|
|
||||||
if is_key_down :KEY_RIGHT {
|
|
||||||
mut :me (:pos :x) add [acc me :pos :x] 0.2
|
|
||||||
set :player_updated true
|
|
||||||
}
|
|
||||||
|
|
||||||
if is_key_down :KEY_LEFT {
|
|
||||||
mut :me (:pos :x) sub [acc me :pos :x] 0.2
|
|
||||||
set :player_updated true
|
|
||||||
}
|
|
||||||
|
|
||||||
if is_key_down :KEY_DOWN {
|
|
||||||
mut :me (:pos :z) add [acc me :pos :z] 0.2
|
|
||||||
set :player_updated true
|
|
||||||
}
|
|
||||||
|
|
||||||
if is_key_down :KEY_UP {
|
|
||||||
mut :me (:pos :z) sub [acc me :pos :z] 0.2
|
|
||||||
set :player_updated true
|
|
||||||
}
|
|
||||||
|
|
||||||
sync_camera camera me
|
|
||||||
|
|
||||||
if player_updated {
|
|
||||||
set :players move me
|
|
||||||
} else {
|
|
||||||
set :players ping me
|
|
||||||
}
|
|
||||||
|
|
||||||
begin_drawing
|
|
||||||
clear_background RAYWHITE
|
|
||||||
|
|
||||||
begin_mode_3d camera
|
|
||||||
|
|
||||||
(* Draw floor *)
|
|
||||||
draw_grid 30 1.0
|
|
||||||
|
|
||||||
draw_cube [acc me :pos] 0.5 0.5 0.5 [acc me :apperance]
|
|
||||||
|
|
||||||
map players {
|
|
||||||
draw_cube [acc @this :pos] 0.5 0.5 0.5 [acc @this apperance]
|
|
||||||
}
|
|
||||||
|
|
||||||
end_mode_3d
|
|
||||||
|
|
||||||
end_drawing
|
|
||||||
}
|
|
||||||
(* Detect window close button or ESC key *)
|
|
||||||
|
|
||||||
players = me.logout()
|
|
||||||
close_window() (*Close window and OpenGL context *)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
main
|
|
|
@ -1,113 +0,0 @@
|
||||||
type :Vec {
|
|
||||||
f32 :x
|
|
||||||
f32 :y
|
|
||||||
f32 :z
|
|
||||||
}
|
|
||||||
|
|
||||||
type :Color {
|
|
||||||
i8 :r
|
|
||||||
i8 :g
|
|
||||||
i8 :b
|
|
||||||
}
|
|
||||||
|
|
||||||
type :Player {
|
|
||||||
Str :username
|
|
||||||
Vec :pos
|
|
||||||
Color :color
|
|
||||||
}
|
|
||||||
|
|
||||||
fn :login {
|
|
||||||
Player
|
|
||||||
str
|
|
||||||
|
|
||||||
(* do the login here *)
|
|
||||||
}
|
|
||||||
|
|
||||||
Color :purple {255 255 0}
|
|
||||||
|
|
||||||
fn :main {
|
|
||||||
i32 :screen_width 800
|
|
||||||
i32 :screen_height 450
|
|
||||||
|
|
||||||
split argv
|
|
||||||
str :username
|
|
||||||
str :password
|
|
||||||
|
|
||||||
Player :me {
|
|
||||||
username
|
|
||||||
vec {0.0 1.0 2.0}
|
|
||||||
purple
|
|
||||||
}
|
|
||||||
Player() :players { login me password }
|
|
||||||
|
|
||||||
Camera3D :camera {
|
|
||||||
vec {0.0 1.0 0.0}
|
|
||||||
i32 45.0
|
|
||||||
atom :CAMERA_PERSPECTIVE
|
|
||||||
vec {
|
|
||||||
add acc (:me :pos :x) 10.0
|
|
||||||
add acc (:me :pos :y) 10.0
|
|
||||||
acc (:me :pos :z)
|
|
||||||
}
|
|
||||||
vec {acc 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} {
|
|
||||||
mut (:me :pos :x) add acc me :pos :x 0.2
|
|
||||||
set :player_updated true
|
|
||||||
}
|
|
||||||
|
|
||||||
if {is_key_down :KEY_LEFT} {
|
|
||||||
mut (:me :pos :x) sub acc me :pos :x 0.2
|
|
||||||
set :player_updated true
|
|
||||||
}
|
|
||||||
|
|
||||||
if {is_key_down :KEY_DOWN} {
|
|
||||||
mut (:me :pos :z) add acc me :pos :z 0.2
|
|
||||||
set :player_updated true
|
|
||||||
}
|
|
||||||
|
|
||||||
if {is_key_down :KEY_UP} {
|
|
||||||
mut (:me :pos :z) sub acc me :pos :z 0.2
|
|
||||||
set :player_updated true
|
|
||||||
}
|
|
||||||
|
|
||||||
sync_camera camera me
|
|
||||||
|
|
||||||
if (player_updated) {
|
|
||||||
set :players move me
|
|
||||||
} else {
|
|
||||||
set :players ping me
|
|
||||||
}
|
|
||||||
|
|
||||||
begin_drawing
|
|
||||||
clear_background RAYWHITE
|
|
||||||
|
|
||||||
begin_mode_3d camera
|
|
||||||
|
|
||||||
(* Draw floor *)
|
|
||||||
draw_grid 30 1.0
|
|
||||||
|
|
||||||
draw_cube [acc me :pos] 0.5 0.5 0.5 [acc me :apperance]
|
|
||||||
|
|
||||||
map :player players {
|
|
||||||
draw_cube [acc player :pos] 0.5 0.5 0.5 [acc player apperance]
|
|
||||||
}
|
|
||||||
|
|
||||||
end_mode_3d
|
|
||||||
|
|
||||||
end_drawing
|
|
||||||
}
|
|
||||||
(* Detect window close button or ESC key *)
|
|
||||||
|
|
||||||
set :players logout me
|
|
||||||
close_window (*Close window and OpenGL context *)
|
|
||||||
}
|
|
||||||
|
|
||||||
main
|
|
|
@ -1,113 +0,0 @@
|
||||||
type :Vec {
|
|
||||||
f32 :x
|
|
||||||
f32 :y
|
|
||||||
f32 :z
|
|
||||||
}
|
|
||||||
|
|
||||||
type :Color {
|
|
||||||
i8 :r
|
|
||||||
i8 :g
|
|
||||||
i8 :b
|
|
||||||
}
|
|
||||||
|
|
||||||
type :Player {
|
|
||||||
str :username
|
|
||||||
Vec :pos
|
|
||||||
Color :color
|
|
||||||
}
|
|
||||||
|
|
||||||
fn :login {
|
|
||||||
Player
|
|
||||||
str
|
|
||||||
|
|
||||||
(* do the login here *)
|
|
||||||
}
|
|
||||||
|
|
||||||
Color :purple {255 255 0}
|
|
||||||
|
|
||||||
fn :main {
|
|
||||||
i32 :screen_width 800
|
|
||||||
i32 :screen_height 450
|
|
||||||
|
|
||||||
split argv
|
|
||||||
str :username
|
|
||||||
str :password
|
|
||||||
|
|
||||||
Player :me {
|
|
||||||
username
|
|
||||||
vec {0.0 1.0 2.0}
|
|
||||||
purple
|
|
||||||
}
|
|
||||||
Player() :players { login me password }
|
|
||||||
|
|
||||||
Camera3D :camera {
|
|
||||||
vec {0.0 1.0 0.0}
|
|
||||||
i32 45.0
|
|
||||||
atom :CAMERA_PERSPECTIVE
|
|
||||||
vec {
|
|
||||||
add acc (:me :pos :x) 10.0
|
|
||||||
add acc (:me :pos :y) 10.0
|
|
||||||
acc (:me :pos :z)
|
|
||||||
}
|
|
||||||
vec {acc 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} {
|
|
||||||
mut (:me :pos :x) add acc me :pos :x 0.2
|
|
||||||
set :player_updated true
|
|
||||||
}
|
|
||||||
|
|
||||||
if {is_key_down :KEY_LEFT} {
|
|
||||||
mut (:me :pos :x) sub acc me :pos :x 0.2
|
|
||||||
set :player_updated true
|
|
||||||
}
|
|
||||||
|
|
||||||
if {is_key_down :KEY_DOWN} {
|
|
||||||
mut (:me :pos :z) add acc me :pos :z 0.2
|
|
||||||
set :player_updated true
|
|
||||||
}
|
|
||||||
|
|
||||||
if {is_key_down :KEY_UP} {
|
|
||||||
mut (:me :pos :z) sub acc me :pos :z 0.2
|
|
||||||
set :player_updated true
|
|
||||||
}
|
|
||||||
|
|
||||||
sync_camera camera me
|
|
||||||
|
|
||||||
if (player_updated) {
|
|
||||||
set :players move me
|
|
||||||
} else {
|
|
||||||
set :players ping me
|
|
||||||
}
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
map :player 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 *)
|
|
||||||
|
|
||||||
set :players logout me
|
|
||||||
close_window (*Close window and OpenGL context *)
|
|
||||||
}
|
|
||||||
|
|
||||||
main
|
|
|
@ -1,116 +0,0 @@
|
||||||
type :Vec {
|
|
||||||
f32 :x,
|
|
||||||
f32 :y,
|
|
||||||
f32 :z,
|
|
||||||
};
|
|
||||||
|
|
||||||
type :Color {
|
|
||||||
i8 :r,
|
|
||||||
i8 :g,
|
|
||||||
i8 :b,
|
|
||||||
};
|
|
||||||
|
|
||||||
type :Player {
|
|
||||||
str :username,
|
|
||||||
Vec :pos,
|
|
||||||
Color :color,
|
|
||||||
};
|
|
||||||
|
|
||||||
fn :login (Player str -> bool) {
|
|
||||||
set p to pop; /* getting the player from the stack */
|
|
||||||
set password to pop; /* get the string from the stack */
|
|
||||||
|
|
||||||
return true; /* return back from function and push value on stack */
|
|
||||||
};
|
|
||||||
|
|
||||||
Color :purple {255 255 0};
|
|
||||||
|
|
||||||
fn :main (i32 str[] -> i32) {
|
|
||||||
set :argc to pop; // to is a noop but makes it more readable
|
|
||||||
set :argv to pop;
|
|
||||||
|
|
||||||
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 { // the brackets are for readablity, the ';' is neccisarry
|
|
||||||
username,
|
|
||||||
vec {0.0 1.0 2.0},
|
|
||||||
purple,
|
|
||||||
};
|
|
||||||
|
|
||||||
set :players to Player[] { login me password; };
|
|
||||||
|
|
||||||
set :camera to Camera3D {
|
|
||||||
vec {0.0 1.0 0.0},
|
|
||||||
i32 45.0,
|
|
||||||
atom :CAMERA_PERSPECTIVE,
|
|
||||||
vec {
|
|
||||||
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 ) {
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
sync_camera camera me;
|
|
||||||
|
|
||||||
if (player_updated) {
|
|
||||||
set :players move me;
|
|
||||||
} else {
|
|
||||||
set :players ping me;
|
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
|
||||||
|
|
||||||
map :player 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 */
|
|
||||||
|
|
||||||
set :players to logout me;
|
|
||||||
close_window; /*Close window and OpenGL context */
|
|
||||||
}
|
|
||||||
|
|
||||||
main;
|
|
|
@ -1,106 +0,0 @@
|
||||||
type Vec {
|
|
||||||
f32 x;
|
|
||||||
f32 y;
|
|
||||||
f32 z;
|
|
||||||
}
|
|
||||||
|
|
||||||
type Color {
|
|
||||||
i8 r;
|
|
||||||
i8 g;
|
|
||||||
i8 b;
|
|
||||||
}
|
|
||||||
|
|
||||||
type Player {
|
|
||||||
str username;
|
|
||||||
Vec pos;
|
|
||||||
Color color;
|
|
||||||
}
|
|
||||||
|
|
||||||
void login(Player p, str password) {
|
|
||||||
(* do the login here *)
|
|
||||||
}
|
|
||||||
|
|
||||||
Color purple(255, 255, 0);
|
|
||||||
|
|
||||||
void main(int argc, str[] argv) {
|
|
||||||
i32 screen_width = 800;
|
|
||||||
i32 screen_height = 450;
|
|
||||||
|
|
||||||
str username = argv[0];
|
|
||||||
str password = argv[1];
|
|
||||||
|
|
||||||
Player me(
|
|
||||||
username,
|
|
||||||
Vec(0.0, 1.0, 2.0),
|
|
||||||
purple
|
|
||||||
);
|
|
||||||
Player[] players = login(me, password);
|
|
||||||
|
|
||||||
Camera3D camera(
|
|
||||||
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
|
|
||||||
);
|
|
||||||
|
|
||||||
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 = me.pos.x + 0.2;
|
|
||||||
player_updated = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is_key_down(:KEY_LEFT)) {
|
|
||||||
me.pos.x = me.pos.x - 0.2;
|
|
||||||
player_updated = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is_key_down(:KEY_DOWN)) {
|
|
||||||
me.pos.z = me.pos.z + 0.2;
|
|
||||||
player_updated = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is_key_down(:KEY_UP)) {
|
|
||||||
me.pos.z = me.pos.z - 0.2;
|
|
||||||
player_updated = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
sync_camera(camera, me);
|
|
||||||
|
|
||||||
if (player_updated) {
|
|
||||||
players = move(me);
|
|
||||||
} else {
|
|
||||||
players = ping(me);
|
|
||||||
}
|
|
||||||
|
|
||||||
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();
|
|
||||||
}
|
|
||||||
|
|
||||||
logout(me);
|
|
||||||
close_window(); (*Close window and OpenGL context *)
|
|
||||||
}
|
|
|
@ -1,108 +0,0 @@
|
||||||
use "raylib.zwl"
|
|
||||||
|
|
||||||
type Vec {
|
|
||||||
f32 x;
|
|
||||||
f32 y;
|
|
||||||
f32 z;
|
|
||||||
}
|
|
||||||
|
|
||||||
type Color {
|
|
||||||
i8 r;
|
|
||||||
i8 g;
|
|
||||||
i8 b;
|
|
||||||
}
|
|
||||||
|
|
||||||
type Player {
|
|
||||||
str username;
|
|
||||||
Vec pos;
|
|
||||||
Color color;
|
|
||||||
}
|
|
||||||
|
|
||||||
void login(Player p, str password) {
|
|
||||||
/* do the login here */
|
|
||||||
}
|
|
||||||
|
|
||||||
Color purple(255, 0, 255);
|
|
||||||
|
|
||||||
void main(int argc, str[] argv) {
|
|
||||||
i32 screen_width = 800;
|
|
||||||
i32 screen_height = 450;
|
|
||||||
|
|
||||||
str username = argv[0];
|
|
||||||
str password = argv[1];
|
|
||||||
|
|
||||||
Player me(
|
|
||||||
username,
|
|
||||||
Vec(0.0, 1.0, 2.0),
|
|
||||||
purple
|
|
||||||
);
|
|
||||||
Player[] players = login(me, password);
|
|
||||||
|
|
||||||
Camera3D camera(
|
|
||||||
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
|
|
||||||
);
|
|
||||||
|
|
||||||
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 = me.pos.x + 0.2;
|
|
||||||
player_updated = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is_key_down(:KEY_LEFT)) {
|
|
||||||
me.pos.x = me.pos.x - 0.2;
|
|
||||||
player_updated = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is_key_down(:KEY_DOWN)) {
|
|
||||||
me.pos.z = me.pos.z + 0.2;
|
|
||||||
player_updated = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is_key_down(:KEY_UP)) {
|
|
||||||
me.pos.z = me.pos.z - 0.2;
|
|
||||||
player_updated = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
sync_camera(camera, me);
|
|
||||||
|
|
||||||
if (player_updated) {
|
|
||||||
players = move(me);
|
|
||||||
} else {
|
|
||||||
players = ping(me);
|
|
||||||
}
|
|
||||||
|
|
||||||
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();
|
|
||||||
}
|
|
||||||
|
|
||||||
logout(me);
|
|
||||||
close_window(); // Close window and OpenGL context
|
|
||||||
}
|
|
|
@ -1,104 +0,0 @@
|
||||||
type Vec {
|
|
||||||
f32[x, y, z];
|
|
||||||
}
|
|
||||||
|
|
||||||
type Color {
|
|
||||||
i8[r, g, b];
|
|
||||||
}
|
|
||||||
|
|
||||||
type Player {
|
|
||||||
str username;
|
|
||||||
Vec pos;
|
|
||||||
Color color;
|
|
||||||
}
|
|
||||||
|
|
||||||
void login(Player p, str password) {
|
|
||||||
(* do the login here *)
|
|
||||||
}
|
|
||||||
|
|
||||||
(* Color purple = [255, 255, 0]; *)
|
|
||||||
|
|
||||||
Color purple(r=255, g=255, b=0);
|
|
||||||
|
|
||||||
void main(int argc, str[] argv) {
|
|
||||||
i32 screen_width = 800;
|
|
||||||
i32 screen_height = 450;
|
|
||||||
|
|
||||||
str username = argv[0];
|
|
||||||
str password = argv[1];
|
|
||||||
|
|
||||||
Player me(
|
|
||||||
username=username,
|
|
||||||
pos=[0.0, 1.0, 2.0],
|
|
||||||
color=purple
|
|
||||||
);
|
|
||||||
Player[] players = login(me, password);
|
|
||||||
|
|
||||||
Camera3D camera(
|
|
||||||
up=[0.0, 1.0, 0.0]
|
|
||||||
fov=45.0,
|
|
||||||
mode=:CAMERA_PERSPECTIVE,
|
|
||||||
pos=[
|
|
||||||
me.pos.x + 10.0,
|
|
||||||
me.pos.y + 10.0,
|
|
||||||
me.pos.z
|
|
||||||
]
|
|
||||||
point_at=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 = me.pos.x + 0.2;
|
|
||||||
player_updated = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is_key_down(:KEY_LEFT)) {
|
|
||||||
me.pos.x = me.pos.x - 0.2;
|
|
||||||
player_updated = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is_key_down(:KEY_DOWN)) {
|
|
||||||
me.pos.z = me.pos.z + 0.2;
|
|
||||||
player_updated = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is_key_down(:KEY_UP)) {
|
|
||||||
me.pos.z = me.pos.z - 0.2;
|
|
||||||
player_updated = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
sync_camera(camera, me);
|
|
||||||
|
|
||||||
if (player_updated) {
|
|
||||||
players = move(me);
|
|
||||||
} else {
|
|
||||||
players = ping(me);
|
|
||||||
}
|
|
||||||
|
|
||||||
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();
|
|
||||||
}
|
|
||||||
|
|
||||||
logout(me);
|
|
||||||
close_window(); (*Close window and OpenGL context *)
|
|
||||||
}
|
|
|
@ -1,43 +0,0 @@
|
||||||
void build(ProjectConfig c) {
|
|
||||||
c.name("MMO Project");
|
|
||||||
|
|
||||||
c.client("src/", {
|
|
||||||
"c":{
|
|
||||||
"ffi": [
|
|
||||||
{
|
|
||||||
"name":"raylib",
|
|
||||||
"library":"$RAYLIB_PATH/libraylib.a",
|
|
||||||
"path":"",
|
|
||||||
"build": "make build",
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"out": "client/"
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
c.server("src/",{
|
|
||||||
"javascript":{
|
|
||||||
"out":"server/"
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
c.database("src/",{
|
|
||||||
"sqlite":{
|
|
||||||
"out":"db/"
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
c.common("src/",{
|
|
||||||
"c":{
|
|
||||||
"out":"server/"
|
|
||||||
},
|
|
||||||
"javascript":{
|
|
||||||
"out":"client/"
|
|
||||||
},
|
|
||||||
"sqlite":{
|
|
||||||
"out":"db/"
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
c.build();
|
|
||||||
}
|
|
|
@ -1,92 +0,0 @@
|
||||||
use "common.ztl"
|
|
||||||
|
|
||||||
Player[] login(tunnel s, Player p, str password) {
|
|
||||||
s.auth(p.username, password);
|
|
||||||
s.
|
|
||||||
}
|
|
||||||
|
|
||||||
void main(int argc, str[] argv) {
|
|
||||||
i32 screen_width = 800;
|
|
||||||
i32 screen_height = 450;
|
|
||||||
|
|
||||||
str username = argv[0];
|
|
||||||
str password = argv[1];
|
|
||||||
|
|
||||||
tunnel s();
|
|
||||||
s.attach("localhost:25565");
|
|
||||||
|
|
||||||
Player me(
|
|
||||||
username,
|
|
||||||
Vec(0.0, 1.0, 2.0),
|
|
||||||
purple
|
|
||||||
);
|
|
||||||
Player[] players = login(s, me, password);
|
|
||||||
|
|
||||||
Camera3D camera(
|
|
||||||
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
|
|
||||||
);
|
|
||||||
|
|
||||||
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 = me.pos.x + 0.2;
|
|
||||||
player_updated = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is_key_down(:KEY_LEFT)) {
|
|
||||||
me.pos.x = me.pos.x - 0.2;
|
|
||||||
player_updated = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is_key_down(:KEY_DOWN)) {
|
|
||||||
me.pos.z = me.pos.z + 0.2;
|
|
||||||
player_updated = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is_key_down(:KEY_UP)) {
|
|
||||||
me.pos.z = me.pos.z - 0.2;
|
|
||||||
player_updated = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
sync_camera(s, me, camera);
|
|
||||||
|
|
||||||
if (player_updated) {
|
|
||||||
players = move(s, me);
|
|
||||||
} else {
|
|
||||||
players = ping(s, me);
|
|
||||||
}
|
|
||||||
|
|
||||||
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();
|
|
||||||
}
|
|
||||||
|
|
||||||
logout(me);
|
|
||||||
close_window(); (* Close window and OpenGL context *)
|
|
||||||
}
|
|
|
@ -1,19 +0,0 @@
|
||||||
type Vec {
|
|
||||||
f32 x;
|
|
||||||
f32 y;
|
|
||||||
f32 z;
|
|
||||||
}
|
|
||||||
|
|
||||||
type Color {
|
|
||||||
i8 r;
|
|
||||||
i8 g;
|
|
||||||
i8 b;
|
|
||||||
}
|
|
||||||
|
|
||||||
type Player {
|
|
||||||
str username;
|
|
||||||
Vec pos;
|
|
||||||
Color color;
|
|
||||||
}
|
|
||||||
|
|
||||||
Color purple(255, 255, 0);
|
|
|
@ -1,59 +0,0 @@
|
||||||
use "common.ztl"
|
|
||||||
|
|
||||||
void main(int argc, str[] argv) {
|
|
||||||
tunnel s();
|
|
||||||
s.host("0.0.0.0:25565",
|
|
||||||
version,
|
|
||||||
auth,
|
|
||||||
error,
|
|
||||||
flush,
|
|
||||||
attach,
|
|
||||||
walk,
|
|
||||||
open,
|
|
||||||
create,
|
|
||||||
read,
|
|
||||||
write,
|
|
||||||
clunk,
|
|
||||||
remove,
|
|
||||||
stat);
|
|
||||||
}
|
|
||||||
|
|
||||||
msg version(msg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
msg auth(msg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
msg error(msg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
msg flush(msg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
msg attach(msg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
msg walk(msg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
msg open(msg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
msg create(msg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
msg read(msg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
msg write(msg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
msg clunk(msg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
msg remove(msg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
msg stat(msg m) {
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,47 +0,0 @@
|
||||||
fn build(c: ProjectConfig) {
|
|
||||||
c.name("MMO Project");
|
|
||||||
|
|
||||||
c.client([
|
|
||||||
LanguageSettings {
|
|
||||||
lang: "c",
|
|
||||||
file: "src/client.ztl",
|
|
||||||
outpath: "client/",
|
|
||||||
ffi: [
|
|
||||||
FFISetting {
|
|
||||||
"name":"raylib",
|
|
||||||
"library":"$RAYLIB_PATH/libraylib.a",
|
|
||||||
"path":"",
|
|
||||||
"build": "make build",
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
])
|
|
||||||
|
|
||||||
c.server([
|
|
||||||
LanguageSettings {
|
|
||||||
lang: "javascript",
|
|
||||||
file: "src/server.ztl",
|
|
||||||
outpath: "server/"
|
|
||||||
}
|
|
||||||
]);
|
|
||||||
|
|
||||||
c.common([
|
|
||||||
LanguageSettings {
|
|
||||||
lang: "c",
|
|
||||||
file: "src/common.ztl",
|
|
||||||
outpath: "client/"
|
|
||||||
},
|
|
||||||
LanguageSettings {
|
|
||||||
lang: "javascript",
|
|
||||||
file: "src/common.ztl",
|
|
||||||
outpath: "server/"
|
|
||||||
},
|
|
||||||
LanguageSettings {
|
|
||||||
lang: "sqlite",
|
|
||||||
file: "src/common.ztl",
|
|
||||||
outpath: "db/"
|
|
||||||
}
|
|
||||||
]);
|
|
||||||
|
|
||||||
c.build();
|
|
||||||
}
|
|
|
@ -1,93 +0,0 @@
|
||||||
use "common.ztl"
|
|
||||||
|
|
||||||
fn login(s: 9p, p: Player, password: str): []Player {
|
|
||||||
s.auth(p.username, password)
|
|
||||||
return s.read("players")
|
|
||||||
}
|
|
||||||
|
|
||||||
fn main(argc: i32, argv: []str): i32 {
|
|
||||||
const screen_width = 800;
|
|
||||||
const screen_height = 450;
|
|
||||||
|
|
||||||
let username = argv[0];
|
|
||||||
let password = argv[1];
|
|
||||||
|
|
||||||
let s = tunnel("localhost:25565");
|
|
||||||
s.attach();
|
|
||||||
|
|
||||||
let me = Player(
|
|
||||||
username,
|
|
||||||
Vec(0.0, 1.0, 2.0),
|
|
||||||
purple
|
|
||||||
);
|
|
||||||
let players = login(s, me, password);
|
|
||||||
|
|
||||||
let camera = 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
|
|
||||||
);
|
|
||||||
|
|
||||||
init_window("zwl client : raylib", screen_width, screen_height);
|
|
||||||
set_target_fps(60);
|
|
||||||
|
|
||||||
(* Main game loop *)
|
|
||||||
while ( not window_should_close() ) {
|
|
||||||
let player_updated = false;
|
|
||||||
|
|
||||||
if (is_key_down(KEY_RIGHT)) {
|
|
||||||
me.pos.x = me.pos.x + 0.2;
|
|
||||||
player_updated = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is_key_down(KEY_LEFT)) {
|
|
||||||
me.pos.x = me.pos.x - 0.2;
|
|
||||||
player_updated = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is_key_down(KEY_DOWN)) {
|
|
||||||
me.pos.z = me.pos.z + 0.2;
|
|
||||||
player_updated = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is_key_down(KEY_UP)) {
|
|
||||||
me.pos.z = me.pos.z - 0.2;
|
|
||||||
player_updated = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
sync_camera(s, me, camera);
|
|
||||||
|
|
||||||
if (player_updated) {
|
|
||||||
players = move(s, me);
|
|
||||||
} else {
|
|
||||||
players = ping(s, me);
|
|
||||||
}
|
|
||||||
|
|
||||||
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();
|
|
||||||
}
|
|
||||||
|
|
||||||
logout(me);
|
|
||||||
close_window(); (* Close window and OpenGL context *)
|
|
||||||
}
|
|
|
@ -1,19 +0,0 @@
|
||||||
type Vec {
|
|
||||||
x: f32,
|
|
||||||
y: f32,
|
|
||||||
z: f32,
|
|
||||||
}
|
|
||||||
|
|
||||||
type Color {
|
|
||||||
r: u8,
|
|
||||||
g: u8,
|
|
||||||
b: u8,
|
|
||||||
}
|
|
||||||
|
|
||||||
type Player {
|
|
||||||
username: str,
|
|
||||||
pos: Vec,
|
|
||||||
color: Color,
|
|
||||||
}
|
|
||||||
|
|
||||||
const purple = Color{255, 255, 0};
|
|
|
@ -1,59 +0,0 @@
|
||||||
use "common.ztl"
|
|
||||||
|
|
||||||
fn main(argc: i32, argv: []str): i32 {
|
|
||||||
let s = tunnel();
|
|
||||||
s.host("0.0.0.0:25565",
|
|
||||||
version,
|
|
||||||
auth,
|
|
||||||
error,
|
|
||||||
flush,
|
|
||||||
attach,
|
|
||||||
walk,
|
|
||||||
open,
|
|
||||||
create,
|
|
||||||
read,
|
|
||||||
write,
|
|
||||||
clunk,
|
|
||||||
remove,
|
|
||||||
stat);
|
|
||||||
}
|
|
||||||
|
|
||||||
fn version(m : 9pmsg) {
|
|
||||||
|
|
||||||
}
|
|
||||||
fn auth(m : 9pmsg) {
|
|
||||||
|
|
||||||
}
|
|
||||||
fn error(m : 9pmsg) {
|
|
||||||
|
|
||||||
}
|
|
||||||
fn flush(m : 9pmsg) {
|
|
||||||
|
|
||||||
}
|
|
||||||
fn attach(m : 9pmsg) {
|
|
||||||
|
|
||||||
}
|
|
||||||
fn walk(m : 9pmsg) {
|
|
||||||
|
|
||||||
}
|
|
||||||
fn open(m : 9pmsg) {
|
|
||||||
|
|
||||||
}
|
|
||||||
fn create(m : 9pmsg) {
|
|
||||||
|
|
||||||
}
|
|
||||||
fn read(m : 9pmsg) {
|
|
||||||
|
|
||||||
}
|
|
||||||
fn write(m : 9pmsg) {
|
|
||||||
|
|
||||||
}
|
|
||||||
fn clunk(m : 9pmsg) {
|
|
||||||
|
|
||||||
}
|
|
||||||
fn remove(m : 9pmsg) {
|
|
||||||
|
|
||||||
}
|
|
||||||
fn stat(m : 9pmsg) {
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,69 +0,0 @@
|
||||||
-- mod-version:1
|
|
||||||
local syntax = require "core.syntax"
|
|
||||||
|
|
||||||
syntax.add {
|
|
||||||
name = "Zongor's Transpiler Language",
|
|
||||||
files = { "%.ztl$" },
|
|
||||||
comment = "//",
|
|
||||||
block_comment = { '/*', '*/' },
|
|
||||||
patterns = {
|
|
||||||
{ pattern = { "/%*", "%*/" }, type = "comment" },
|
|
||||||
{ pattern = "//.-\n", type = "comment" },
|
|
||||||
{ pattern = "\\\\.-\n", type = "string" },
|
|
||||||
{ pattern = { '"', '"', '\\' }, type = "string" },
|
|
||||||
{ pattern = { "'", "'", '\\' }, type = "string" },
|
|
||||||
{ pattern = "[iuv][%d_]+", type = "keyword2" },
|
|
||||||
{ pattern = "[9][%w_]*", type = "keyword2" },
|
|
||||||
{ pattern = "%d[%d_]*%.[%d_]*", type = "number" },
|
|
||||||
{ pattern = "%d[%d_]*", type = "number" },
|
|
||||||
{ pattern = "[%+%-=/%*%^%%<>!~|&%.%?]", type = "operator" },
|
|
||||||
{ pattern = "[%a_][%w_]*()%s*%(", type = {"function", "normal"} },
|
|
||||||
{ pattern = "[A-Z][%w_]*", type = "keyword2" },
|
|
||||||
{ pattern = "[%a_][%w_]*", type = "symbol" },
|
|
||||||
{ pattern = "@()[%a_][%w_]*", type = {"operator", "function"} },
|
|
||||||
{ regex = [[(?:[^"\\]|\\.)*()\s*:]], type = { "number" } }, -- key
|
|
||||||
},
|
|
||||||
symbols = {
|
|
||||||
["continue"] = "keyword",
|
|
||||||
["break"] = "keyword",
|
|
||||||
["switch"] = "keyword",
|
|
||||||
["for"] = "keyword",
|
|
||||||
["in"] = "keyword",
|
|
||||||
["while"] = "keyword",
|
|
||||||
["const"] = "keyword",
|
|
||||||
["test"] = "keyword",
|
|
||||||
["export"] = "keyword",
|
|
||||||
["if"] = "keyword",
|
|
||||||
["else"] = "keyword",
|
|
||||||
["return"] = "keyword",
|
|
||||||
["and"] = "keyword",
|
|
||||||
["or"] = "keyword",
|
|
||||||
["not"] = "keyword",
|
|
||||||
["interface"] = "keyword",
|
|
||||||
["struct"] = "keyword",
|
|
||||||
["enum"] = "keyword",
|
|
||||||
["union"] = "keyword",
|
|
||||||
["inline"] = "keyword",
|
|
||||||
["use"] = "keyword",
|
|
||||||
|
|
||||||
-- types
|
|
||||||
["str"] = "keyword2",
|
|
||||||
["f16"] = "keyword2",
|
|
||||||
["f32"] = "keyword2",
|
|
||||||
["f64"] = "keyword2",
|
|
||||||
["f128"] = "keyword2",
|
|
||||||
["err"] = "keyword2",
|
|
||||||
["rgb"] = "keyword2",
|
|
||||||
["hsv"] = "keyword2",
|
|
||||||
["rgba"] = "keyword2",
|
|
||||||
|
|
||||||
["void"] = "keyword2",
|
|
||||||
["bool"] = "keyword2",
|
|
||||||
|
|
||||||
["true"] = "literal",
|
|
||||||
["false"] = "literal",
|
|
||||||
["null"] = "literal",
|
|
||||||
["undefined"] = "literal",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,47 +0,0 @@
|
||||||
void build (ProjectConfig c) {
|
|
||||||
c.name("MMO Project");
|
|
||||||
|
|
||||||
c.client([
|
|
||||||
LanguageSettings {
|
|
||||||
lang: "c",
|
|
||||||
file: "src/client.ztl",
|
|
||||||
outpath: "client/",
|
|
||||||
ffi: [
|
|
||||||
FFISetting {
|
|
||||||
name:"raylib",
|
|
||||||
library:"$RAYLIB_PATH/libraylib.a",
|
|
||||||
path:"./",
|
|
||||||
build: "make build",
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
])
|
|
||||||
|
|
||||||
c.server([
|
|
||||||
{
|
|
||||||
lang: "javascript",
|
|
||||||
file: "src/server.ztl",
|
|
||||||
outpath: "server/"
|
|
||||||
}
|
|
||||||
]);
|
|
||||||
|
|
||||||
c.common([
|
|
||||||
LanguageSettings {
|
|
||||||
"c",
|
|
||||||
"src/common.ztl",
|
|
||||||
"client/"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
lang: "javascript",
|
|
||||||
file: "src/common.ztl",
|
|
||||||
outpath: "server/"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
lang: "sqlite",
|
|
||||||
file: "src/common.ztl",
|
|
||||||
outpath: "db/"
|
|
||||||
}
|
|
||||||
]);
|
|
||||||
|
|
||||||
c.build();
|
|
||||||
}
|
|
|
@ -1,91 +0,0 @@
|
||||||
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;
|
|
||||||
};
|
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
struct Player {
|
|
||||||
str username,
|
|
||||||
v3 pos,
|
|
||||||
rgb color,
|
|
||||||
};
|
|
||||||
|
|
||||||
const rgb purple = {255 255 0};
|
|
|
@ -1,21 +0,0 @@
|
||||||
use "common.ztl"
|
|
||||||
|
|
||||||
i32 main (i32 argc, []str argv) {
|
|
||||||
9ps s = {
|
|
||||||
version: "9P2000",
|
|
||||||
auth:
|
|
||||||
error:
|
|
||||||
flush:
|
|
||||||
attach:
|
|
||||||
walk:
|
|
||||||
open:
|
|
||||||
create:
|
|
||||||
read:
|
|
||||||
write:
|
|
||||||
clunk:
|
|
||||||
remove:
|
|
||||||
stat:
|
|
||||||
};
|
|
||||||
s.host("0.0.0.0:25565");
|
|
||||||
};
|
|
||||||
|
|
|
@ -1,45 +0,0 @@
|
||||||
--mod-version:3
|
|
||||||
local syntax = require 'core.syntax'
|
|
||||||
|
|
||||||
syntax.add {
|
|
||||||
name = "Zongor's Transpiler Language",
|
|
||||||
files = { "%.ztl$" },
|
|
||||||
block_comment = { '/*', '*/' },
|
|
||||||
patterns = {
|
|
||||||
{ pattern = { "/%*", "%*/" }, type = "comment" },
|
|
||||||
{ pattern = { '"', '"', '\\' }, type = "string" },
|
|
||||||
{ pattern = { "'", "'", '\\' }, type = "string" },
|
|
||||||
{ pattern = ";", type = "operator" },
|
|
||||||
{ pattern = "[%a_][%w_]*()%s*%(", type = {"function", "normal"} },
|
|
||||||
{ pattern = "[viu][%d_]+", type = "keyword2" },
|
|
||||||
{ pattern = "[A-Z][%w_]*", type = "keyword2" },
|
|
||||||
{ pattern = "[9][%w_]*", type = "keyword2" },
|
|
||||||
{ pattern = ":[%w_]*", type = "literal" },
|
|
||||||
{ pattern = "-?%.?%d+f?", type = "number" },
|
|
||||||
},
|
|
||||||
symbols = {
|
|
||||||
["fn"] = "keyword",
|
|
||||||
["to"] = "keyword",
|
|
||||||
["in"] = "keyword",
|
|
||||||
["use"] = "keyword",
|
|
||||||
["set"] = "keyword",
|
|
||||||
["if"] = "keyword",
|
|
||||||
["else"] = "keyword",
|
|
||||||
["for"] = "keyword",
|
|
||||||
["while"] = "keyword",
|
|
||||||
["push"] = "keyword",
|
|
||||||
["pop"] = "keyword",
|
|
||||||
["return"] = "keyword",
|
|
||||||
["immutable"] = "keyword",
|
|
||||||
["type"] = "keyword",
|
|
||||||
|
|
||||||
["char"] = "keyword2",
|
|
||||||
["str"] = "keyword2",
|
|
||||||
["f16"] = "keyword2",
|
|
||||||
["f32"] = "keyword2",
|
|
||||||
["f64"] = "keyword2",
|
|
||||||
["f128"] = "keyword2",
|
|
||||||
|
|
||||||
["true"] = "literal",
|
|
||||||
["false"] = "literal",
|
|
||||||
}}
|
|
|
@ -1,49 +0,0 @@
|
||||||
fn :build (ProjectConfig) {
|
|
||||||
set c to pop;
|
|
||||||
|
|
||||||
c.name("MMO Project");
|
|
||||||
|
|
||||||
c.client([
|
|
||||||
LanguageSettings {
|
|
||||||
"c", /* lang */
|
|
||||||
"src/client.ztl", /* file */
|
|
||||||
"client/", /* out path */
|
|
||||||
[ /* ffi */
|
|
||||||
FFISetting {
|
|
||||||
"raylib",
|
|
||||||
"$RAYLIB_PATH/libraylib.a",
|
|
||||||
"./",
|
|
||||||
"make build",
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
])
|
|
||||||
|
|
||||||
c.server([
|
|
||||||
LanguageSettings {
|
|
||||||
"javascript",
|
|
||||||
"src/server.ztl",
|
|
||||||
"server/"
|
|
||||||
}
|
|
||||||
]);
|
|
||||||
|
|
||||||
c.common([
|
|
||||||
LanguageSettings {
|
|
||||||
"c",
|
|
||||||
"src/common.ztl",
|
|
||||||
"client/"
|
|
||||||
},
|
|
||||||
LanguageSettings {
|
|
||||||
"javascript",
|
|
||||||
"src/common.ztl",
|
|
||||||
"server/"
|
|
||||||
},
|
|
||||||
LanguageSettings {
|
|
||||||
"sqlite",
|
|
||||||
"src/common.ztl",
|
|
||||||
"db/"
|
|
||||||
}
|
|
||||||
]);
|
|
||||||
|
|
||||||
c.build();
|
|
||||||
}
|
|
|
@ -1,94 +0,0 @@
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
set :Vec to type {
|
|
||||||
f32 :x,
|
|
||||||
f32 :y,
|
|
||||||
f32 :z,
|
|
||||||
};
|
|
||||||
|
|
||||||
set :Color to type {
|
|
||||||
i8 :r,
|
|
||||||
i8 :g,
|
|
||||||
i8 :b,
|
|
||||||
};
|
|
||||||
|
|
||||||
set :Player to type {
|
|
||||||
str :username,
|
|
||||||
Vec :pos,
|
|
||||||
Color :color,
|
|
||||||
};
|
|
||||||
|
|
||||||
set immutable :purple to Color {255 255 0};
|
|
|
@ -1,73 +0,0 @@
|
||||||
use "common.ztl"
|
|
||||||
|
|
||||||
fn :main (i32 :argc []str :argv) i32 {
|
|
||||||
set s to 9p {
|
|
||||||
version,
|
|
||||||
auth,
|
|
||||||
error,
|
|
||||||
flush,
|
|
||||||
attach,
|
|
||||||
walk,
|
|
||||||
open,
|
|
||||||
create,
|
|
||||||
read,
|
|
||||||
write,
|
|
||||||
clunk,
|
|
||||||
remove,
|
|
||||||
stat,
|
|
||||||
};
|
|
||||||
|
|
||||||
s.host("0.0.0.0:25565")
|
|
||||||
};
|
|
||||||
|
|
||||||
fn :version(9pmsg :m) {
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
fn :auth(9pmsg :m) {
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
fn :error(9pmsg :m) {
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
fn :flush(9pmsg :m) {
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
fn :attach(9pmsg :m) {
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
fn :walk(9pmsg :m) {
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
fn :open(9pmsg :m) {
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
fn :create(9pmsg :m) {
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
fn :read(9pmsg :m) {
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
fn :write(9pmsg :m) {
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
fn :clunk(9pmsg :m) {
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
fn :remove(9pmsg :m) {
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
fn :stat(9pmsg :m) {
|
|
||||||
|
|
||||||
};
|
|
|
@ -1,64 +0,0 @@
|
||||||
--mod-version:3
|
|
||||||
local syntax = require 'core.syntax'
|
|
||||||
|
|
||||||
syntax.add {
|
|
||||||
name = "Zongor's Transpiler Language",
|
|
||||||
files = { "%.ztl$" },
|
|
||||||
comment = "!",
|
|
||||||
block_comment = { '!!', '!!' },
|
|
||||||
patterns = {
|
|
||||||
{ pattern = { "!!", "!!" }, type = "comment" }, -- tested ok
|
|
||||||
{ pattern = "!.*", type = "comment" },
|
|
||||||
{ pattern = { '"', '"', '\\' }, type = "string" },
|
|
||||||
{ pattern = { "'", "'", '\\' }, type = "string" },
|
|
||||||
{ pattern = ";", type = "operator" },
|
|
||||||
{ pattern = "[%a_][%w_]*()%s*%(", type = {"function", "normal"} },
|
|
||||||
{ pattern = "[viu][%d_]+", type = "keyword2" },
|
|
||||||
{ pattern = "[A-Z][%w_]*", type = "keyword2" },
|
|
||||||
{ pattern = "[9][%w_]*", type = "keyword2" },
|
|
||||||
{ pattern = "-?%.?%d+f?", type = "number" },
|
|
||||||
},
|
|
||||||
symbols = {
|
|
||||||
["fn"] = "keyword",
|
|
||||||
["to"] = "keyword",
|
|
||||||
["in"] = "keyword",
|
|
||||||
["is"] = "keyword",
|
|
||||||
["as"] = "keyword",
|
|
||||||
["use"] = "keyword",
|
|
||||||
["set"] = "keyword",
|
|
||||||
["if"] = "keyword",
|
|
||||||
["else"] = "keyword",
|
|
||||||
["for"] = "keyword",
|
|
||||||
["loop"] = "keyword",
|
|
||||||
["while"] = "keyword",
|
|
||||||
["push"] = "keyword",
|
|
||||||
["pop"] = "keyword",
|
|
||||||
["return"] = "keyword",
|
|
||||||
["const"] = "keyword",
|
|
||||||
["type"] = "keyword",
|
|
||||||
["this"] = "keyword",
|
|
||||||
|
|
||||||
["eq"] = "keyword",
|
|
||||||
["ne"] = "keyword",
|
|
||||||
["mod"] = "keyword",
|
|
||||||
["not"] = "keyword",
|
|
||||||
["and"] = "keyword",
|
|
||||||
["or"] = "keyword",
|
|
||||||
["xor"] = "keyword",
|
|
||||||
["band"] = "keyword",
|
|
||||||
["bor"] = "keyword",
|
|
||||||
["bxor"] = "keyword",
|
|
||||||
["srl"] = "keyword",
|
|
||||||
["sll"] = "keyword",
|
|
||||||
|
|
||||||
["char"] = "keyword2",
|
|
||||||
["str"] = "keyword2",
|
|
||||||
["f16"] = "keyword2",
|
|
||||||
["f32"] = "keyword2",
|
|
||||||
["f64"] = "keyword2",
|
|
||||||
["f128"] = "keyword2",
|
|
||||||
|
|
||||||
["true"] = "literal",
|
|
||||||
["false"] = "literal",
|
|
||||||
},
|
|
||||||
}
|
|
|
@ -1,48 +0,0 @@
|
||||||
fn build(ProjectConfig c) {
|
|
||||||
c.name("MMO Project");
|
|
||||||
c.mode("dev");
|
|
||||||
|
|
||||||
c.client([
|
|
||||||
LanguageSettings(
|
|
||||||
"c", ! lang
|
|
||||||
"src/client.ztl", ! file
|
|
||||||
"client/", ! out path
|
|
||||||
[ ! ffi settings
|
|
||||||
FFISetting {
|
|
||||||
"raylib", ! libary name
|
|
||||||
"$RAYLIB_PATH/libraylib.a", ! path
|
|
||||||
"./", ! local path
|
|
||||||
"make build", ! build command
|
|
||||||
}
|
|
||||||
]
|
|
||||||
)
|
|
||||||
]);
|
|
||||||
|
|
||||||
c.server([
|
|
||||||
LanguageSettings(
|
|
||||||
"javascript",
|
|
||||||
"src/server.ztl",
|
|
||||||
"server/"
|
|
||||||
)
|
|
||||||
]);
|
|
||||||
|
|
||||||
c.common([
|
|
||||||
LanguageSettings(
|
|
||||||
"c",
|
|
||||||
"src/common.ztl",
|
|
||||||
"client/"
|
|
||||||
},
|
|
||||||
LanguageSettings(
|
|
||||||
"javascript",
|
|
||||||
"src/common.ztl",
|
|
||||||
"server/"
|
|
||||||
),
|
|
||||||
LanguageSettings(
|
|
||||||
"sqlite",
|
|
||||||
"src/common.ztl",
|
|
||||||
"db/"
|
|
||||||
)
|
|
||||||
]);
|
|
||||||
|
|
||||||
c.build();
|
|
||||||
}
|
|
|
@ -1,93 +0,0 @@
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,37 +0,0 @@
|
||||||
type Vec {
|
|
||||||
init(f32 x, f32 y, f32 z) {
|
|
||||||
set this.x to x;
|
|
||||||
set this.y to y;
|
|
||||||
set this.z to z;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type Color {
|
|
||||||
init(i8 r, i8 g, i8 b) {
|
|
||||||
set this.r to r;
|
|
||||||
set this.g to g;
|
|
||||||
set this.b to b;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type Player {
|
|
||||||
init (9p server, str username, Vec pos, Color color) {
|
|
||||||
set this.server to server;
|
|
||||||
set this.username to username;
|
|
||||||
set this.pos to pos;
|
|
||||||
set this.color to color;
|
|
||||||
}
|
|
||||||
|
|
||||||
login (str password) Player[] {
|
|
||||||
this.server.auth(this.username, password);
|
|
||||||
set this.players to server.open("players");
|
|
||||||
return players.read();
|
|
||||||
}
|
|
||||||
|
|
||||||
logout() {
|
|
||||||
this.players.flush();
|
|
||||||
this.server.clunk();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const purple is Color(255, 255, 0);
|
|
|
@ -1,75 +0,0 @@
|
||||||
use "common.ztl";
|
|
||||||
|
|
||||||
fn main (i32 argc, str[] argv) i32 {
|
|
||||||
set s to 9p (
|
|
||||||
version,
|
|
||||||
auth,
|
|
||||||
error,
|
|
||||||
flush,
|
|
||||||
attach,
|
|
||||||
walk,
|
|
||||||
open,
|
|
||||||
create,
|
|
||||||
read,
|
|
||||||
write,
|
|
||||||
clunk,
|
|
||||||
remove,
|
|
||||||
stat,
|
|
||||||
);
|
|
||||||
|
|
||||||
s.host("0.0.0.0:25565");
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
fn version(9pmsg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fn auth(9pmsg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fn error(9pmsg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fn flush(9pmsg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fn attach(9pmsg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fn walk(9pmsg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fn open(9pmsg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fn create(9pmsg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fn read(9pmsg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fn write(9pmsg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fn clunk(9pmsg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fn remove(9pmsg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fn stat(9pmsg m) {
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,64 +0,0 @@
|
||||||
--mod-version:3
|
|
||||||
local syntax = require 'core.syntax'
|
|
||||||
|
|
||||||
syntax.add {
|
|
||||||
name = "Zongor's Transpiler Language",
|
|
||||||
files = { "%.ztl$" },
|
|
||||||
comment = "!",
|
|
||||||
block_comment = { '!!', '!!' },
|
|
||||||
patterns = {
|
|
||||||
{ pattern = { "!!", "!!" }, type = "comment" }, -- tested ok
|
|
||||||
{ pattern = "!.*", type = "comment" },
|
|
||||||
{ pattern = { '"', '"', '\\' }, type = "string" },
|
|
||||||
{ pattern = { "'", "'", '\\' }, type = "string" },
|
|
||||||
{ pattern = ";", type = "operator" },
|
|
||||||
{ pattern = "[%a_][%w_]*()%s*%(", type = {"function", "normal"} },
|
|
||||||
{ pattern = "[viu][%d_]+", type = "keyword2" },
|
|
||||||
{ pattern = "[A-Z][%w_]*", type = "keyword2" },
|
|
||||||
{ pattern = "[9][%w_]*", type = "keyword2" },
|
|
||||||
{ pattern = "-?%.?%d+f?", type = "number" },
|
|
||||||
},
|
|
||||||
symbols = {
|
|
||||||
["fn"] = "keyword",
|
|
||||||
["to"] = "keyword",
|
|
||||||
["in"] = "keyword",
|
|
||||||
["is"] = "keyword",
|
|
||||||
["as"] = "keyword",
|
|
||||||
["use"] = "keyword",
|
|
||||||
["set"] = "keyword",
|
|
||||||
["if"] = "keyword",
|
|
||||||
["else"] = "keyword",
|
|
||||||
["for"] = "keyword",
|
|
||||||
["loop"] = "keyword",
|
|
||||||
["while"] = "keyword",
|
|
||||||
["push"] = "keyword",
|
|
||||||
["pop"] = "keyword",
|
|
||||||
["return"] = "keyword",
|
|
||||||
["const"] = "keyword",
|
|
||||||
["type"] = "keyword",
|
|
||||||
["this"] = "keyword",
|
|
||||||
|
|
||||||
["eq"] = "keyword",
|
|
||||||
["ne"] = "keyword",
|
|
||||||
["mod"] = "keyword",
|
|
||||||
["not"] = "keyword",
|
|
||||||
["and"] = "keyword",
|
|
||||||
["or"] = "keyword",
|
|
||||||
["xor"] = "keyword",
|
|
||||||
["band"] = "keyword",
|
|
||||||
["bor"] = "keyword",
|
|
||||||
["bxor"] = "keyword",
|
|
||||||
["srl"] = "keyword",
|
|
||||||
["sll"] = "keyword",
|
|
||||||
|
|
||||||
["char"] = "keyword2",
|
|
||||||
["str"] = "keyword2",
|
|
||||||
["f16"] = "keyword2",
|
|
||||||
["f32"] = "keyword2",
|
|
||||||
["f64"] = "keyword2",
|
|
||||||
["f128"] = "keyword2",
|
|
||||||
|
|
||||||
["true"] = "literal",
|
|
||||||
["false"] = "literal",
|
|
||||||
},
|
|
||||||
}
|
|
|
@ -1,48 +0,0 @@
|
||||||
fn build(ProjectConfig c) {
|
|
||||||
c.name("MMO Project");
|
|
||||||
c.mode("dev");
|
|
||||||
|
|
||||||
c.client([
|
|
||||||
LanguageSettings(
|
|
||||||
"c", ! lang
|
|
||||||
"src/client.ztl", ! file
|
|
||||||
"client/", ! out path
|
|
||||||
[ ! ffi settings
|
|
||||||
FFISetting (
|
|
||||||
"raylib", ! libary name
|
|
||||||
"$RAYLIB_PATH/libraylib.a", ! path
|
|
||||||
"./", ! local path
|
|
||||||
"make build", ! build command
|
|
||||||
)
|
|
||||||
]
|
|
||||||
)
|
|
||||||
]);
|
|
||||||
|
|
||||||
c.server([
|
|
||||||
LanguageSettings(
|
|
||||||
"javascript",
|
|
||||||
"src/server.ztl",
|
|
||||||
"server/"
|
|
||||||
)
|
|
||||||
]);
|
|
||||||
|
|
||||||
c.common([
|
|
||||||
LanguageSettings(
|
|
||||||
"c",
|
|
||||||
"src/common.ztl",
|
|
||||||
"client/"
|
|
||||||
),
|
|
||||||
LanguageSettings(
|
|
||||||
"javascript",
|
|
||||||
"src/common.ztl",
|
|
||||||
"server/"
|
|
||||||
),
|
|
||||||
LanguageSettings(
|
|
||||||
"sqlite",
|
|
||||||
"src/common.ztl",
|
|
||||||
"db/"
|
|
||||||
)
|
|
||||||
]);
|
|
||||||
|
|
||||||
c.build();
|
|
||||||
}
|
|
|
@ -1,93 +0,0 @@
|
||||||
use "common.ztl";
|
|
||||||
|
|
||||||
fn main (argc num, argv str) num {
|
|
||||||
let screen_width = 800;
|
|
||||||
let screen_height = 450;
|
|
||||||
|
|
||||||
let username = argv[0];
|
|
||||||
let password = argv[1];
|
|
||||||
|
|
||||||
let server = 9p("localhost:25565");
|
|
||||||
|
|
||||||
let me = Player(
|
|
||||||
server,
|
|
||||||
username,
|
|
||||||
Vec(0.0, 1.0, 2.0),
|
|
||||||
purple
|
|
||||||
);
|
|
||||||
|
|
||||||
let players = me.login(password);
|
|
||||||
|
|
||||||
let camera = Camera3D(
|
|
||||||
"CAMERA_PERSPECTIVE",
|
|
||||||
45.0,
|
|
||||||
Vec(0.0, 1.0, 0.0),
|
|
||||||
Vec(me.pos.x + 10.0,
|
|
||||||
me.pos.y + 10.0,
|
|
||||||
me.pos.z),
|
|
||||||
me.pos
|
|
||||||
);
|
|
||||||
|
|
||||||
init_window("zwl client : raylib", screen_width, screen_height);
|
|
||||||
target_fps(60);
|
|
||||||
|
|
||||||
while ( not window_should_close() ) {
|
|
||||||
|
|
||||||
let player_updated = false;
|
|
||||||
|
|
||||||
if (key_down(KEY_RIGHT)) {
|
|
||||||
me.pos.x = (me.pos.x + 0.2);
|
|
||||||
player_updated = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (key_down(KEY_RIGHT)) {
|
|
||||||
me.pos.x = (me.pos.x + 0.2);
|
|
||||||
player_updated = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (key_down(KEY_LEFT)) {
|
|
||||||
me.pos.x = (me.pos.x + 0.2);
|
|
||||||
player_updated = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (key_down(KEY_DOWN)) {
|
|
||||||
me.pos.z = (me.pos.z + 0.2);
|
|
||||||
player_updated = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (key_down(KEY_UP)) {
|
|
||||||
me.pos.z = (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_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();
|
|
||||||
}
|
|
||||||
|
|
||||||
me.logout();
|
|
||||||
close_window();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,47 +0,0 @@
|
||||||
type Vec {
|
|
||||||
init(x f32, y f32, z f32) {
|
|
||||||
this.x = x;
|
|
||||||
this.y = y;
|
|
||||||
this.z = z;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type Color {
|
|
||||||
init(r i8, g i8, b i8) {
|
|
||||||
this.r = r;
|
|
||||||
this.g = g;
|
|
||||||
this.b = b;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type Camera3D {
|
|
||||||
init(setting str, pov f32, up Vec, pos Vec, look Vec) {
|
|
||||||
this.setting = setting;
|
|
||||||
this.pov = pov;
|
|
||||||
this.up = up;
|
|
||||||
this.pos = pos;
|
|
||||||
this.look = look;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type Player {
|
|
||||||
init (server 9p, username str, pos Vec, color Color) {
|
|
||||||
this.server = server;
|
|
||||||
this.username = username;
|
|
||||||
this.pos = pos;
|
|
||||||
this.color = color;
|
|
||||||
}
|
|
||||||
|
|
||||||
login (password str) Player[] {
|
|
||||||
this.server.auth(this.username, password);
|
|
||||||
this.players = server.open("players");
|
|
||||||
return players.read();
|
|
||||||
}
|
|
||||||
|
|
||||||
logout() {
|
|
||||||
this.players.flush();
|
|
||||||
this.server.clunk();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const purple = Color(255, 255, 0);
|
|
|
@ -1,75 +0,0 @@
|
||||||
use "common.ztl";
|
|
||||||
|
|
||||||
fn main (i32 argc, str[] argv) i32 {
|
|
||||||
set s to 9p (
|
|
||||||
version,
|
|
||||||
auth,
|
|
||||||
error,
|
|
||||||
flush,
|
|
||||||
attach,
|
|
||||||
walk,
|
|
||||||
open,
|
|
||||||
create,
|
|
||||||
read,
|
|
||||||
write,
|
|
||||||
clunk,
|
|
||||||
remove,
|
|
||||||
stat,
|
|
||||||
);
|
|
||||||
|
|
||||||
s.host("0.0.0.0:25565");
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
fn version(9pmsg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fn auth(9pmsg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fn error(9pmsg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fn flush(9pmsg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fn attach(9pmsg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fn walk(9pmsg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fn open(9pmsg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fn create(9pmsg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fn read(9pmsg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fn write(9pmsg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fn clunk(9pmsg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fn remove(9pmsg m) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fn stat(9pmsg m) {
|
|
||||||
|
|
||||||
}
|
|
Loading…
Reference in New Issue