~starkingdoms/starkingdoms

5704afa8852d493b8424b186d3390ab2b9a8aefd — ghostly_zsh 8 months ago dcd0550
open crafting ui with mouse
M crates/client/src/networking/mod.rs => crates/client/src/networking/mod.rs +12 -0
@@ 203,6 203,18 @@ pub fn process_packets(
                r.fuel_amount = *amount;
                r.fuel_max = *max;
            }
            OpenCraftingUi { id } => {
                let mut query = world.query::<(Entity, &ServerId)>();
                let mut matching_id = None;
                for (entity, server_id) in query.iter(world) {
                    if server_id.0 == *id {
                        matching_id = Some(entity);
                    }
                }
                if let Some(id) = matching_id {
                    world.entity_mut(id).insert(Menu);
                }
            }
            Message { message_type, actor, content } => {
                let mut chat = world.get_resource_mut::<Chat>().unwrap();
                chat.messages.push(format!("{}: {}", actor.clone(), content.clone()));

M crates/client/src/rendering/mod.rs => crates/client/src/rendering/mod.rs +13 -1
@@ 43,7 43,7 @@ use winit::{
    window::{Window, WindowAttributes},
};

use crate::components::{Camera, Player, RecvPacket, SendPacket, Texture, Transform};
use crate::components::{Camera, Menu, Player, RecvPacket, SendPacket, Texture, Transform};
use crate::networking::process_packets;
use crate::networking::ws::Ws;
use crate::ui::{draw_ui, init_ui};


@@ 453,6 453,18 @@ impl ApplicationHandler for App {
                    MouseButton::Right => ButtonType::Right,
                    _ => return,
                };

                if state.is_pressed() {
                    let mut menu_query = self.world.query_filtered::<Entity, With<Menu>>();
                    let mut menus = Vec::new();
                    for menu in menu_query.iter(&self.world) {
                        menus.push(menu);
                    }
                    for menu in menus {
                        self.world.entity_mut(menu).remove::<Menu>();
                    }
                }

                let camera = self.world.get_resource::<Camera>().unwrap();
                let view = camera.to_cursor_matrix();
                let pos =

M crates/common/Cargo.toml => crates/common/Cargo.toml +0 -8
@@ 7,16 7,8 @@ edition = "2021"

[dependencies]
serde = { version = "1", features = ["derive"] }
<<<<<<< HEAD:protocol/Cargo.toml
log = "0.4.19"

[build-dependencies]
protobuf-codegen = "3"
protoc-rust = "^2.0"
=======
serde_json = "1"
rmp-serde = "1"
hmac = "0.12"
sha2 = "0.10"
base64 = "0.21"
>>>>>>> rust-rendering-2:crates/common/Cargo.toml

M crates/common/src/packet.rs => crates/common/src/packet.rs +3 -0
@@ 147,6 147,9 @@ pub enum Packet {
        amount: u32,
        max: u32,
    },
    OpenCraftingUi {
        id: u32,
    },
}

impl From<Packet> for String {

M crates/server/src/player/mod.rs => crates/server/src/player/mod.rs +1 -0
@@ 193,6 193,7 @@ pub fn on_message(
                                y,
                                &button,
                                entity,
                                &mut event_queue,
                            );
                        }
                    }

M crates/server/src/player/player_mouse_input.rs => crates/server/src/player/player_mouse_input.rs +11 -4
@@ 2,9 2,9 @@ use bevy::{math::vec3, prelude::*};
use bevy_rapier2d::prelude::*;

use crate::{
    crafting::components::IsMining, module::component::{Attach, CanAttach, LooseAttach, PartFlags, PartType}, planet::PlanetType
    crafting::components::IsMining, module::component::{Attach, CanAttach, LooseAttach, PartFlags, PartType}, planet::PlanetType, ws::{PacketMessageConvert, WsEvent}
};
use starkingdoms_common::{packet::ButtonType, PartType as c_PartType};
use starkingdoms_common::{packet::{ButtonType, Packet}, PartType as c_PartType};

use super::component::Player;



@@ 126,6 126,7 @@ pub fn mouse_picking(
    y: f32,
    button: &ButtonType,
    entity: Entity,
    send_events: &mut Vec<WsEvent>,
) {
    for (m_entity, part_type, transform, m_attach, _velocity, _, _, _) in attached_query.iter() {
        if *part_type == c_PartType::LandingThrusterSuspension.into() {


@@ 184,10 185,16 @@ pub fn mouse_picking(

        if bound[0] < x && x < bound[1] && bound[2] < y && y < bound[3] {
            if *button == ButtonType::Right {
                send_events.push(WsEvent::Send {
                    to: q_player.addr,
                    message: Packet::OpenCraftingUi {
                        id: entity.index(),
                    }.into_message(),
                });
                // toggle mining
                if let Ok(mut is_mining) = mining_query.get_mut(entity) {
                /*if let Ok(mut is_mining) = mining_query.get_mut(entity) {
                    is_mining.0 = !is_mining.0;
                }
                }*/
            }
        }
    }