Weasel Turn Battle System

Build Status Code Coverage crates.io Released API docs License: MIT

weasel is a customizable battle system for turn-based games.

Examples

```rust use weasel::{Server, battle_rules, rules::empty::*}; use weasel::battle::{Battle, BattleRules}; use weasel::team::CreateTeam; use weasel::event::EventTrigger;

battle_rules! {}

let battle = Battle::builder(CustomRules::new()).build(); let mut server = Server::builder(battle).build();

CreateTeam::trigger(&mut server, 1).fire().unwrap(); assert_eq!(server.battle().entities().teams().count(), 1); ```

You can find real examples of battle systems made with weasel in examples.

How does it work?

To use this library, you would create instances of its main objects: server and client. You will notice that both of them are parameterized with a BattleRules generic type.\ A server is mandatory to manage a game. A server can be also a client. For example, a typical single player game needs only one server.\ A client is a participant to a game. It sends commands to a server on behalf of a player. A multiplayer game would have one server and multiple clients.

Once you have instantiated a server and possibly one or more clients, you are ready to begin a new game.\ Games are carried forward by creating events. There are many kind of events, see the documentation to know more.

Through a server or a client you'll be able to access the full state of the battle, including the entire timeline of events.

Features

weasel provides many functionalities to ease the development of a turn based game:

Contributing

Thanks for your interest in contributing! There are many ways to contribute to this project. See CONTRIBUTING.md.

License

weasel is provided under the MIT license. See LICENSE.