summaryrefslogtreecommitdiff
path: root/src/engine/command.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/command.rs')
-rw-r--r--src/engine/command.rs25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/engine/command.rs b/src/engine/command.rs
index d026bca..764e3cb 100644
--- a/src/engine/command.rs
+++ b/src/engine/command.rs
@@ -1,4 +1,5 @@
use std::fmt;
+use super::constants::*;
use super::geometry::Point;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
@@ -18,6 +19,19 @@ impl fmt::Display for Command {
}
}
+impl Command {
+ pub fn cant_build_yet(&self, energy: u16) -> bool {
+ use self::Command::*;
+
+ match self {
+ Nothing => false,
+ Build(_, b) => b.cant_build_yet(energy),
+ IronCurtain => energy < IRON_CURTAIN_PRICE
+ }
+ }
+}
+
+
#[repr(u8)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum BuildingType {
@@ -38,4 +52,15 @@ impl BuildingType {
if id <= 4 && id != 3 { Some(unsafe { mem::transmute(id) }) } else { None }
}
+ pub fn cant_build_yet(&self, energy: u16) -> bool {
+ use self::BuildingType::*;
+
+ let required = match self {
+ Defence => DEFENCE_PRICE,
+ Attack => MISSILE_PRICE,
+ Energy => ENERGY_PRICE,
+ Tesla => TESLA_PRICE
+ };
+ energy < required
+ }
}