card system base
This commit is contained in:
parent
abecd3eeee
commit
a69e1cfae2
3 changed files with 76 additions and 5 deletions
67
src/card.rs
Normal file
67
src/card.rs
Normal file
|
|
@ -0,0 +1,67 @@
|
||||||
|
use bevy::prelude::*;
|
||||||
|
|
||||||
|
pub struct CardPlugin;
|
||||||
|
|
||||||
|
#[derive(Component)]
|
||||||
|
pub struct Card;
|
||||||
|
|
||||||
|
#[derive(Component)]
|
||||||
|
pub struct Hand;
|
||||||
|
|
||||||
|
#[derive(Resource)]
|
||||||
|
pub struct CardImage(Handle<Image>);
|
||||||
|
|
||||||
|
impl Plugin for CardPlugin {
|
||||||
|
fn build(&self, app: &mut App) {
|
||||||
|
app.add_systems(Startup, (hand_setup, test_card_setup).chain())
|
||||||
|
.add_systems(Update, card_arrange);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn hand_setup(mut commands: Commands, asset_server: Res<AssetServer>) {
|
||||||
|
commands.spawn((Hand, Transform::from_xyz(0., -360., 0.)));
|
||||||
|
|
||||||
|
commands.insert_resource(CardImage(
|
||||||
|
asset_server.load::<Image>("sprites/cards/units/fosma.png"),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
fn test_card_setup(
|
||||||
|
mut commands: Commands,
|
||||||
|
hand: Single<Entity, With<Hand>>,
|
||||||
|
card_image: Res<CardImage>,
|
||||||
|
) {
|
||||||
|
commands.spawn((
|
||||||
|
Sprite::from_image(card_image.0.clone()),
|
||||||
|
Transform::from_xyz(0., 0., 0.),
|
||||||
|
Card,
|
||||||
|
ChildOf(hand.entity()),
|
||||||
|
));
|
||||||
|
|
||||||
|
commands.spawn((
|
||||||
|
Sprite::from_image(card_image.0.clone()),
|
||||||
|
Transform::from_xyz(0., 0., 0.),
|
||||||
|
Card,
|
||||||
|
ChildOf(hand.entity()),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
fn card_arrange(
|
||||||
|
query: Query<(&mut Transform, &Sprite, &ChildOf), With<Card>>,
|
||||||
|
hand: Single<(Entity, &Children), With<Hand>>,
|
||||||
|
assets: Res<Assets<Image>>,
|
||||||
|
) {
|
||||||
|
let cards_amount = hand.1.len();
|
||||||
|
let mut card_id = 0.;
|
||||||
|
for (mut transform, sprite, child_of) in query {
|
||||||
|
if child_of.parent() != hand.0 {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let size = assets.get(&sprite.image).unwrap().size_f32();
|
||||||
|
let left_boundary = -size.x * (cards_amount as f32) / 2.0;
|
||||||
|
transform.translation.x = left_boundary + size.x * card_id + size.x / 2.0;
|
||||||
|
transform.translation.y = size.y / 2.0;
|
||||||
|
|
||||||
|
card_id += 1.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,21 +1,22 @@
|
||||||
use bevy::prelude::*;
|
use bevy::prelude::*;
|
||||||
|
|
||||||
mod turn_system;
|
mod card;
|
||||||
|
mod turns;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
App::new()
|
App::new()
|
||||||
.add_plugins((DefaultPlugins, turn_system::TurnSystemPlugin))
|
.add_plugins((DefaultPlugins, turns::TurnSystemPlugin, card::CardPlugin))
|
||||||
.add_systems(Startup, setup)
|
.add_systems(Startup, setup)
|
||||||
.run();
|
.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
fn setup(asset_server: Res<AssetServer>, mut commands: Commands) {
|
fn setup(asset_server: Res<AssetServer>, mut commands: Commands) {
|
||||||
let background = asset_server.load("sprites/field.png");
|
let background = asset_server.load::<Image>("sprites/field.png");
|
||||||
|
|
||||||
commands.spawn(Camera2d);
|
commands.spawn(Camera2d);
|
||||||
|
|
||||||
commands.spawn((
|
commands.spawn((
|
||||||
Sprite::from_image(background),
|
Sprite::from_image(background),
|
||||||
Transform::from_xyz(0., 0., 0.),
|
Transform::from_xyz(0., 0., -100.),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,10 @@ impl Plugin for TurnSystemPlugin {
|
||||||
.add_systems(OnEnter(TurnState::PreEffectProcess), pre_effect_setup)
|
.add_systems(OnEnter(TurnState::PreEffectProcess), pre_effect_setup)
|
||||||
.add_systems(OnEnter(TurnState::UnitProcess), unit_setup)
|
.add_systems(OnEnter(TurnState::UnitProcess), unit_setup)
|
||||||
.add_systems(OnEnter(TurnState::PostEffectProcess), post_effect_setup)
|
.add_systems(OnEnter(TurnState::PostEffectProcess), post_effect_setup)
|
||||||
.add_systems(Update, process_busy_turnables);
|
.add_systems(
|
||||||
|
Update,
|
||||||
|
process_busy_turnables.run_if(not(in_state(TurnState::Turn))),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue