public override bool Equals(object otherObject) { PuzzleVirtualCoordinates otherCoordinates = otherObject as PuzzleVirtualCoordinates; if (otherCoordinates == null) { return(false); } return(otherCoordinates.Row == Row && otherCoordinates.Column == Column); }
/// <summary> Обмен местами на виртуальной и визуальной доске двух пазлов </summary> private void SwapToPuzzles(AbstractPuzzleTileFacade firstPuzzle, AbstractPuzzleTileFacade secondPuzzle) { Vector3 firstPuzzleVector = firstPuzzle.transform.position; PuzzleVirtualCoordinates firstPuzzleCoordinates = firstPuzzle.CurrentCoordinates; firstPuzzle.transform.position = secondPuzzle.transform.position; firstPuzzle.CurrentCoordinates = secondPuzzle.CurrentCoordinates; secondPuzzle.transform.position = firstPuzzleVector; secondPuzzle.CurrentCoordinates = firstPuzzleCoordinates; virtualFieldOfPuzzles[GetPuzzleRow(firstPuzzle), GetPuzzleCol(firstPuzzle)] = firstPuzzle; virtualFieldOfPuzzles[GetPuzzleRow(secondPuzzle), GetPuzzleCol(secondPuzzle)] = secondPuzzle; }
/// <summary> Вызвать евент об окончании обмена мест с пустым пазлом </summary> private Action RaiseOnSwapEnded(AbstractPuzzleTileFacade otherPuzzleTile) { Action newOnSwaped = () => { //После завершения физического перемещения, необходимо обновить координаты PuzzleVirtualCoordinates emptyPuzzleCoordinates = otherPuzzleTile.CurrentCoordinates; otherPuzzleTile.CurrentCoordinates = this.CurrentCoordinates; this.CurrentCoordinates = emptyPuzzleCoordinates; //Вызываем соответствующее событие if (OnSwapEndedEvent != null) { OnSwapEndedEvent.Invoke(this, otherPuzzleTile); OnSwapEndedEvent = null; } }; return(newOnSwaped); }