use std::collections::HashMap; use crate::components::{ Camera, Chat, Menu, Part, Player, PlayerResources, RecvPacket, SendPacket, ServerId, SpriteBundle, Texture, Transform, }; use bevy_ecs::{ entity::Entity, event::Events, query::{QuerySingleError, With}, world::World, }; use bevy_ecs::prelude::Event; use nalgebra::{Rotation2, Scale3, Translation3}; use starkingdoms_common::packet::Packet::{ DespawnPart, EnergyUpdate, LoginResponse, Message, OpenCraftingUi, PartPositions, PlanetPositions, PlayerLeave, PlayerList, SpawnPart, SpawnPlayer, }; use starkingdoms_common::packet::{DespawnPartPacket, EnergyUpdatePacket, LoginResponsePacket, MessagePacket, OpenCraftingUiPacket, Packet, PartPositionsPacket, PlanetPositionsPacket, PlayerLeavePacket, PlayerListPacket, SpawnPartPacket, SpawnPlayerPacket}; use starkingdoms_common::{PartType, PlanetType}; pub mod websocket; pub mod handlers; fn 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() } } 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::_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), 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), } }