public override void Run() { base.Run(); //Формируем список ячеек, в которые можем переместиться if (Player.SelectedPawn != null) { //Движение по диагонали if (Cells[Mathf.Clamp(Index + 7, 0, 63)].IsFree && !Cells[Index].IsFirstRow && !Cells[Index].IsLastColumn) { AllowableCells.Add(Cells[Index + 7]); } if (Cells[Mathf.Clamp(Index - 7, 0, 63)].IsFree && !Cells[Index].IsLastRow && !Cells[Index].IsFirstColumn) { AllowableCells.Add(Cells[Index - 7]); } if (Cells[Mathf.Clamp(Index + 9, 0, 63)].IsFree && !Cells[Index].IsLastRow && !Cells[Index].IsLastColumn) { AllowableCells.Add(Cells[Index + 9]); } if (Cells[Mathf.Clamp(Index - 9, 0, 63)].IsFree && !Cells[Index].IsFirstRow && !Cells[Index].IsFirstColumn) { AllowableCells.Add(Cells[Index - 9]); } } OnFinalize(); }
public virtual void Run() { if (Player.SelectedPawn != null && !Player.SelectedPawn.IsMoving) { for (int i = 0; i < Cells.Count; i++) { if (Player.SelectedPawn.Transform.position == Cells[i].Transform.position) { Index = i; } } //Прямое направление (общее для всех 3-х правил) if (Cells[Mathf.Clamp(Index + 1, 0, 63)].IsFree && !Cells[Index].IsLastRow) { AllowableCells.Add(Cells[Index + 1]); } if (Cells[Mathf.Clamp(Index - 1, 0, 63)].IsFree && !Cells[Index].IsFirstRow) { AllowableCells.Add(Cells[Index - 1]); } if (Cells[Mathf.Clamp(Index + 8, 0, 63)].IsFree && !Cells[Index].IsLastColumn) { AllowableCells.Add(Cells[Index + 8]); } if (Cells[Mathf.Clamp(Index - 8, 0, 63)].IsFree && !Cells[Index].IsFirstColumn) { AllowableCells.Add(Cells[Index - 8]); } } }
public override void Run() { base.Run(); //Формируем список ячеек, в которые можем переместиться if (Player.SelectedPawn != null) { //Могут перепрыгивать фигуру по диагонали if (Cells[Mathf.Clamp(Index + 14, 0, 63)].IsFree && !Cells[Index].IsLastColumn && !Cells[Index].IsFirstRow && !Cells[Index + 7].IsFree && !Cells[Index + 7].IsLastColumn && !Cells[Index + 7].IsFirstRow) { AllowableCells.Add(Cells[Index + 14]); } if (Cells[Mathf.Clamp(Index - 14, 0, 63)].IsFree && !Cells[Index].IsLastRow && !Cells[Index].IsFirstColumn && !Cells[Index - 7].IsFree && !Cells[Index - 7].IsLastRow && !Cells[Index - 7].IsFirstColumn) { AllowableCells.Add(Cells[Index - 14]); } if (Cells[Mathf.Clamp(Index + 18, 0, 63)].IsFree && !Cells[Index].IsLastColumn && !Cells[Index].IsLastRow && !Cells[Index + 9].IsFree && !Cells[Index + 9].IsLastColumn && !Cells[Index + 9].IsLastRow) { AllowableCells.Add(Cells[Index + 18]); } if (Cells[Mathf.Clamp(Index - 18, 0, 63)].IsFree && !Cells[Index].IsFirstColumn && !Cells[Index].IsFirstRow && !Cells[Index - 9].IsFree && !Cells[Index - 9].IsFirstColumn && !Cells[Index - 9].IsFirstRow) { AllowableCells.Add(Cells[Index - 18]); } } OnFinalize(); }
public override void Run() { base.Run(); //Формируем список ячеек, в которые можем переместиться if (Player.SelectedPawn != null) { //Могут перепрыгивать фигуру по прямой if (Cells[Mathf.Clamp(Index + 2, 0, 63)].IsFree && !Cells[Index].IsLastRow && !Cells[Index + 1].IsFree && !Cells[Index + 1].IsLastRow) { AllowableCells.Add(Cells[Index + 2]); } if (Cells[Mathf.Clamp(Index - 2, 0, 63)].IsFree && !Cells[Index].IsFirstRow && !Cells[Index - 1].IsFree && !Cells[Index - 1].IsFirstRow) { AllowableCells.Add(Cells[Index - 2]); } if (Cells[Mathf.Clamp(Index + 16, 0, 63)].IsFree && !Cells[Index].IsLastColumn && !Cells[Index + 8].IsFree && !Cells[Index + 8].IsLastColumn) { AllowableCells.Add(Cells[Index + 16]); } if (Cells[Mathf.Clamp(Index - 16, 0, 63)].IsFree && !Cells[Index].IsFirstColumn && !Cells[Index - 8].IsFree && !Cells[Index - 8].IsFirstColumn) { AllowableCells.Add(Cells[Index - 16]); } } OnFinalize(); }