void SetUnitVisibility(Unit Unit, UnitVisibility Visibility) { if (Visibility.LastSeen == null) { RemoveUnit(Unit); } else { MoveUnit(Unit, new MovementEventArgs(Visibility.LastSeen, null, null), Visibility.Visible); } }
UnitVisibility MergeVisibility(Unit Unit, bool Visible, bool Remove = false, Tile OverrideLastSeen = null) { UnitVisibility visibility; _UnitVisibilities.TryGetValue(Unit, out visibility); if (Visible) { visibility = new UnitVisibility(Visible, Unit.Position); } else { visibility = new UnitVisibility(Visible, Remove ? null : (OverrideLastSeen ?? visibility.LastSeen)); } _UnitVisibilities[Unit] = visibility; return(visibility); }