private void ProcessRingInTheAirSelected(GameObject ring) { IRingMovementBondaryCalculationStrategy boundaryCalculator; ring.SendMessage("SetCurrentStateActive"); boundaryCalculator = new OverPinMovementBoundaryCalculator(_verticalCrossedLimit); _RingMovementController.StartObjectMovementHandling(ring, boundaryCalculator); }
/// <summary> /// Vertcial movement boundary crossing handler /// </summary> /// <param name="ring">Active ring</param> /// <param name="verticalCrossedLimit">Crossed vertical limit value</param> public void RingVerticalMovementLimitCrossedHandler(GameObject ring, float verticalCrossedLimit) { if (false == IsActiveRingInTheAir()) { _verticalCrossedLimit = verticalCrossedLimit; OverPinMovementBoundaryCalculator movementStrategy = new OverPinMovementBoundaryCalculator(verticalCrossedLimit); _RingMovementController.SetBoundaryCalculator(movementStrategy); Transform holderPin = _PinController.GetPinIfRingOnTop(ring); holderPin.SendMessage("RemoveTopRing"); _ActiveRingInTheAir = ring; _PinController.ActiveRing = ring; _PinController.enabled = true; } }