/*
* This file is part of laurelin_client
* Copyright (C) 2023 Jonni Liljamo <jonni@liljamo.com>
*
* 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,
}
}
}