use crate::shared::*; #[derive(Bundle)] pub struct PlayerBundle { id: PlayerId, position: PlayerPosition, color: PlayerColor, imperative: Imperative, cooldown: Cooldown, health: Health, champion: Champion, replicate: Replicate, } impl PlayerBundle { pub fn new(id: ClientId, position: Vec2, color: Color) -> Self { let mut replicate = Replicate { replication_group: ReplicationGroup::default().set_priority(10.), ..Default::default() }; replicate.enable_replicate_once::(); replicate.enable_replicate_once::(); replicate.target::(NetworkTarget::Single(id)); replicate.target::(NetworkTarget::Single(id)); PlayerBundle { id: PlayerId(id), position: PlayerPosition(position), color: PlayerColor(color), imperative: Imperative::Idle, cooldown: Cooldown::default(), health: Health::default(), champion: Champion::default(), replicate, } } } #[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);