weasel is a customizable battle system for turn-based games.
```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.
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 full timeline of events.
Thanks for your interest in contributing! There are many ways to contribute to this project. See CONTRIBUTING.md.
weasel is provided under the MIT license. See LICENSE.