dasharray,
desc: new_desc,
});
- let centre = gpc.pos;
let (region, views) = (||{
dbgc!("claiming region");
- let offset = (self.shape.outline.xy * 0.5)?;
- let offset = offset.try_map(
- |c| c.floor().to_i32().ok_or(CoordinateOverflow)
- )?;
- let region = AreaC(
- [-1,1].iter().map(|&signum| Ok::<_,IE>({
- (centre + (offset * signum)?)?
- }))
- .collect::<Result<ArrayVec<_>,_>>()?
- .into_inner().unwrap()
- );
+ let region = self.shape.outline.region(gpc.pos)?;
let views = OwnerOccultationView {
owner: player,
owner_view: OccK::Visible,
#[derive(Clone,Copy,Debug,Serialize,Deserialize)]
pub struct Rectangle { pub xy: PosC<f64> }
+impl Rectangle {
+ #[throws(CoordinateOverflow)]
+ pub fn region(&self, centre: Pos) -> AreaC<Coord> {
+ let offset = (self.xy * 0.5)?;
+ let offset = offset.try_map(
+ |c| c.floor().to_i32().ok_or(CoordinateOverflow)
+ )?;
+ let region = AreaC(
+ [-1,1].iter().map(|&signum| Ok::<_,CoordinateOverflow>({
+ (centre + (offset * signum)?)?
+ }))
+ .collect::<Result<ArrayVec<_>,_>>()?
+ .into_inner().unwrap()
+ );
+ region
+ }
+}
+
#[dyn_upcast]
impl OutlineTrait for Rectangle {
#[throws(IE)]