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;
- }
+ }*/
}
}
}