// ---------- Region ----------
#[derive(Clone,Debug,Serialize,Deserialize)]
-pub enum Region<T> {
+pub enum RegionC<T> {
Rectangle(AreaC<T>),
}
+pub type Region = RegionC<Coord>;
-impl<T> Region<T> {
+impl<T> RegionC<T> {
pub fn contains(&self, pos: PosC<T>) -> bool where T: PartialOrd {
- use Region::*;
+ use RegionC::*;
match &self {
Rectangle(a) => a.contains(pos),
}
}
- pub fn overlaps(&self, other: &Region<T>) -> bool where T: PartialOrd {
- use Region::*;
+ pub fn overlaps(&self, other: &RegionC<T>) -> bool where T: PartialOrd {
+ use RegionC::*;
match (self, other) {
(Rectangle(a), Rectangle(b)) => a.overlaps(b)
}
}
pub fn empty() -> Self where T: Copy + num_traits::Zero + num_traits::One {
- Region::Rectangle(AreaC::empty())
+ RegionC::Rectangle(AreaC::empty())
}
}
desc: Html,
uos: &'r [UoDescription],
moveable: PieceMoveable,
- occregion: Option<&'r Region<Coord>>,
+ occregion: Option<&'r Region>,
}
#[derive(Serialize,Debug)]
#[derive(Clone,Debug,Serialize,Deserialize)]
pub struct Occultation {
- region: Region<Coord>, // automatically affect pieces here
+ region: Region, // automatically affect pieces here
occulter: PieceId, // kept in synch with PieceOccult::active
notches: Notches, // kept in synch with PieceOccult::passive
ppiece_use_size: Pos, // taken from first piece
#[throws(IE)]
pub fn active_region<'r>(&'r self, goccults: &'r GameOccults)
- -> Option<&'r Region<Coord>> {
+ -> Option<&'r Region> {
self.active_occ(goccults)?.map(
|occ| &occ.region
)
ipieces: &IPieces,
ioccults: &IOccults,
to_recalculate: &mut ToRecalculate,
- region: Region<Coord>,
+ region: Region,
occulter: PieceId,
views: OccultationViews,
) -> Vec<(PieceId, PieceUpdateOps)> {
}
#[throws(CoordinateOverflow)]
- pub fn region(&self, centre: Pos) -> Region<Coord> {
+ pub fn region(&self, centre: Pos) -> Region {
Region::Rectangle(self.area(centre)?)
}
}
pub pinned: bool,
pub moveable: PieceMoveable,
pub uos: Vec<UoDescription>,
- pub occregion: Option<Region<Coord>>,
+ pub occregion: Option<Region>,
}
#[derive(Debug,Copy,Clone,Serialize,Deserialize,Eq)]
use otter_base::imports::serde_json;
-use otter_base::geometry::{PosC,Region};
+use otter_base::geometry::{PosC,RegionC};
use otter_base::zcoord;
use otter_base::misc as base_misc;
use zcoord::{Mutable,ZCoord};
type Number = f64;
#[wasm_bindgen]
-pub struct RegionList(HashMap<String, Region<Number>>);
+pub struct RegionList(HashMap<String, RegionC<Number>>);
#[wasm_bindgen]
pub fn empty_region_list() -> RegionList { RegionList(default()) }
{
let piece = piece .as_string().ok_or(BadRegionArguments).e()?;
let region = region.as_string().ok_or(BadRegionArguments).e()?;
- let region: Region<Number> = serde_json::from_str(®ion)
+ let region: RegionC<Number> = serde_json::from_str(®ion)
.map_err(|_| BadRegionArguments).e()?;
self.0.insert(piece, region);
Ok(())