/* * This file is part of laurelin_client * Copyright (C) 2023 Jonni Liljamo * * Licensed under GPL-3.0-only. * See LICENSE for licensing information. */ use bevy::prelude::*; use bevy_rapier3d::prelude::*; use crate::game_status::Card; pub struct CardPlugin; impl Plugin for CardPlugin { fn build(&self, app: &mut App) { } } // NOTE: kind of like using enum variants pub mod visual_card_kind { use bevy::prelude::*; #[derive(Component)] pub struct Normal; #[derive(Component)] pub struct Supply(pub usize); } #[derive(Component)] pub struct VisualCard { pub card: Card, } impl VisualCard { pub const WIDTH: f32 = 0.35; } impl Default for VisualCard { fn default() -> Self { Self { card: Card { name: "".to_string(), short_details: vec![], long_details: vec![], cost: 0, actions: vec![] } } } } #[derive(Bundle)] pub struct VisualCardBundle { pub visual_card: VisualCard, pub transform: Transform, pub global_transform: GlobalTransform, pub collider: Collider, pub rigid_body: RigidBody, } impl Default for VisualCardBundle { fn default() -> Self { Self { visual_card: VisualCard::default(), transform: Transform { translation: Vec3 { x: 0., y: 0., z: 0. }, /// defaults to being rotated 90 degress on X, so flat on the /// table. rotation: Quat::from_euler(EulerRot::XYZ, -1.571, 0., 0.), ..Default::default() }, global_transform: GlobalTransform::default(), collider: Collider::cuboid(VisualCard::WIDTH, VisualCard::WIDTH * 1.75, 0.01), rigid_body: RigidBody::Dynamic, } } }