Пример #1
0
    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();
    }
Пример #2
0
 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]);
         }
     }
 }
Пример #3
0
    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();
    }
Пример #4
0
    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();
    }