use bevy_ecs::prelude::Event; use bevy_ecs::{event::Events, world::World}; use starkingdoms_common::packet::Packet; use starkingdoms_common::packet::Packet::{ DespawnPart, EnergyUpdate, LoginResponse, Message, OpenCraftingUi, PartPositions, PlanetPositions, PlayerLeave, PlayerList, SpawnPart, SpawnPlayer, }; use starkingdoms_common::{PartType, PlanetType}; pub mod handlers; pub mod websocket; fn part_texture_name(part_type: PartType, attached: bool) -> String { use PartType::*; if attached { match part_type { Placeholder => panic!("AHHHH PLACEHOLDER PANIC"), Hearty => "hearty.svg", Chassis => "chassis.svg", Hub => "hub_on.svg", LandingThruster => "landingthruster_on.svg", LandingThrusterSuspension => "landingleg.svg", } .to_string() } else { match part_type { Placeholder => panic!("AHHHH PLACEHOLDER PANIC"), Hearty => "hearty.svg", Chassis => "chassis.svg", Hub => "hub_off.svg", LandingThruster => "landingthruster_off.svg", LandingThrusterSuspension => "landingleg.svg", } .to_string() } } fn planet_texture_name(planet_type: PlanetType) -> String { match planet_type { /*PlanetType::Sun => "sun.svg", PlanetType::Mercury => "mercury.svg", PlanetType::Venus => "venus.svg", PlanetType::Earth => "earth.svg", PlanetType::Moon => "moon.svg", PlanetType::Mars => "mars.svg", PlanetType::Jupiter => "jupiter.svg", PlanetType::Saturn => "saturn.svg", PlanetType::Uranus => "uranus.svg", PlanetType::Neptune => "neptune.svg", PlanetType::Pluto => "pluto.svg",*/ PlanetType::Sun => "sun.svg", PlanetType::Mercury => "moon.svg", PlanetType::Venus => "venus.svg", PlanetType::Earth => "earth.svg", PlanetType::Moon => "moon.svg", PlanetType::Mars => "mars.svg", PlanetType::Jupiter => "jupiter.svg", PlanetType::Saturn => "sun.svg", PlanetType::Uranus => "venus.svg", PlanetType::Neptune => "mars.svg", PlanetType::Pluto => "earth.svg", } .to_string() } pub fn send_event(e: T, world: &mut World) { let mut events = world.resource_mut::>(); events.send(e); } pub fn send_packet_event(packet: Packet, world: &mut World) { match packet { Packet::ClientLogin(e) => send_event(e, world), Packet::SendMessage(e) => send_event(e, world), Packet::PlayerInput(e) => send_event(e, world), Packet::PlayerMouseInput(e) => send_event(e, world), Packet::RequestSave(e) => send_event(e, world), Packet::RequestMining(e) => send_event(e, world), Packet::_SpecialDisconnect(e) => send_event(e, world), LoginResponse(e) => send_event(e, world), SpawnPlayer(e) => send_event(e, world), PlayerList(e) => send_event(e, world), PlanetPositions(e) => send_event(e, world), Packet::SpawnPlanet(e) => send_event(e, world), PartPositions(e) => send_event(e, world), SpawnPart(e) => send_event(e, world), DespawnPart(e) => send_event(e, world), PlayerLeave(e) => send_event(e, world), Message(e) => send_event(e, world), Packet::SaveEligibility(e) => send_event(e, world), Packet::SaveData(e) => send_event(e, world), EnergyUpdate(e) => send_event(e, world), OpenCraftingUi(e) => send_event(e, world), } }