From 1158be88d364f10e4348e66817906c2eeab7182e Mon Sep 17 00:00:00 2001 From: ghostlyzsh Date: Thu, 4 Apr 2024 16:17:17 -0500 Subject: [PATCH] detaching and breaking off energy working --- server/src/main.rs | 42 ++++++++++++++++------- starkingdoms-client/src/pages/Play.svelte | 11 ++++-- 2 files changed, 38 insertions(+), 15 deletions(-) diff --git a/server/src/main.rs b/server/src/main.rs index 9276ecf803febe9affa4ef4066b5dd23cd6c6d35..d8d86fc1f4915000e74f488b4aa734c8b2b3aedc 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -35,7 +35,10 @@ use component::*; use hmac::{Hmac, Mac}; use jwt::VerifyWithKey; use packet::*; -use part::{HEARTY_CAPACITY, HEARTY_THRUST_ENERGY, LANDING_THRUSTER_CAPACITY, LANDING_THRUSTER_ENERGY, LANDING_THRUSTER_FORCE}; +use part::{ + HEARTY_CAPACITY, HEARTY_THRUST_ENERGY, LANDING_THRUSTER_CAPACITY, LANDING_THRUSTER_ENERGY, + LANDING_THRUSTER_FORCE, +}; use rand::Rng; use serde::{Deserialize, Serialize}; use sha2::Sha256; @@ -49,8 +52,8 @@ pub mod component; pub mod macros; pub mod mathutil; pub mod packet; -pub mod ws; pub mod part; +pub mod ws; const CLIENT_SCALE: f32 = 50.0; @@ -641,7 +644,7 @@ fn on_message( if attached_query.contains(select) { let module = attached_query.get(select).unwrap(); let attach = module.3.clone(); - detach_recursive( + let lost_energy_capacity = detach_recursive( &mut commands, module.0, &mut attached_query, @@ -655,6 +658,9 @@ fn on_message( attached_query.get_mut(sub_entity).unwrap(); suspension.2.translation = vec3(x, y, 0.); } + let mut player = player_query.get_mut(entity).unwrap().1; + player.energy_capacity -= lost_energy_capacity; + player.energy = std::cmp::min(player.energy, player.energy_capacity); break; } if attach_on_module_tree( @@ -1038,14 +1044,15 @@ fn detach_recursive( ), Without, >, -) { +) -> u32 { + let mut energy = 0; let f_attach = if attached_query.contains(this) { attached_query.get(this).unwrap().3.clone() } else { player_query.get(this).unwrap().4.clone() }; for child in f_attach.children.iter().flatten() { - detach_recursive(commands, *child, attached_query, player_query); + energy += detach_recursive(commands, *child, attached_query, player_query); } let (entity, part_type, attach, mut flags) = if attached_query.contains(this) { let (entity, part_type, _, attach, _, _, _, flags) = attached_query.get_mut(this).unwrap(); @@ -1054,6 +1061,7 @@ fn detach_recursive( let (entity, _, _, _, attach, part_flags) = player_query.get_mut(this).unwrap(); (entity, &PartType::Hearty, attach, part_flags) }; + energy += capacity!(*part_type); commands.entity(entity).remove::(); flags.attached = false; if *part_type == PartType::LandingThrusterSuspension { @@ -1086,6 +1094,7 @@ fn detach_recursive( } } } + energy } fn attach_on_module_tree( @@ -1571,13 +1580,17 @@ fn break_modules( detach_list.push((entity, *part_type, attach.clone())); } } - for (entity, _part_type, _attach) in detach_list { - detach_recursive( + for (entity, _part_type, attach) in detach_list { + let lost_energy_capacity = detach_recursive( &mut commands, entity, &mut attached_query, &mut player_query, ); + let id = attach.associated_player.unwrap(); + let mut player = player_query.get_mut(id).unwrap().1; + player.energy_capacity -= lost_energy_capacity; + player.energy = std::cmp::min(player.energy, player.energy_capacity); } } @@ -1703,14 +1716,17 @@ fn despawn_module_tree( } } -fn send_player_energy( - player_query: Query<&Player>, - mut packet_send: EventWriter, -) { +fn send_player_energy(player_query: Query<&Player>, mut packet_send: EventWriter) { for player in &player_query { - let packet = Packet::EnergyUpdate { amount: player.energy, max: player.energy_capacity }; + let packet = Packet::EnergyUpdate { + amount: player.energy, + max: player.energy_capacity, + }; - packet_send.send(WsEvent::Send { to: player.addr, message: packet.into() }); + packet_send.send(WsEvent::Send { + to: player.addr, + message: packet.into(), + }); } } diff --git a/starkingdoms-client/src/pages/Play.svelte b/starkingdoms-client/src/pages/Play.svelte index a003a1db10d0ea45b14c1e8e14037e03d34b24f6..2dde85b6f07d571d15d16f401df827dc0cb99c8d 100644 --- a/starkingdoms-client/src/pages/Play.svelte +++ b/starkingdoms-client/src/pages/Play.svelte @@ -157,8 +157,15 @@ Energy: - -
+ +
+