using onyx-pkg now; and better runtime information
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Fri, 20 May 2022 15:07:00 +0000 (10:07 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Fri, 20 May 2022 15:07:00 +0000 (10:07 -0500)
16 files changed:
.gitignore
.gitmodules [deleted file]
onyx-pkg.ini [new file with mode: 0644]
run_tree/lib/onyx_glfw3.so
run_tree/lib/onyx_opengles.so
run_tree/lib/stb_image.so
run_tree/lib/stb_truetype.so
run_tree/run.sh
server/run.sh
src/client/build.onyx
src/client/main.onyx
src/client/net/handlers.onyx
src/client/net/net.onyx
src/client/utils/vecmath.onyx
src/config.onyx.template
src/server/build.onyx

index d875df8a6858363b1fd143a829a5abf182334966..09bf44b289834f5433aa260a7bd3235d77d76a48 100644 (file)
@@ -4,3 +4,4 @@ src/config.onyx
 *.sublime-workspace
 .vscode/c_cpp_properties.json
 *.wasm
+/lib/
\ No newline at end of file
diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644 (file)
index 7dc0a97..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule "lib/onyx-net"]
-       path = lib/onyx-net
-       url = https://github.com/onyx-lang/onyx-net.git
diff --git a/onyx-pkg.ini b/onyx-pkg.ini
new file mode 100644 (file)
index 0000000..93355ac
--- /dev/null
@@ -0,0 +1,31 @@
+[metadata]
+name=voxel-shooter
+description=Ace Of Spades style shooter game
+url=
+author=Brendan Hansen
+version=0.0.1
+
+[config]
+lib_source_directory=./lib
+lib_bin_directory=./run_tree/lib
+
+[native_library]
+build_cmd=
+library=
+
+[dependencies]
+git://onyxlang.io/repo/onyx-net=0.0.3
+git://onyxlang.io/repo/glfw3=0.0.2
+git://onyxlang.io/repo/opengles=0.0.2
+git://onyxlang.io/repo/perlin=0.1.0
+git://onyxlang.io/repo/stb_image=0.0.2
+git://onyxlang.io/repo/stb_truetype=0.0.2
+
+[dependency_folders]
+git://onyxlang.io/repo/onyx-net=onyx-net
+git://onyxlang.io/repo/glfw3=glfw3
+git://onyxlang.io/repo/opengles=opengles
+git://onyxlang.io/repo/perlin=perlin
+git://onyxlang.io/repo/stb_image=stb_image
+git://onyxlang.io/repo/stb_truetype=stb_truetype
+
index dd2da0c0230868b6b6aae460358cbaf94a02df92..168d72232358ac5bac3318ec34ec4ec33d726648 100755 (executable)
Binary files a/run_tree/lib/onyx_glfw3.so and b/run_tree/lib/onyx_glfw3.so differ
index 6015b67ee5adae213bb217c128d55e77277c7aef..333ecb020151cd4f3ed26aea879d8d63b3b08d19 100755 (executable)
Binary files a/run_tree/lib/onyx_opengles.so and b/run_tree/lib/onyx_opengles.so differ
index e8d39d62fed49716912ffc8c8633ebfc1b584b50..a2305d7fa7ef57322449ce6b8b524c205176b446 100755 (executable)
Binary files a/run_tree/lib/stb_image.so and b/run_tree/lib/stb_image.so differ
index 355297f44f7022578f8b145f0a27913efd70c8b7..55c198d41a5003fc9cc3f03100103f50d5a534a7 100755 (executable)
Binary files a/run_tree/lib/stb_truetype.so and b/run_tree/lib/stb_truetype.so differ
index 25f21b13abfd735699f4dd0dae189f01d1b118e7..61025bea08db042465f6d7026d870ae0a9e131e7 100755 (executable)
@@ -1,2 +1,2 @@
 
-onyx -V build -I ../src/client -o game.wasm $@ && onyxrun game.wasm
+onyx -V build -I ../src/client -o game.wasm $@ && onyx-run game.wasm
index 8d31c573bfc53f53535ad418f6e90b3e537307e2..9464f8e1d00cf99bda319acc0b377d0d54c8c844 100755 (executable)
@@ -1,3 +1,3 @@
 #!/bin/sh
 
-onyx -V build -I ../src/server -o server.wasm $@ && onyxrun server.wasm
\ No newline at end of file
+onyx -V build -I ../src/server -o server.wasm $@ && onyx-run server.wasm
\ No newline at end of file
index 788adfcfe276599b32b439061c64569b0588ddc6..13681112222b52c0c2fd1679a0e0e0d8f9bf7ecf 100644 (file)
@@ -1,7 +1,5 @@
 #load "core/std"
 
-#local runtime :: package runtime
-#load_path runtime.vars.ONYX_MODULE_DIR
 #load_path "./../src/client"
 #library_path "./lib"
 
