public void ClearRuntime() { foreach (var unit in new List <IUnit>(UnitFactory.AllUnits)) { UnitPositionCanon.ChangeOwnerOfPossession(unit, null); unit.Destroy(); } }
public void Relocate(IHexCell newLocation) { if (!CanRelocate(newLocation)) { throw new InvalidOperationException("CanRelocate must return true on the given arguments"); } if (CurrentPath != null) { CurrentPath.Clear(); } PositionCanon.ChangeOwnerOfPossession(this, newLocation); if (RelocationCoroutine != null) { StopCoroutine(RelocationCoroutine); } RelocationCoroutine = StartCoroutine(PlaceUnitOnGridCoroutine(newLocation.AbsolutePosition)); }
private void OnUnitBeingDestroyed(IUnit unit) { if (UnitPositionCanon.GetOwnerOfPossession(unit) != null) { UnitPositionCanon.ChangeOwnerOfPossession(unit, null); } if (UnitPossessionCanon.GetOwnerOfPossession(unit) != null) { UnitPossessionCanon.ChangeOwnerOfPossession(unit, null); } }
private void DestroyUnit(IUnit unit) { UnitPositionCanon.ChangeOwnerOfPossession(unit, null); unit.Destroy(); }