~starkingdoms/starkingdoms

21fd393336a65e8082f330a5f85d0801b374bd83 — ghostly_zsh 8 months ago 8dd63f0
mining button
M crates/client/src/networking/mod.rs => crates/client/src/networking/mod.rs +1 -0
@@ 75,6 75,7 @@ pub fn send_packet_event(packet: Packet, world: &mut 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),

M crates/client/src/ui/mod.rs => crates/client/src/ui/mod.rs +14 -7
@@ 3,14 3,14 @@ mod widgets;

use std::f32;

use crate::components::{Camera, Chat, Menu, Player, PlayerResources, SendPacket, Transform};
use crate::components::{Camera, Chat, Menu, Player, PlayerResources, SendPacket, ServerId, Transform};
use crate::ui::widgets::{progress_bar, RichTextExt};
use bevy_ecs::entity::Entity;
use bevy_ecs::event::Events;
use bevy_ecs::prelude::With;
use bevy_ecs::world::World;
use egui::{Align, Align2, CursorIcon, Layout, Margin, Order, RichText, Shadow, Visuals};
use starkingdoms_common::packet::{Packet, SendMessagePacket};
use starkingdoms_common::packet::{Packet, RequestMiningPacket, SendMessagePacket};

pub fn init_ui(ctx: egui::Context) {
    // set colors


@@ 56,7 56,7 @@ pub fn draw_ui(
) {
    draw_status_bar(ctx, world);
    draw_chat(ctx, world, send_packet_events);
    draw_crafting(ctx, world);
    draw_crafting(ctx, world, send_packet_events);
}

pub fn draw_status_bar(ctx: &egui::Context, world: &mut World) {


@@ 149,10 149,10 @@ pub fn draw_chat(
        });
}

pub fn draw_crafting(ctx: &egui::Context, world: &mut World) {
    let mut menus = world.query_filtered::<(Entity, &Transform), With<Menu>>();
pub fn draw_crafting(ctx: &egui::Context, world: &mut World, send_packet_events: &mut Events<SendPacket>) {
    let mut menus = world.query_filtered::<(Entity, &ServerId, &Transform), With<Menu>>();
    let camera = world.resource::<Camera>();
    for (entity, menu) in menus.iter(world) {
    for (entity, server_id, menu) in menus.iter(world) {
        egui::Window::new("Crafting")
            .id(format!("Crafting{}", entity.index()).into())
            .pivot(Align2::LEFT_BOTTOM)


@@ 160,6 160,13 @@ pub fn draw_crafting(ctx: &egui::Context, world: &mut World) {
                (menu.translation.x + camera.x) * camera.zoom + camera.width as f32 / 2.0,
                (menu.translation.y + camera.y) * camera.zoom + camera.height as f32 / 2.0,
            ))
            .show(ctx, |ui| {});
            .show(ctx, |ui| {
                if ui.button("Mining").clicked() {
                    send_packet_events.send(SendPacket(Packet::RequestMining(RequestMiningPacket {
                        id: server_id.0,
                        is_mining: true,
                    })));
                }
            });
    }
}

M crates/common/src/packet.rs => crates/common/src/packet.rs +13 -0
@@ 75,6 75,7 @@ pub enum ButtonType {
    Right,
}

// serverbound
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
#[cfg_attr(feature = "bevy", derive(::bevy_ecs::event::Event))]
pub struct ClientLoginPacket {


@@ 114,8 115,16 @@ pub struct RequestSavePacket {

#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
#[cfg_attr(feature = "bevy", derive(::bevy_ecs::event::Event))]
pub struct RequestMiningPacket {
    pub id: u32,
    pub is_mining: bool,
}

#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
#[cfg_attr(feature = "bevy", derive(::bevy_ecs::event::Event))]
pub struct SpecialDisconnectPacket {}

// clientbound
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
#[cfg_attr(feature = "bevy", derive(::bevy_ecs::event::Event))]
pub struct LoginResponsePacket {


@@ 216,6 225,7 @@ pub enum Packet {
    PlayerInput(PlayerInputPacket),
    PlayerMouseInput(PlayerMouseInputPacket),
    RequestSave(RequestSavePacket),
    RequestMining(RequestMiningPacket),
    _SpecialDisconnect(SpecialDisconnectPacket),

    // clientbound


@@ 237,12 247,15 @@ pub enum Packet {

#[cfg(feature = "bevy")]
pub fn register_packet_events(world: &mut bevy_ecs::prelude::World) {
    // serverbound
    bevy_ecs::event::EventRegistry::register_event::<ClientLoginPacket>(world);
    bevy_ecs::event::EventRegistry::register_event::<SendMessagePacket>(world);
    bevy_ecs::event::EventRegistry::register_event::<PlayerInputPacket>(world);
    bevy_ecs::event::EventRegistry::register_event::<PlayerMouseInputPacket>(world);
    bevy_ecs::event::EventRegistry::register_event::<RequestSavePacket>(world);
    bevy_ecs::event::EventRegistry::register_event::<RequestMiningPacket>(world);
    bevy_ecs::event::EventRegistry::register_event::<SpecialDisconnectPacket>(world);
    // clientbound
    bevy_ecs::event::EventRegistry::register_event::<LoginResponsePacket>(world);
    bevy_ecs::event::EventRegistry::register_event::<PlayerListPacket>(world);
    bevy_ecs::event::EventRegistry::register_event::<PlanetPositionsPacket>(world);

M crates/server/src/player/mod.rs => crates/server/src/player/mod.rs +9 -2
@@ 20,8 20,7 @@ use player_mouse_input::{attach_or_detach, mouse_picking};
use request_save::request_save;
use send_message::send_message;
use starkingdoms_common::packet::{
    ClientLoginPacket, PlayerInputPacket, PlayerMouseInputPacket, RequestSavePacket,
    SendMessagePacket,
    ClientLoginPacket, PlayerInputPacket, PlayerMouseInputPacket, RequestMiningPacket, RequestSavePacket, SendMessagePacket
};
use starkingdoms_common::{packet::Packet, PartType as c_PartType};



@@ 228,6 227,14 @@ pub fn on_message(
                        }
                    }
                }
                Packet::RequestMining(RequestMiningPacket { id, is_mining }) => {
                    match mining_query.get_mut(Entity::from_raw(id)) {
                        Ok(mut mining) => {
                            mining.0 = is_mining;
                        }
                        Err(e) => {}
                    }
                }
                _ => continue,
            }
        }