@@ -23,4 +21,4 @@
 #load "perlin/module"
 #load "stb_image/module"
 #load "stb_truetype/module"
-#load "onyx-net/src/module"
+#load "onyx-net/module"
index 78cfeec6431217f48a2d7e009f155b3073259304..728a7be91f217519692cc5c7f13c5ba9b1717b54 100644 (file)
@@ -1,14 +1,8 @@
 
-use package core
-use package glfw3
-use package opengles
-use package core.intrinsics.onyx { __initialize }
-#local runtime :: package runtime
-
-#package {
-    ui       :: package ui
-    game_net :: package game_net
-}
+use core
+use glfw3
+use opengles
+use core.intrinsics.onyx { __initialize }
 
 State :: struct {
     data:   rawptr;
@@ -24,12 +18,10 @@ State :: struct {
 #local state_stack: [..] State;
 
 push_game_state :: (state: type_expr, data: rawptr) -> ^State {
-    type_info :: package runtime.info
-
     s := array.alloc_one(^state_stack);
     *s = .{ data };
 
-    type_info.populate_struct_vtable(s, state, safe=false);
+    runtime.info.populate_struct_vtable(s, state, safe=false);
 
     parent := array.get_ptr(state_stack, -2) if state_stack.count > 1 else null;
     if parent != null {
index c1c02c3147c84ab9755a99f1f896f3834ec57fe5..241cbb6e621bc02ce0ec4d6d31870ad7c11f1ace 100644 (file)
@@ -7,82 +7,63 @@ package game_net
     packets :: package packets
 }
 
-#local Verify_Connect_Handle :: struct {
-    use base := Packet_Handler.{ .Verify_Connect };
+#tag Packet_Handler.{ .Verify_Connect }
+#local handle_verify_connect :: (packet: ^packets.Verify_Connect) {
+    player_manager.player_id = packet.player_id;
 
-    handle :: (packet: ^packets.Verify_Connect) {
-        player_manager.player_id = packet.player_id;
-
-        push_game_state(Game_State, null);
-    }
+    push_game_state(Game_State, null);
 }
 
-#local Player_Joined_Handle :: struct {
-    use base := Packet_Handler.{ .Player_Joined };
-
-    handle :: (packet: ^packets.Player_Joined) {
-        name := packet->name();
-        player_manager->add_player(packet.player_id, name);
+#tag Packet_Handler.{ .Player_Joined }
+#local handle_player_joined :: (packet: ^packets.Player_Joined) {
+    name := packet->name();
+    player_manager->add_player(packet.player_id, name);
 
-        if packet.player_id != player_manager.player_id {
-            buf: [1024] u8;
-            chat_messages << (conv.format(buf, "{} joined the server!", name) |> string.alloc_copy());
-        }
+    if packet.player_id != player_manager.player_id {
+        chat_messages << aprintf("{} joined the server!", name);
     }
 }
 
-#local Connection_Rejected_Handle :: struct {
-    use base := Packet_Handler.{ .Connection_Rejected };
+#tag Packet_Handler.{ .Connection_Rejected }
+#local handle_connection_rejected :: (packet: ^packets.Connection_Rejected) {
+    @NetworkErrors // Handle this case.
+    printf("Connection refused: {}\n", packet.reason);
 
-    handle :: (packet: ^packets.Connection_Rejected) {
-        @NetworkErrors // Handle this case.
-        printf("Connection refused: {}\n", packet.reason);
-
-        pop_game_state();
-        push_game_state(Connect_Menu, null);
-    }
+    pop_game_state();
+    push_game_state(Connect_Menu, null);
 }
 
-#local Chat_Message_Handle :: struct {
-    use base := Packet_Handler.{ .Chat_Message };
-
-    handle :: (packet: ^packets.Chat_Message) {
-        buf: [1024] u8;
-        msg: str;
+#tag Packet_Handler.{ .Chat_Message }
+#local handle_chat_message :: (packet: ^packets.Chat_Message) {
+    buf: [1024] u8;
+    msg: str;
 
-        sender := player_manager->get_player(packet.sender_id);
-        if sender != null {
-            msg = conv.format(buf, "[{}] {}\n", sender.name, packet->message());
-        } else {
-            msg = packet->message();
-        }
-
-        chat_messages << string.alloc_copy(msg);
+    sender := player_manager->get_player(packet.sender_id);
+    if sender != null {
+        msg = conv.format(buf, "[{}] {}\n", sender.name, packet->message());
+    } else {
+        msg = packet->message();
     }
-}
 
-#local Player_Moved_Handle :: struct {
-    use base := Packet_Handler.{ .Player_Moved };
+    chat_messages << string.alloc_copy(msg);
+}
 
