public void Move(SLIDE_DIRECTION dir) { switch (dir) { case SLIDE_DIRECTION.TOP: transform.DOKill(true); transform.DOLocalMoveY(transform.localPosition.y + size, time); break; case SLIDE_DIRECTION.DOWN: transform.DOKill(true); transform.DOLocalMoveY(transform.localPosition.y - size, time); break; case SLIDE_DIRECTION.LEFT: transform.DOKill(true); transform.DOLocalMoveX(transform.localPosition.x - size, time); break; case SLIDE_DIRECTION.RIGHT: transform.DOKill(true); transform.DOLocalMoveX(transform.localPosition.x + size, time); break; } }
public virtual void Show(SLIDE_DIRECTION dir) { gameObject.SetActive(true); transform.DOKill(); transform.localPosition = new Vector3(dir == SLIDE_DIRECTION.LEFT ? 480f : -480f, 40f, 10); transform.DOLocalMoveX(0, slideTime).SetEase(ease); }
public override void Show(SLIDE_DIRECTION dir) { base.Show(dir); if (isActiveAndEnabled) { StartCoroutine("Play"); } }
public void slide(SLIDE_DIRECTION direction) { if (sliding == SLIDE_DIRECTION.NO_SLIDE) { sliding = direction; // create a timer to update the position and draw the next background chunk slide_timer.Start(); } }
private void slide_timer_event(object source, ElapsedEventArgs e) { switch (sliding) { case SLIDE_DIRECTION.SLIDE_LEFT: spritePos = new Vector2(spritePos.X - 15, spritePos.Y); // adjust the value here for animation speed if (spritePos.X < -spriteSize.X) { sliding = SLIDE_DIRECTION.NO_SLIDE; slide_timer.Stop(); spritePos = new Vector2(0, 0); } break; case SLIDE_DIRECTION.SLIDE_RIGHT: spritePos = new Vector2(spritePos.X + 15, spritePos.Y); // adjust the value here for animation speed if (spritePos.X > spriteSize.X) { sliding = SLIDE_DIRECTION.NO_SLIDE; slide_timer.Stop(); spritePos = new Vector2(0, 0); } break; case SLIDE_DIRECTION.SLIDE_UP: spritePos = new Vector2(spritePos.X, spritePos.Y - 10); // adjust the value here for animation speed if (spritePos.Y < -spriteSize.Y) { sliding = SLIDE_DIRECTION.NO_SLIDE; slide_timer.Stop(); spritePos = new Vector2(0, 0); } break; case SLIDE_DIRECTION.SLIDE_DOWN: spritePos = new Vector2(spritePos.X, spritePos.Y + 10); // adjust the value here for animation speed if (spritePos.Y > spriteSize.Y) { sliding = SLIDE_DIRECTION.NO_SLIDE; slide_timer.Stop(); spritePos = new Vector2(0, 0); } break; default: break; } }
private void MoveItem(float angle) { if (angle < 135 && angle >= 45) { slideDirection = SLIDE_DIRECTION.TOP; if (onTopSlide != null) { onTopSlide.Execute(); } } else if (angle < 225 && angle >= 135) { slideDirection = SLIDE_DIRECTION.LEFT; if (onLeftSlide != null) { onLeftSlide.Execute(); } } else if (angle < 315 && angle >= 225) { slideDirection = SLIDE_DIRECTION.DOWN; if (onDownSlide != null) { onDownSlide.Execute(); } } else if (angle < 45 && angle >= 0 || angle >= 315) { slideDirection = SLIDE_DIRECTION.RIGHT; if (onRightSlide != null) { onRightSlide.Execute(); } } if (onAnySlide != null) { onAnySlide.Execute(); } }
public override void Hide(SLIDE_DIRECTION dir) { base.Hide(dir); StopAllCoroutines(); anim.DOKill(true); }
public void MoveButtons(GameButton button, SLIDE_DIRECTION dir) { int row = (buttonCount - (buttonCount - button.index)) / fieldSize; int[] indexes = new int[(int)Mathf.Sqrt(buttonCount)]; int currentIndex = 0; for (int i = 0; i < indexes.Length; i++) { indexes[i] = -1; } switch (dir) { case SLIDE_DIRECTION.TOP: for (int i = button.index; i >= 0; i -= fieldSize) { if (i - fieldSize < 0) //out of bounds { if (buttons[i].isEmptyCell) { GameButton temp = buttons[emptyButtonIndex]; for (int j = indexes.Length - 1; j >= 0; j--) { if (indexes[j] >= 0) { buttons[indexes[j] - fieldSize] = buttons[indexes[j]]; buttons[indexes[j] - fieldSize].SetIndex(indexes[j] - fieldSize); buttons[indexes[j]].Move(dir); } } if (indexes[0] >= 0) { buttons[indexes[0]] = temp; emptyButtonIndex = indexes[0]; temp.SetIndex(emptyButtonIndex); } else { buttons[i].Move(dir); } break; } else { break; } } else if (!buttons[i].isEmptyCell) { indexes[currentIndex++] = buttons[i].index; } else if (buttons[i].isEmptyCell) { GameButton temp = buttons[emptyButtonIndex]; for (int j = indexes.Length - 1; j >= 0; j--) { if (indexes[j] >= 0) { buttons[indexes[j] - fieldSize] = buttons[indexes[j]]; buttons[indexes[j] - fieldSize].SetIndex(indexes[j] - fieldSize); buttons[indexes[j]].Move(dir); } } if (indexes[0] >= 0) { buttons[indexes[0]] = temp; emptyButtonIndex = indexes[0]; temp.SetIndex(emptyButtonIndex); } else { buttons[i].Move(dir); } break; } } break; case SLIDE_DIRECTION.DOWN: for (int i = button.index; i < buttonCount; i += fieldSize) { if (i + fieldSize >= buttonCount) { if (buttons[i].isEmptyCell) { GameButton temp = buttons[emptyButtonIndex]; for (int j = indexes.Length - 1; j >= 0; j--) { if (indexes[j] >= 0) { buttons[indexes[j] + fieldSize] = buttons[indexes[j]]; buttons[indexes[j] + fieldSize].SetIndex(indexes[j] + fieldSize); buttons[indexes[j]].Move(dir); } } if (indexes[0] >= 0) { buttons[indexes[0]] = temp; emptyButtonIndex = indexes[0]; temp.SetIndex(emptyButtonIndex); } else { buttons[i].Move(dir); } break; } else { break; } } else if (!buttons[i].isEmptyCell) { indexes[currentIndex++] = buttons[i].index; } if (buttons[i].isEmptyCell) { GameButton temp = buttons[emptyButtonIndex]; for (int j = indexes.Length - 1; j >= 0; j--) { if (indexes[j] >= 0) { buttons[indexes[j] + fieldSize] = buttons[indexes[j]]; buttons[indexes[j] + fieldSize].SetIndex(indexes[j] + fieldSize); buttons[indexes[j]].Move(dir); } } if (indexes[0] >= 0) { buttons[indexes[0]] = temp; emptyButtonIndex = indexes[0]; temp.SetIndex(emptyButtonIndex); } else { buttons[i].Move(dir); } break; } } break; case SLIDE_DIRECTION.LEFT: for (int i = button.index; i >= row * fieldSize; i--) { if ((i - 1 < 0 || i % fieldSize == 0)) { if (buttons[i].isEmptyCell) { GameButton temp = buttons[emptyButtonIndex]; for (int j = indexes.Length - 1; j >= 0; j--) { if (indexes[j] >= 0) { buttons[indexes[j] - 1] = buttons[indexes[j]]; buttons[indexes[j] - 1].SetIndex(indexes[j] - 1); buttons[indexes[j]].Move(dir); } } if (indexes[0] >= 0) { buttons[indexes[0]] = temp; emptyButtonIndex = indexes[0]; temp.SetIndex(emptyButtonIndex); } else { buttons[i].Move(dir); } break; } else { break; } } else if (!buttons[i].isEmptyCell) { indexes[currentIndex++] = buttons[i].index; } if (buttons[i].isEmptyCell) { GameButton temp = buttons[emptyButtonIndex]; for (int j = indexes.Length - 1; j >= 0; j--) { if (indexes[j] >= 0) { buttons[indexes[j] - 1] = buttons[indexes[j]]; buttons[indexes[j] - 1].SetIndex(indexes[j] - 1); buttons[indexes[j]].Move(dir); } } if (indexes[0] >= 0) { buttons[indexes[0]] = temp; emptyButtonIndex = indexes[0]; temp.SetIndex(emptyButtonIndex); } else { buttons[i].Move(dir); } break; } } break; case SLIDE_DIRECTION.RIGHT: for (int i = button.index; i <= ((row + 1) * fieldSize) - 1; i++) { if ((i + 1 > buttonCount || (i + 1) % fieldSize == 0)) { if (buttons[i].isEmptyCell) { GameButton temp = buttons[emptyButtonIndex]; for (int j = indexes.Length - 1; j >= 0; j--) { if (indexes[j] >= 0) { buttons[indexes[j] + 1] = buttons[indexes[j]]; buttons[indexes[j] + 1].SetIndex(indexes[j] + 1); buttons[indexes[j]].Move(dir); } } if (indexes[0] >= 0) { buttons[indexes[0]] = temp; emptyButtonIndex = indexes[0]; temp.SetIndex(emptyButtonIndex); } else { buttons[i].Move(dir); } break; } else { break; } } else if (!buttons[i].isEmptyCell) { indexes[currentIndex++] = buttons[i].index; } if (buttons[i].isEmptyCell) { GameButton temp = buttons[emptyButtonIndex]; for (int j = indexes.Length - 1; j >= 0; j--) { if (indexes[j] >= 0) { buttons[indexes[j] + 1] = buttons[indexes[j]]; buttons[indexes[j] + 1].SetIndex(indexes[j] + 1); buttons[indexes[j]].Move(dir); } } if (indexes[0] >= 0) { buttons[indexes[0]] = temp; emptyButtonIndex = indexes[0]; temp.SetIndex(emptyButtonIndex); break; } else { buttons[i].Move(dir); } break; } } break; } Check(); }
public override void Show(SLIDE_DIRECTION dir) { base.Show(dir); BoardManager.Instance.RefreshField(); }
public virtual void Hide(SLIDE_DIRECTION dir) { transform.DOKill(); transform.DOLocalMoveX(dir == SLIDE_DIRECTION.LEFT ? -480f : 480f, slideTime).OnComplete(() => gameObject.SetActive(false)).SetEase(ease); }
private void slide_timer_event(object source, ElapsedEventArgs e) { switch(sliding) { case SLIDE_DIRECTION.SLIDE_LEFT: spritePos = new Vector2(spritePos.X - 15, spritePos.Y); // adjust the value here for animation speed if (spritePos.X < -spriteSize.X) { sliding = SLIDE_DIRECTION.NO_SLIDE; slide_timer.Stop(); spritePos = new Vector2(0, 0); } break; case SLIDE_DIRECTION.SLIDE_RIGHT: spritePos = new Vector2(spritePos.X + 15, spritePos.Y); // adjust the value here for animation speed if (spritePos.X > spriteSize.X) { sliding = SLIDE_DIRECTION.NO_SLIDE; slide_timer.Stop(); spritePos = new Vector2(0, 0); } break; case SLIDE_DIRECTION.SLIDE_UP: spritePos = new Vector2(spritePos.X, spritePos.Y - 10); // adjust the value here for animation speed if (spritePos.Y < -spriteSize.Y) { sliding = SLIDE_DIRECTION.NO_SLIDE; slide_timer.Stop(); spritePos = new Vector2(0, 0); } break; case SLIDE_DIRECTION.SLIDE_DOWN: spritePos = new Vector2(spritePos.X, spritePos.Y + 10); // adjust the value here for animation speed if (spritePos.Y > spriteSize.Y) { sliding = SLIDE_DIRECTION.NO_SLIDE; slide_timer.Stop(); spritePos = new Vector2(0, 0); } break; default: break; } }