summaryrefslogtreecommitdiffstats
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs32
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());
}
}