private void AssignGem(GemElement gemElement) { if (_firstSelectedObject) { //if same object, unselect and clean if (_firstSelectedObject == gemElement) { gemElement.Unselect(); Clean(); return; } //if neighbor, proceed to complete selection if (_firstSelectedObject.IsNeighborFrom(gemElement)) { _secondSelectedObject = gemElement; gemElement.Select(); OnSelectionComplete.Invoke(_firstSelectedObject, _secondSelectedObject); Clean(); return; } //if not neighbor, it is an invalid move _secondSelectedObject = gemElement; OnSelectionInvalid?.Invoke(_firstSelectedObject, _secondSelectedObject); Clean(); } else { _firstSelectedObject = gemElement; gemElement.Select(); } }
public void CheckCondition(GemElement gem) { for (int i = 0; i < 3; i++) { if (gem.index == CondGemsIndex[i] && IsDone[i] == false) { Totalmoves[i]--; if (i == 0) { GameController.instance.uIController.firstCount.text = Totalmoves[i].ToString(); } else if (i == 1) { GameController.instance.uIController.secCount.text = Totalmoves[i].ToString(); } else if (i == 2) { GameController.instance.uIController.thirdCount.text = Totalmoves[i].ToString(); } if (Totalmoves[i] <= 0) { IsDone[i] = true; CheckWin(); } } } }
private IEnumerator ChangeGemsPosition(GemElement first, GemElement second) { var firstSnapshot = new GridPositionSnapshot(first); var secondSnapshot = new GridPositionSnapshot(second); _inputController.Enable(false); yield return(this.RunAndWait(first.Move(secondSnapshot), second.Move(firstSnapshot))); _gems = _gridController.UpdateGrid(_gems); var sequence = _sequenceChecker.IsMovementValid(_gems, first, second, out var sequenceList); switch (sequence) { case SequenceType.None: //if it is a not valid move, rollback yield return(this.RunAndWait(first.Move(firstSnapshot), second.Move(secondSnapshot))); break; case SequenceType.Horizontal: case SequenceType.Vertical: _soundController.Play(_swap); yield return(_gridController.ProcessSequence(_gems, sequenceList, sequence)); if (!_gridController.CheckAvailableGame(_gems)) { Shuffle(); yield break; } _gems = _gridController.CurrentGrid; //this is not good break; default: throw new ArgumentOutOfRangeException(); } _inputController.Enable(true); }
// Use this for initialization private void Start() { instance = this; Debug.Log("AYO"); rigidbody = GetComponent <Rigidbody>(); }
private void Clean() { _firstSelectedObject = null; _secondSelectedObject = null; }
private void InvalidMove(GemElement first, GemElement second) { first.InvalidMove(); second.InvalidMove(); }