6 releases (breaking)
0.4.0 | Jan 26, 2024 |
---|---|
0.3.0 | Aug 3, 2023 |
0.2.0 | Nov 15, 2022 |
0.1.0 | Aug 1, 2022 |
0.0.1 | Mar 7, 2022 |
#671 in Game dev
53 downloads per month
1.5MB
1K
SLoC
Bevy Match 3
bevy_match3
is a crate for handling the logic side of match 3 games in Bevy.
Bevy Version Support
bevy |
bevy_match3 |
---|---|
0.6 | 0.0.1 |
0.7 | 0.0.2 |
0.8 | 0.1.0 |
0.9 | 0.2.0 |
0.10 | N/A |
0.11 | 0.3.0 |
0.12 | 0.4.0 |
Features
- Configurable number of gem types and board dimensions
- Guaranteed no matches at board creation
- Cascading matches
- Check for matches when board is done moving
- Shuffle board
Immediate todo
- Decouple board from plugin and make multiple boards example
Possible todo based on demand
- Entities instead of u32 gem types
- More Match types
- Customizing various aspects like letting swaps succeed always and allowing matches at board creation
Examples
To get started with this crate all you need is to set up the plugin
use bevy_match3::prelude::*;
fn main() {
App::new()
.add_plugins((DefaultPlugins, Match3Plugin))
.run();
}
React to board events
fn consume_events(
mut events: ResMut<BoardEvents>,
) {
if let Ok(event) = events.pop() {
match event {
BoardEvent::Swapped(pos1, pos2) => todo!(),
BoardEvent::FailedSwap(pos1, pos2) => todo!(),
BoardEvent::Popped(pos) => todo!(),
BoardEvent::Matched(matches) => todo!(),
BoardEvent::Dropped(drops) => todo!(),
BoardEvent::Spawned(spawns) => todo!(),
}
}
}
and start sending commands to the board using the BoardCommands
resource!
For now there is one example of all features at basic.rs
License
All code in this repository is dual-licensed under either:
- MIT License (LICENSE-MIT or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
at your option.
Credits
- Ilustragm for their awesome gem icon pack used in the examples! https://ilustragm.itch.io/set-gems-icon-01
Dependencies
~26MB
~471K SLoC