void OnReleasingHexagon(Hexagon hexagon) { switch (userInteractionState) { case UserInteractionState.Idle: userInteractionState = UserInteractionState.Idle; break; case UserInteractionState.HexagonSelected: userInteractionState = UserInteractionState.HexagonSelected; break; case UserInteractionState.StartedMoving: userInteractionState = UserInteractionState.StartedMoving; break; case UserInteractionState.StartedDragging: if (hexagon.isAccessible() && !hexagon.HexagonContainsFungus) { EndDrag(hexagon); selectDifferentHexagon(null); userInteractionState = UserInteractionState.Idle; } else { userInteractionState = UserInteractionState.HexagonSelected; } break; } updateView(); }