-    handle :: (packet: ^packets.Player_Moved) {
-        if packet.player_id == player_manager.player_id do return;
+#tag Packet_Handler.{ .Player_Moved }
+#local handle_player_moved :: (packet: ^packets.Player_Moved) {
+    if packet.player_id == player_manager.player_id do return;
 
-        player := player_manager->get_player(packet.player_id);
-        player.position  = packet.position;
-        player.velocity  = packet.velocity;
-        player.facing    = packet.facing;
-        player.on_ground = packet.on_ground;
-    }
+    player := player_manager->get_player(packet.player_id);
+    player.position  = packet.position;
+    player.velocity  = packet.velocity;
+    player.facing    = packet.facing;
+    player.on_ground = packet.on_ground;
 }
 
-#local Block_Updates_Handle :: struct {
-    use base := Packet_Handler.{ .Block_Updates };
-
-    handle :: (packet: ^packets.Block_Updates) {
-        updates := packet->updates();
-        for updates {
-            pos := it.position;
-            world_set_block(world, pos.x, pos.y, pos.z, it.new_block);
-        }
+#tag Packet_Handler.{ .Block_Updates }
+#local handle_block_updates :: (packet: ^packets.Block_Updates) {
+    updates := packet->updates();
+    for updates {
+        pos := it.position;
+        world_set_block(world, pos.x, pos.y, pos.z, it.new_block);
     }
 }
index 6e5433a889011d1f93313061898100a3a3937a63..91c91c14091f7ff69dd5d01480f2b1fb0ad64489 100644 (file)
@@ -10,15 +10,10 @@ package game_net
 register_handles :: () {
     use package runtime.info;
 
-    for_all_types() {
-        if struct_inherits(type_idx, Packet_Handler) {
-            func := get_struct_method(type_idx, "handle");
-            if func == null do continue;
-
-            struct_type_info := cast(^Type_Info_Struct) type_info;
-            packet_type := *cast(^packets.Type) struct_type_info.members[0].default;
-            packet_handles[packet_type] = *cast(^(rawptr) -> void) func.data;
-        }
+    procs := get_procedures_with_tag(Packet_Handler);
+    defer delete(^procs);
+    for procs {
+        packet_handles[it.tag.type] = *cast(^(rawptr) -> void) ^it.func;
     }
 
     println(packet_handles);
index bbad972b81490966bea78f461d06cc4a0e1f2209..897d687cb9e5d0765b4fc5713f563e81c4ae945e 100644 (file)
@@ -1,12 +1,14 @@
 #local hash :: package core.hash
 
+#tag conv.Custom_Format.{format_vector2i}
+#tag conv.Custom_Parse.{parse_vector2i}
 Vector2i :: struct {
     x, y: i32;
     
-    #struct_tag conv.Custom_Format.{format_vector2i}
-    #struct_tag conv.Custom_Parse.{parse_vector2i}
 }
 
+#tag conv.Custom_Format.{format_vector2}
+#tag conv.Custom_Parse.{parse_vector2}
 Vector2 :: struct {
     x, y: f32;
 
@@ -21,16 +23,14 @@ Vector2 :: struct {
 
 
     Zero :: Vector2.{0, 0}
-
-    #struct_tag conv.Custom_Format.{format_vector2}
-    #struct_tag conv.Custom_Parse.{parse_vector2}
 }
 
+#tag conv.Custom_Format.{format_vector3i}
 Vector3i :: struct {
     x, y, z: i32;
-    #struct_tag conv.Custom_Format.{format_vector3i}
 }
 
+#tag conv.Custom_Format.{format_vector3}
 Vector3 :: struct {
     x, y, z: f32;
 
@@ -64,8 +64,6 @@ Vector3 :: struct {
             math.clamp(v.z, min.z, max.z),
         };
     }
-
-    #struct_tag conv.Custom_Format.{format_vector3}
 }
 
 #operator + macro (v1, v2: Vector2i)   => (typeof v1).{ v1.x + v2.x, v1.y + v2.y };
index 841d5fc68b1a955d3b11aa994a09a861a7b4fef7..f66200a1cb29d60353379a0d554b89081346616e 100644 (file)
@@ -1,7 +1,5 @@
 package runtime.vars
 
-ONYX_MODULE_DIR :: ""
-
 Game_Version :: 0x0001
 Game_Port :: cast(u16) 5123
 
index 7bb2c076d985692755fd8615f2e2f2534d4bb20c..8962445e07c20b68373bd7ff3f0af7f0a8211e22 100644 (file)
@@ -3,7 +3,6 @@ package runtime.vars
 #load "core/std"
 
 #local runtime :: package runtime
-#load_path runtime.vars.ONYX_MODULE_DIR
 #load_path "./../src/server"
 #library_path "./lib"
 
@@ -13,4 +12,4 @@ package runtime.vars
 #load "./../client/utils/vecmath"
 #load_all "./../shared"
 
-#load "onyx-net/src/module"
+#load "onyx-net/module"