quakeworld
=====
A rust library for working with quakeworld.
### available features
* protocol
* [quakeworld::protocol::message::Message](./src/protocol/message/mod.rs) - reading data types from a byte array
* [quakeworld::protocol::types](./src/protocol/types.rs) - data types
* network
* [quakeworld::network::channel::Channel](./src/protocol/channel.rs) - keeps track of connection sequences
* [quakeworld::network::connection::client::Client](./src/protocol/connection/client.rs) - client implementation that handles packets and provides packets that need to be send to keep up a connection with a server. See [here](./example/client.rs) for a minimal client implimentation. Only tested with `mvdsv 0.36-dev`.
* mvd
* [quakeworld::mvd::Mvd](./src/mvd/mod.rs) - parsing mvd file format
* state
* [quakeworld::state::State](./src/state/mod.rs) - using Message types to create a game state
* utils
* [quakeworld::utils::AsciiConverter](./src/utils/ascii_converter.rs) - converting byte arrays to printable ascii
* [quakeworld::utils::Userinfo](./src/utils/userinfo.rs) - parsing userinfo strings
* [quakeworld::utils::trace](./src/utils/trace.rs) - functions to print message read traces (see [here](./examples/trace.rs) for an example
* crc
* [quakeworld::crc](./src/crc/mod.rs) - checksum functions
* ascii_strings - when reading strings they will be converted to printable ascii, original bytes are also being kept see [here](./src/protocol/types.rs#L12)
Features that are enabled by default are protocol, mvd, and util.
Everything is serializable via [serde](https://github.com/serde-rs/serde) (json,...). Supports wasm as target ('it compiles' ```cargo build --target wasm32-unknown-unknown```)
### Goals
probably in order of being implemented too
* qwd - qwd format parsing
* mvd - creating a mvd from states
### Documentation
could be better, aka non existing at the moment
### Example
* [minimal mvd parser](./examples/mvd_parser.rs)
* [minimal client](./examples/client.rs)
* [quakeworld swiss army knife](https://github.com/jogi1/qwsak)
* [more elaborate mvd parser](https://github.com/jogi1/statyr) soon™