diff options
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 32 |
1 files changed, 23 insertions, 9 deletions
diff --git a/src/main.rs b/src/main.rs index d7c76bc..a50eec1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,6 +6,7 @@ mod eguictx; mod vertex; mod texture; mod solar_system; +mod fleet; mod known_stars; mod timeman; mod ntree; @@ -23,6 +24,7 @@ use winit::window::WindowId; use solar_system::*; +use crate::fleet::FleetsManager; use crate::timeman::TimeMan; use crate::window::GameWindow; @@ -41,7 +43,8 @@ struct SystemicApp struct GameState { timeman: TimeMan, - solar_systems: Vec<SolarSystem> + solar_systems: Vec<SolarSystem>, + fleets: FleetsManager } impl SystemicApp @@ -63,23 +66,31 @@ impl GameState pub fn new() -> Self { let timeman = TimeMan::new(0); - let mut sol_system = match SolarSystem::new_from_known_star(0, "sol") + let sol_system = match SolarSystem::new_from_known_star(0, "sol") { Ok(system) => system, Err(e) => panic!("Unable to create sol system : {}", e) }; - sol_system.tick(timeman.seconds()); - Self { timeman: timeman, - solar_systems: vec![ sol_system ] + solar_systems: vec![ sol_system ], + fleets: FleetsManager::new() } } pub fn solar_systems(&self) -> &[SolarSystem] { self.solar_systems.as_slice() } + pub fn solar_systems_mut(&mut self) -> &mut [SolarSystem] + { self.solar_systems.as_mut_slice() } + + pub fn fleets(&self) -> &FleetsManager + { &self.fleets } + + pub fn fleets_mut(&mut self) -> &mut FleetsManager + { &mut self.fleets } + pub fn timeman(&self) -> &TimeMan { &self.timeman } @@ -90,10 +101,13 @@ impl GameState &mut self, _dt: Duration) { - let ticks = self.timeman.update(); - ticks.iter().for_each(|time| { - self.solar_systems.iter_mut().for_each(|system| { system.tick(*time) }); - }); + let time_then = self.timeman.update(); + if time_then == self.timeman.seconds() { return; } + + self.fleets.tick( + &self.solar_systems, + time_then, + self.timeman.seconds()); } } |
