From 0d52e5816cf93fcffe3bee1aa0fd8301a8f0322c Mon Sep 17 00:00:00 2001 From: ChillerDragon Date: Wed, 21 Feb 2024 12:32:21 +0800 Subject: [PATCH] Generate server hooks docs --- docs/README.md | 26 ++++ docs/classes/TeeworldsServer.md | 207 ++++++++++++++++++++++++++++++++ lib/game_server.rb | 4 +- lib/messages/cl_input.rb | 3 +- scripts/hooks.sh | 8 +- 5 files changed, 244 insertions(+), 4 deletions(-) create mode 100644 docs/classes/TeeworldsServer.md diff --git a/docs/README.md b/docs/README.md index f57e20b..32ed5a9 100644 --- a/docs/README.md +++ b/docs/README.md @@ -84,3 +84,29 @@ Version v0.0.6 [#send_input(input = {})](classes/TeeworldsClient.md#send_input) [#on_tick(&block)](classes/TeeworldsClient.md#on_tick) + +### [TeeworldsServer](classes/TeeworldsServer.md) + +[#on_tick(&block)](classes/TeeworldsServer.md#on_tick) + +[#on_client_drop(&block)](classes/TeeworldsServer.md#on_client_drop) + +[#on_input(&block)](classes/TeeworldsServer.md#on_input) + +[#on_enter_game(&block)](classes/TeeworldsServer.md#on_enter_game) + +[#on_start_info(&block)](classes/TeeworldsServer.md#on_start_info) + +[#on_ready(&block)](classes/TeeworldsServer.md#on_ready) + +[#on_info(&block)](classes/TeeworldsServer.md#on_info) + +[#on_emote(&block)](classes/TeeworldsServer.md#on_emote) + +[#on_shutdown(&block)](classes/TeeworldsServer.md#on_shutdown) + +[#on_rcon_cmd(&block)](classes/TeeworldsServer.md#on_rcon_cmd) + +[#on_rcon_auth(&block)](classes/TeeworldsServer.md#on_rcon_auth) + +[#on_chat(&block)](classes/TeeworldsServer.md#on_chat) diff --git a/docs/classes/TeeworldsServer.md b/docs/classes/TeeworldsServer.md new file mode 100644 index 0000000..c2e5494 --- /dev/null +++ b/docs/classes/TeeworldsServer.md @@ -0,0 +1,207 @@ +# TeeworldsServer + +### #on_tick(&block) + +**Parameter: block [Block |[context](../classes/Context.md)|]** + +context.message is nil because there is no message payload. + +**Example:** +```ruby +server = TeeworldsServer.new + +server.on_tick do |context| + # TODO: generated documentation +end + +server.run('127.0.0.1', 8377) +``` + +### #on_client_drop(&block) + +**Parameter: block [Block |[context](../classes/Context.md)|]** + +context.message is a [SvClientDrop](../classes/messages/SvClientDrop.md) + +**Example:** +```ruby +server = TeeworldsServer.new + +server.on_client_drop do |context| + # TODO: generated documentation +end + +server.run('127.0.0.1', 8377) +``` + +### #on_input(&block) + +**Parameter: block [Block |[context](../classes/Context.md)|]** + +TODO: generated documentation + +**Example:** +```ruby +server = TeeworldsServer.new + +server.on_input do |context| + # TODO: generated documentation +end + +server.run('127.0.0.1', 8377) +``` + +### #on_enter_game(&block) + +**Parameter: block [Block |[context](../classes/Context.md)|]** + +TODO: generated documentation + +**Example:** +```ruby +server = TeeworldsServer.new + +server.on_enter_game do |context| + # TODO: generated documentation +end + +server.run('127.0.0.1', 8377) +``` + +### #on_start_info(&block) + +**Parameter: block [Block |[context](../classes/Context.md)|]** + +TODO: generated documentation + +**Example:** +```ruby +server = TeeworldsServer.new + +server.on_start_info do |context| + # TODO: generated documentation +end + +server.run('127.0.0.1', 8377) +``` + +### #on_ready(&block) + +**Parameter: block [Block |[context](../classes/Context.md)|]** + +TODO: generated documentation + +**Example:** +```ruby +server = TeeworldsServer.new + +server.on_ready do |context| + # TODO: generated documentation +end + +server.run('127.0.0.1', 8377) +``` + +### #on_info(&block) + +**Parameter: block [Block |[context](../classes/Context.md)|]** + +TODO: generated documentation + +**Example:** +```ruby +server = TeeworldsServer.new + +server.on_info do |context| + # TODO: generated documentation +end + +server.run('127.0.0.1', 8377) +``` + +### #on_emote(&block) + +**Parameter: block [Block |[context](../classes/Context.md)|]** + +TODO: generated documentation + +**Example:** +```ruby +server = TeeworldsServer.new + +server.on_emote do |context| + # TODO: generated documentation +end + +server.run('127.0.0.1', 8377) +``` + +### #on_shutdown(&block) + +**Parameter: block [Block |[context](../classes/Context.md)|]** + +TODO: generated documentation + +**Example:** +```ruby +server = TeeworldsServer.new + +server.on_shutdown do |context| + # TODO: generated documentation +end + +server.run('127.0.0.1', 8377) +``` + +### #on_rcon_cmd(&block) + +**Parameter: block [Block |[context](../classes/Context.md)|]** + +TODO: generated documentation + +**Example:** +```ruby +server = TeeworldsServer.new + +server.on_rcon_cmd do |context| + # TODO: generated documentation +end + +server.run('127.0.0.1', 8377) +``` + +### #on_rcon_auth(&block) + +**Parameter: block [Block |[context](../classes/Context.md)|]** + +TODO: generated documentation + +**Example:** +```ruby +server = TeeworldsServer.new + +server.on_rcon_auth do |context| + # TODO: generated documentation +end + +server.run('127.0.0.1', 8377) +``` + +### #on_chat(&block) + +**Parameter: block [Block |[context](../classes/Context.md)|]** + +context.message is nil because there is no message payload. + +**Example:** +```ruby +server = TeeworldsServer.new + +server.on_chat do |context| + # TODO: generated documentation +end + +server.run('127.0.0.1', 8377) +``` + + diff --git a/lib/game_server.rb b/lib/game_server.rb index 631eb36..7144733 100644 --- a/lib/game_server.rb +++ b/lib/game_server.rb @@ -43,7 +43,7 @@ class GameServer def on_emoticon(chunk, _packet) msg = ClEmoticon.new(chunk.data[1..]) - return if call_hook(:emote, Context.new(msg, chunk:, packet:)).nil? + call_hook(:emote, Context.new(msg, chunk:, packet:)).nil? end def on_info(chunk, packet) @@ -145,7 +145,7 @@ class GameServer return if call_hook(:input, Context.new(msg, chunk:, packet:)).nil? dir = msg.direction - puts "#{packet.client.player.id} tried to move #{dir}" unless dir.zero? + puts "#{packet.client.player.id} tried to move #{dir}" unless dir.zero? end def on_client_drop(client, reason = nil) diff --git a/lib/messages/cl_input.rb b/lib/messages/cl_input.rb index 6ecc7fc..0f9a996 100644 --- a/lib/messages/cl_input.rb +++ b/lib/messages/cl_input.rb @@ -7,7 +7,8 @@ require_relative '../packer' # # Client -> Server class ClInput - attr_accessor :ack_game_tick, :prediction_tick, :size, :direction, :target_x, :target_y, :jump, :fire, :hook, :player_flags, :wanted_weapon, :next_weapon, :prev_weapon, :ping + attr_accessor :ack_game_tick, :prediction_tick, :size, :direction, :target_x, :target_y, :jump, :fire, :hook, + :player_flags, :wanted_weapon, :next_weapon, :prev_weapon, :ping def initialize(hash_or_raw) if hash_or_raw.instance_of?(Hash) diff --git a/scripts/hooks.sh b/scripts/hooks.sh index 66b7664..ce3cdfe 100755 --- a/scripts/hooks.sh +++ b/scripts/hooks.sh @@ -220,7 +220,13 @@ function check_file() { fi } -if check_file TeeworldsClient lib/teeworlds_client.rb # || check_file TeeworldsServer lib/teeworlds_server.rb +echo "[*] client" +if check_file TeeworldsClient lib/teeworlds_client.rb +then + exit 1 +fi +echo "[*] server" +if check_file TeeworldsServer lib/teeworlds_server.rb then exit 1 fi