move stuff, add client experiment
This commit is contained in:
parent
be7a3e731b
commit
7ae64fb165
|
@ -0,0 +1,108 @@
|
|||
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, 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
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
void build(ProjectConfig c) {
|
||||
c.name("MMO Project");
|
||||
|
||||
c.client({
|
||||
"javascript":{
|
||||
"out": "client/"
|
||||
}
|
||||
})
|
||||
|
||||
c.server({
|
||||
"c":{
|
||||
"out":"server/"
|
||||
}
|
||||
});
|
||||
|
||||
c.database({
|
||||
"sqlite":{
|
||||
"out":"db/"
|
||||
}
|
||||
});
|
||||
|
||||
c.common({
|
||||
"c":{
|
||||
"out":"server/"
|
||||
},
|
||||
"javascript":{
|
||||
"out":"client/"
|
||||
},
|
||||
"sqlite":{
|
||||
"out":"db/"
|
||||
}
|
||||
});
|
||||
|
||||
c.build();
|
||||
}
|
|
@ -0,0 +1,91 @@
|
|||
use "common.zl"
|
||||
|
||||
Player[] login(Server s, Player p, str password) {
|
||||
/* do the login here */
|
||||
}
|
||||
|
||||
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 *)
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
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);
|
|
@ -0,0 +1,57 @@
|
|||
void main(int argc, str[] argv) {
|
||||
tunnel s();
|
||||
s.host("localhost: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) {
|
||||
|
||||
}
|
Loading…
Reference in New Issue