public void NavigateRing() { if (unvisitedElements == 0) { setNextRingState(); OnRingChange?.Invoke(); } switch (nextAction) { case RingAction.IncreaseX: X++; if (X == ring) { nextAction = RingAction.IncreaseY; } break; case RingAction.IncreaseY: Y++; if (Y == ring) { nextAction = RingAction.DecreaseX; } break; case RingAction.DecreaseX: X--; if (X == -ring) { nextAction = RingAction.DecreaseY; } break; case RingAction.DecreaseY: Y--; if (Y == -ring) { nextAction = RingAction.IncreaseX; } break; } unvisitedElements--; }
private void setNextRingState() { ring++; unvisitedElements = 8 * ring; nextAction = RingAction.IncreaseX; }