public void HideActor(Actor a, int range) { if (a.Owner.World.LocalPlayer == null || a.Owner.Stances[a.Owner.World.LocalPlayer] == Stance.Ally) { return; } var v = new ActorVisibility { vis = GetVisOrigins(a).ToArray() }; foreach (var p in v.vis) { foreach (var q in FindVisibleTiles(a.World, p, range)) { exploredCells[q.X, q.Y] = visibleCells[q.X, q.Y] > 0; } } if (!Disabled) { Dirty(); } }
public void AddActor(Actor a) { if (!a.HasTrait <RevealsShroud>() || !a.Owner.IsAlliedWith(self.Owner)) { return; } ActorVisibility v = a.Sight; if (v.range == 0) { return; } foreach (var p in v.vis) { foreach (var q in FindVisibleTiles(a.World, p, v.range)) { ++visibleCells[q.X, q.Y]; exploredCells[q.X, q.Y] = true; foggedCells[q.X, q.Y] = true; } var box = new Rectangle(p.X - v.range, p.Y - v.range, 2 * v.range + 1, 2 * v.range + 1); ExploredBounds = Rectangle.Union(ExploredBounds, box); } Invalidate(); }
public void RemoveActor(Actor a) { ActorVisibility v = a.Sight; if (!a.Owner.IsAlliedWith(self.Owner)) { if (a.HasTrait <CreatesShroud>()) { foreach (var p in v.vis) { foreach (var q in FindVisibleTiles(a.World, p, v.range)) { foggedCells[q.X, q.Y] = exploredCells[q.X, q.Y]; } } } return; } if (!a.HasTrait <RevealsShroud>()) { return; } foreach (var p in v.vis) { foreach (var q in FindVisibleTiles(a.World, p, v.range)) { --visibleCells[q.X, q.Y]; } } Invalidate(); }
void AddActor(Actor a) { if (!a.HasTrait <RevealsShroud>()) { return; } if (a.Owner.World.LocalPlayer == null || a.Owner.Stances[a.Owner.World.LocalPlayer] != Stance.Ally) { return; } if (vis.ContainsKey(a)) { Game.Debug("Warning: Actor {0}:{1} at {2} bad vis".F(a.Info.Name, a.ActorID, a.Location)); RemoveActor(a); } var v = new ActorVisibility { range = a.Trait <RevealsShroud>().RevealRange, vis = GetVisOrigins(a).ToArray() }; if (v.range == 0) { return; // don't bother for things that can't see } foreach (var p in v.vis) { foreach (var q in FindVisibleTiles(a.World, p, v.range)) { ++visibleCells[q.X, q.Y]; exploredCells[q.X, q.Y] = true; } var box = new Rectangle(p.X - v.range, p.Y - v.range, 2 * v.range + 1, 2 * v.range + 1); exploredBounds = (exploredBounds.HasValue) ? Rectangle.Union(exploredBounds.Value, box) : box; } vis[a] = v; if (!Disabled) { Dirty(); } }
public void UnhideActor(Actor a, ActorVisibility v, int range) { if (a.Owner.IsAlliedWith(self.Owner) || v == null) { return; } foreach (var p in v.vis) { foreach (var q in FindVisibleTiles(a.World, p, range)) { foggedCells[q.X, q.Y] = exploredCells[q.X, q.Y]; } } Invalidate(); }
public void HideActor(Actor a, int range) { if (a.Owner.IsAlliedWith(self.Owner)) { return; } var v = new ActorVisibility { vis = GetVisOrigins(a).ToArray() }; foreach (var p in v.vis) { foreach (var q in FindVisibleTiles(a.World, p, range)) { foggedCells[q.X, q.Y] = visibleCells[q.X, q.Y] > 0; } } Invalidate(); }
public void HideActor(Actor a, int range) { if (a.Owner.World.LocalPlayer == null || a.Owner.Stances[a.Owner.World.LocalPlayer] == Stance.Ally) return; var v = new ActorVisibility { vis = GetVisOrigins(a).ToArray() }; foreach (var p in v.vis) foreach (var q in FindVisibleTiles(a.World, p, range)) exploredCells[q.X, q.Y] = visibleCells[q.X, q.Y] > 0; if (!Disabled) Dirty(); }
public void UnhideActor(Actor a, ActorVisibility v, int range) { if (a.Owner.IsAlliedWith(self.Owner) || v == null) return; foreach (var p in v.vis) foreach (var q in FindVisibleTiles(a.World, p, range)) foggedCells[q.X, q.Y] = exploredCells[q.X, q.Y]; Invalidate(); }
public void HideActor(Actor a, int range) { if (a.Owner.IsAlliedWith(self.Owner)) return; var v = new ActorVisibility { vis = GetVisOrigins(a).ToArray() }; foreach (var p in v.vis) foreach (var q in FindVisibleTiles(a.World, p, range)) foggedCells[q.X, q.Y] = visibleCells[q.X, q.Y] > 0; Invalidate(); }
public void UnhideActor(Actor a, ActorVisibility v, int range) { if (a.Owner.World.LocalPlayer == null || a.Owner.Stances[a.Owner.World.LocalPlayer] == Stance.Ally) return; if (v == null) return; foreach (var p in v.vis) foreach (var q in FindVisibleTiles(a.World, p, range)) foggedCells[q.X, q.Y] = exploredCells[q.X, q.Y]; if (!Disabled) Dirty(); }