A teeworlds 0.7 network protocol library written in ruby
Go to file
ChillerDragon 3a219f406b Change context api! And add input timing msg
Remove the client attribute from the Context class
The block that exposes a Context class has to be called on a client
anyways so also passing it to the block args is redundant.

Replace it by a parsed version of the chunk which has yet to be properly
named current working title is: todo_rename_this
2022-11-15 10:39:44 +01:00
.github/workflows Generate hooks documentation 2022-11-13 13:13:14 +01:00
docs/v0.0.1 Change context api! And add input timing msg 2022-11-15 10:39:44 +01:00
examples Make client callbacks arrays 2022-11-14 10:25:28 +01:00
integration_test Make client callbacks arrays 2022-11-14 10:25:28 +01:00
lib Change context api! And add input timing msg 2022-11-15 10:39:44 +01:00
scripts First working version of cli packet generator 2022-11-15 09:36:44 +01:00
spec Ensure syntax correctness in network.rb 2022-11-13 11:45:32 +01:00
.gitignore Check loading all files in CI 2022-11-13 11:55:33 +01:00
.rubocop.yml Add rubocop to CI (closed #2) 2022-11-05 17:57:12 +01:00
client_sample.rb Make client callbacks arrays 2022-11-14 10:25:28 +01:00
Gemfile Add tests (closed #3) 2022-11-05 17:13:23 +01:00
Rakefile Add tests (closed #3) 2022-11-05 17:13:23 +01:00
README.md Make client callbacks arrays 2022-11-14 10:25:28 +01:00
server_sample.rb Make server log look nice in non verbose mode 2022-11-13 10:42:49 +01:00
teeworlds-client.gemspec Layout server control msg structure 2022-11-09 08:56:18 +01:00

teeworlds_network

A teeworlds 0.7 client & server library written in ruby

Sample

Here a simple sample usage of the library. Connecting a client to localhost on port 8303. Acting as a simple chat bot. Also properly disconnect when the program is killed gracefully.

For more sample usages checkout the examples/ folder.

require_relative 'lib/teeworlds_client'

client = TeeworldsClient.new(verbose: false)

client.on_chat do |_, msg|
  # note use `next` instead of `return` in the block
  next unless msg.message[0] == '!'

  case msg.message[1..]
  when 'ping' then client.send_chat('pong')
  when 'whoami' then client.send_chat("You are: #{msg.author.name}")
  when 'list' then client.send_chat(client.game_client.players.values.map(&:name).join(', '))
  else client.send_chat('Unkown command! Commands: !ping, !whoami, !list')
  end
end

# properly disconnect on ctrl+c
Signal.trap('INT') do
  client.disconnect
end

# connect to localhost and block the current thread
client.connect('localhost', 8303, detach: false)

Documentation

Checkout docs/v0.0.1/READE.md for a full library documentation.