From: Brendan Hansen Date: Fri, 20 May 2022 15:07:00 +0000 (-0500) Subject: using onyx-pkg now; and better runtime information X-Git-Url: https://git.brendanfh.com/?a=commitdiff_plain;h=5dd63c38f2a55307e412f8084b284e0dc39d7b67;p=voxel-shooter.git using onyx-pkg now; and better runtime information --- diff --git a/.gitignore b/.gitignore index d875df8..09bf44b 100644 --- a/.gitignore +++ b/.gitignore @@ -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 index 7dc0a97..0000000 --- a/.gitmodules +++ /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 index 0000000..93355ac --- /dev/null +++ b/onyx-pkg.ini @@ -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 + diff --git a/run_tree/lib/onyx_glfw3.so b/run_tree/lib/onyx_glfw3.so index dd2da0c..168d722 100755 Binary files a/run_tree/lib/onyx_glfw3.so and b/run_tree/lib/onyx_glfw3.so differ diff --git a/run_tree/lib/onyx_opengles.so b/run_tree/lib/onyx_opengles.so index 6015b67..333ecb0 100755 Binary files a/run_tree/lib/onyx_opengles.so and b/run_tree/lib/onyx_opengles.so differ diff --git a/run_tree/lib/stb_image.so b/run_tree/lib/stb_image.so index e8d39d6..a2305d7 100755 Binary files a/run_tree/lib/stb_image.so and b/run_tree/lib/stb_image.so differ diff --git a/run_tree/lib/stb_truetype.so b/run_tree/lib/stb_truetype.so index 355297f..55c198d 100755 Binary files a/run_tree/lib/stb_truetype.so and b/run_tree/lib/stb_truetype.so differ diff --git a/run_tree/run.sh b/run_tree/run.sh index 25f21b1..61025be 100755 --- a/run_tree/run.sh +++ b/run_tree/run.sh @@ -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 diff --git a/server/run.sh b/server/run.sh index 8d31c57..9464f8e 100755 --- a/server/run.sh +++ b/server/run.sh @@ -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 diff --git a/src/client/build.onyx b/src/client/build.onyx index 788adfc..1368111 100644 --- a/src/client/build.onyx +++ b/src/client/build.onyx @@ -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" diff --git a/src/client/main.onyx b/src/client/main.onyx index 78cfeec..728a7be 100644 --- a/src/client/main.onyx +++ b/src/client/main.onyx @@ -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 { diff --git a/src/client/net/handlers.onyx b/src/client/net/handlers.onyx index c1c02c3..241cbb6 100644 --- a/src/client/net/handlers.onyx +++ b/src/client/net/handlers.onyx @@ -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); } } diff --git a/src/client/net/net.onyx b/src/client/net/net.onyx index 6e5433a..91c91c1 100644 --- a/src/client/net/net.onyx +++ b/src/client/net/net.onyx @@ -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); diff --git a/src/client/utils/vecmath.onyx b/src/client/utils/vecmath.onyx index bbad972..897d687 100644 --- a/src/client/utils/vecmath.onyx +++ b/src/client/utils/vecmath.onyx @@ -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 }; diff --git a/src/config.onyx.template b/src/config.onyx.template index 841d5fc..f66200a 100644 --- a/src/config.onyx.template +++ b/src/config.onyx.template @@ -1,7 +1,5 @@ package runtime.vars -ONYX_MODULE_DIR :: "" - Game_Version :: 0x0001 Game_Port :: cast(u16) 5123 diff --git a/src/server/build.onyx b/src/server/build.onyx index 7bb2c07..8962445 100644 --- a/src/server/build.onyx +++ b/src/server/build.onyx @@ -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"