From 2e454d889137d077596fd9b6971aca61617a4b48 Mon Sep 17 00:00:00 2001 From: ghostlyzsh Date: Fri, 2 Aug 2024 17:50:09 -0500 Subject: [PATCH] module counts on load save, committing so i can work on other things --- kabel/src/lexer.rs | 4 ++-- server/src/main.rs | 1 - server/src/module/save.rs | 28 ++++++++++++++++++++++++---- server/src/player/client_login.rs | 2 +- 4 files changed, 27 insertions(+), 8 deletions(-) diff --git a/kabel/src/lexer.rs b/kabel/src/lexer.rs index 0971b4458078d9d5f41e30757c083ae0665e5ec2..2e1b3f8caf0e462a2b5533ed1c7c84cc299ab805 100644 --- a/kabel/src/lexer.rs +++ b/kabel/src/lexer.rs @@ -161,7 +161,7 @@ impl Lexer { '"' => { let mut contents = String::new(); while self.read_char() != '"' { - if self.c == '\0'{ + if self.c == '\0' { self.errors.push(KabelError::new( ErrorKind::UnexpectedEof, "File ended before closing quote".to_string(), @@ -225,7 +225,7 @@ impl Lexer { true } - pub fn read_char(&mut self) -> char{ + pub fn read_char(&mut self) -> char { if self.current >= self.input.len() { self.c = '\0'; // EOF return self.c; diff --git a/server/src/main.rs b/server/src/main.rs index 83537eb959ffe21fd22f49400bd7fbb410129dd5..86650f95d3b0e49aa53c19d8319246641845e273 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -28,7 +28,6 @@ use module::component::{ Attach, CanAttach, LooseAttach, ModuleTimer, PartBundle, PartFlags, PartType, }; use packet::*; -use planet::PlanetType; use serde::{Deserialize, Serialize}; use std::fs; diff --git a/server/src/module/save.rs b/server/src/module/save.rs index 12bebc98e32abd74e9b2a7fd412f8781b5fddd68..08e342edad20ca5c0bf7c3787964dc06206544fb 100644 --- a/server/src/module/save.rs +++ b/server/src/module/save.rs @@ -51,8 +51,9 @@ pub fn load_savefile( Without, >, player_comp: &mut Player, -) -> [Option; 4] { +) -> ([Option; 4], HashMap) { let mut ret = [None, None, None, None]; + let mut module_count = HashMap::new(); for (i, child) in children.iter().enumerate() { if let Some(child) = child { let part_type = PartType::from(child.part_type); @@ -102,7 +103,7 @@ pub fn load_savefile( }; let children = if part_type != PartType::LandingThruster { - load_savefile( + let (children, count) = load_savefile( commands, transform, player_id, @@ -112,10 +113,29 @@ pub fn load_savefile( part_query, player_query, player_comp, - ) + ); + for (part_type, count) in count { + match module_count.get_mut(&part_type) { + Some(old_count) => { + *old_count += count; + } + None => { + module_count.insert(part_type, count); + } + } + } + children } else { [None, None, None, None] }; + match module_count.get_mut(&part_type) { + Some(old_count) => { + *old_count += 1; + } + None => { + module_count.insert(part_type, 1); + } + } let mut module = commands.entity(module_id); @@ -220,7 +240,7 @@ pub fn load_savefile( player_comp.energy_capacity += capacity!(part_type); } } - ret + (ret, module_count) } pub fn construct_save_data( diff --git a/server/src/player/client_login.rs b/server/src/player/client_login.rs index 496be1164c75125e87149f15ad618c59f4cd93e1..2094cd233e926a2f62ef0b986f8367f1393f99b5 100644 --- a/server/src/player/client_login.rs +++ b/server/src/player/client_login.rs @@ -157,7 +157,7 @@ pub fn load_save( // HEY! GHOSTLY! THIS SAVE FILE IS VALID! PLEASE LOAD IT! // THANKS! - let children = load_savefile( + let (children, module_counts) = load_savefile( commands, transform, id,