card system base

This commit is contained in:
Rendo 2026-01-24 05:27:26 +05:00
commit a69e1cfae2
3 changed files with 76 additions and 5 deletions

View file

@ -1,81 +0,0 @@
use bevy::prelude::*;
pub struct TurnSystemPlugin;
impl Plugin for TurnSystemPlugin {
fn build(&self, app: &mut App) {
app.init_state::<TurnState>()
.add_systems(OnEnter(TurnState::PreEffectProcess), pre_effect_setup)
.add_systems(OnEnter(TurnState::UnitProcess), unit_setup)
.add_systems(OnEnter(TurnState::PostEffectProcess), post_effect_setup)
.add_systems(Update, process_busy_turnables);
}
}
#[derive(Component)]
struct TurnBusy(bool);
#[derive(Component)]
struct TurnPreEffect;
#[derive(Component)]
struct TurnUnit;
#[derive(Component)]
struct TurnPostEffect;
#[derive(Debug, Clone, Copy, Default, Eq, PartialEq, Hash, States)]
enum TurnState {
#[default]
Turn,
PreEffectProcess,
UnitProcess,
PostEffectProcess,
}
fn pre_effect_setup(mut commands: Commands, query: Query<Entity, With<TurnPreEffect>>) {
for effect in query {
commands.entity(effect).insert(TurnBusy(false));
}
}
fn unit_setup(mut commands: Commands, query: Query<Entity, With<TurnUnit>>) {
for unit in query {
commands.entity(unit).insert(TurnBusy(false));
}
}
fn post_effect_setup(mut commands: Commands, query: Query<Entity, With<TurnPostEffect>>) {
for effect in query {
commands.entity(effect).insert(TurnBusy(false));
}
}
fn process_busy_turnables(
mut commands: Commands,
query: Query<(Entity, &TurnBusy)>,
state: Res<State<TurnState>>,
) {
let mut advance_flag: bool = true;
for (turnable, component) in query {
if component.0 {
commands.entity(turnable).remove::<TurnBusy>();
} else {
advance_flag = false;
}
}
if advance_flag {
match state.get() {
TurnState::Turn => {
commands.set_state(TurnState::PreEffectProcess);
}
TurnState::PreEffectProcess => {
commands.set_state(TurnState::UnitProcess);
}
TurnState::UnitProcess => {
commands.set_state(TurnState::PostEffectProcess);
}
TurnState::PostEffectProcess => {
commands.set_state(TurnState::Turn);
}
}
}
}