use crate::protocol::Replicate; use crate::shared::champion::*; use crate::shared::cooldown::*; use crate::shared::health::*; use crate::shared::imperative::*; use bevy::prelude::*; use lightyear::prelude::*; use serde::Deserialize; use serde::Serialize; use std::default::Default; pub mod champion; pub mod cooldown; pub mod health; pub mod imperative; pub mod projectile; pub const KEY: [u8; 32] = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ]; pub const PLAYER_RADIUS: f32 = 10.; pub const PROTOCOL_ID: u64 = 0; pub const SERVER_PORT: u16 = 16384; #[derive(Bundle)] pub struct PlayerBundle { id: PlayerId, position: PlayerPosition, color: PlayerColor, replicate: Replicate, imperative: Imperative, cooldown: Cooldown, health: Health, champion: Champion, } #[derive(Component, Message, Serialize, Deserialize, Clone, Copy, Debug, PartialEq)] pub struct PlayerId(pub ClientId); #[derive(Component, Message, Serialize, Deserialize, Clone, Copy, Debug, PartialEq)] pub struct PlayerPosition(pub Vec2); #[derive(Component, Message, Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct PlayerColor(pub Color); impl PlayerBundle { pub fn new(id: ClientId, position: Vec2, color: Color) -> Self { PlayerBundle { id: PlayerId(id), position: PlayerPosition(position), color: PlayerColor(color), replicate: Replicate::default(), imperative: Imperative::Idle, cooldown: Cooldown::default(), health: Health::default(), champion: Champion::default(), } } }