diff options
author | Justin Wernick <justin@worthe-it.co.za> | 2022-04-19 21:29:18 +0200 |
---|---|---|
committer | Justin Wernick <justin@worthe-it.co.za> | 2022-04-19 21:29:18 +0200 |
commit | 4d1edc899a86791ec57c0d3b2b3d7427f138463f (patch) | |
tree | ed1c7031c54d8f3a3897081c4a1040ace9d8f4ae /2019-worms/src/geometry/point.rs | |
parent | 01a849c6b26afd076989f645c6153d8ce1422281 (diff) | |
parent | 3f5492b2bb67326be43cd7c5ba02ccf0ba1ae0e3 (diff) |
Merge branch 'worms-main'
Diffstat (limited to '2019-worms/src/geometry/point.rs')
-rw-r--r-- | 2019-worms/src/geometry/point.rs | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/2019-worms/src/geometry/point.rs b/2019-worms/src/geometry/point.rs new file mode 100644 index 0000000..1ab9b36 --- /dev/null +++ b/2019-worms/src/geometry/point.rs @@ -0,0 +1,37 @@ +use crate::geometry::vec::*; + +use std::ops::*; + +#[derive(Debug, Default, Clone, Copy, Hash, PartialEq, Eq)] +pub struct Point2d { + pub x: i8, + pub y: i8, +} + +impl Point2d { + pub fn new(x: i8, y: i8) -> Point2d { + Point2d { x, y } + } +} + +impl Add<Vec2d> for Point2d { + type Output = Self; + + fn add(self, other: Vec2d) -> Self { + Point2d { + x: self.x.saturating_add(other.x), + y: self.y.saturating_add(other.y), + } + } +} + +impl Sub for Point2d { + type Output = Vec2d; + + fn sub(self, other: Self) -> Vec2d { + Vec2d { + x: self.x.saturating_sub(other.x), + y: self.y.saturating_sub(other.y), + } + } +} |