예제 #1
0
 public void ClearRuntime()
 {
     foreach (var unit in new List <IUnit>(UnitFactory.AllUnits))
     {
         UnitPositionCanon.ChangeOwnerOfPossession(unit, null);
         unit.Destroy();
     }
 }
예제 #2
0
        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));
        }
예제 #3
0
        private void OnUnitBeingDestroyed(IUnit unit)
        {
            if (UnitPositionCanon.GetOwnerOfPossession(unit) != null)
            {
                UnitPositionCanon.ChangeOwnerOfPossession(unit, null);
            }

            if (UnitPossessionCanon.GetOwnerOfPossession(unit) != null)
            {
                UnitPossessionCanon.ChangeOwnerOfPossession(unit, null);
            }
        }
예제 #4
0
        private void DestroyUnit(IUnit unit)
        {
            UnitPositionCanon.ChangeOwnerOfPossession(unit, null);

            unit.Destroy();
        }