public static void SLeftCheck(int x, int y, ReversiCell.ReversiCellStates states)
 {
     if (states == ReversiCell.ReversiCellStates.White)
     {
         if (x > 0)
         {
             if (reversiCells[x - 1, y].ReversiCellState == ReversiCell.ReversiCellStates.Black)
             {
                 LturnOverList.Add(reversiCells[x - 1, y]);
                 SLeftCheck(x - 1, y, states);
             }
             else if (reversiCells[x - 1, y].ReversiCellState == ReversiCell.ReversiCellStates.None)
             {
                 LturnOverList.Clear();
             }
             else
             {
                 foreach (var cell in LturnOverList)
                 {
                     cell.ReversiCellState = ReversiCell.ReversiCellStates.White;
                     cell.m_anim.Play("WhiteAnimation");
                 }
                 return;
             }
         }
     }
     else if (states == ReversiCell.ReversiCellStates.Black)
     {
         if (x > 0)
         {
             if (reversiCells[x - 1, y].ReversiCellState == ReversiCell.ReversiCellStates.White)
             {
                 LturnOverList.Add(reversiCells[x - 1, y]);
                 SLeftCheck(x - 1, y, states);
             }
             else if (reversiCells[x - 1, y].ReversiCellState == ReversiCell.ReversiCellStates.None)
             {
                 LturnOverList.Clear();
             }
             else
             {
                 foreach (var cell in LturnOverList)
                 {
                     cell.ReversiCellState = ReversiCell.ReversiCellStates.Black;
                     cell.m_anim.Play("BlackAnimation");
                 }
                 return;
             }
         }
     }
 }
 public static void SRightBottomCheck(int x, int y, ReversiCell.ReversiCellStates states)
 {
     if (x < m_columns - 1 && y > 0)
     {
         if (states == ReversiCell.ReversiCellStates.White)
         {
             if (reversiCells[x + 1, y - 1].ReversiCellState == ReversiCell.ReversiCellStates.Black)
             {
                 RBturnOverList.Add(reversiCells[x + 1, y - 1]);
                 SRightBottomCheck(x + 1, y - 1, states);
             }
             else if (reversiCells[x + 1, y - 1].ReversiCellState == ReversiCell.ReversiCellStates.None)
             {
                 RBturnOverList.Clear();
             }
             else
             {
                 foreach (var cell in RBturnOverList)
                 {
                     cell.ReversiCellState = ReversiCell.ReversiCellStates.White;
                     cell.m_anim.Play("WhiteAnimation");
                 }
                 return;
             }
         }
         else if (states == ReversiCell.ReversiCellStates.Black)
         {
             if (reversiCells[x + 1, y - 1].ReversiCellState == ReversiCell.ReversiCellStates.White)
             {
                 RBturnOverList.Add(reversiCells[x + 1, y - 1]);
                 SRightBottomCheck(x + 1, y - 1, states);
             }
             else if (reversiCells[x + 1, y - 1].ReversiCellState == ReversiCell.ReversiCellStates.None)
             {
                 RBturnOverList.Clear();
             }
             else
             {
                 foreach (var cell in RBturnOverList)
                 {
                     cell.ReversiCellState = ReversiCell.ReversiCellStates.Black;
                     cell.m_anim.Play("BlackAnimation");
                 }
                 return;
             }
         }
     }
 }
 public static void STopCheck(int x, int y, ReversiCell.ReversiCellStates states)
 {
     if (y < m_rows - 1)
     {
         if (states == ReversiCell.ReversiCellStates.White)
         {
             if (reversiCells[x, y + 1].ReversiCellState == ReversiCell.ReversiCellStates.Black)
             {
                 TturnOverList.Add(reversiCells[x, y + 1]);
                 STopCheck(x, y + 1, states);
             }
             else if (reversiCells[x, y + 1].ReversiCellState == ReversiCell.ReversiCellStates.None)
             {
                 TturnOverList.Clear();
             }
             else
             {
                 foreach (var cell in TturnOverList)
                 {
                     cell.ReversiCellState = ReversiCell.ReversiCellStates.White;
                     cell.m_anim.Play("WhiteAnimation");
                 }
                 return;
             }
         }
         else if (states == ReversiCell.ReversiCellStates.Black)
         {
             if (reversiCells[x, y + 1].ReversiCellState == ReversiCell.ReversiCellStates.White)
             {
                 TturnOverList.Add(reversiCells[x, y + 1]);
                 STopCheck(x, y + 1, states);
             }
             else if (reversiCells[x, y + 1].ReversiCellState == ReversiCell.ReversiCellStates.None)
             {
                 TturnOverList.Clear();
             }
             else
             {
                 foreach (var cell in TturnOverList)
                 {
                     cell.ReversiCellState = ReversiCell.ReversiCellStates.Black;
                     cell.m_anim.Play("BlackAnimation");
                 }
                 return;
             }
         }
     }
 }
 public void LeftCheck(int x, int y, ReversiCell.ReversiCellStates states)
 {
     if (states == ReversiCell.ReversiCellStates.White)
     {
         if (x > 0)
         {
             if (reversiCells[x - 1, y].ReversiCellState == ReversiCell.ReversiCellStates.Black)
             {
                 LeftCheck(x - 1, y, states);
             }
             else if (reversiCells[x - 1, y].ReversiCellState == ReversiCell.ReversiCellStates.None)
             {
                 reversiCells[x - 1, y].isWhitePlaceable = true;
                 PlaceableList.Add(reversiCells[x - 1, y]);
             }
             else
             {
                 return;
             }
         }
     }
     else if (states == ReversiCell.ReversiCellStates.Black)
     {
         if (x > 0)
         {
             if (reversiCells[x - 1, y].ReversiCellState == ReversiCell.ReversiCellStates.White)
             {
                 LeftCheck(x - 1, y, states);
             }
             else if (reversiCells[x - 1, y].ReversiCellState == ReversiCell.ReversiCellStates.None)
             {
                 reversiCells[x - 1, y].isBlackPlaceable = true;
                 PlaceableList.Add(reversiCells[x - 1, y]);
             }
             else
             {
                 return;
             }
         }
     }
 }
 public void TopCheck(int x, int y, ReversiCell.ReversiCellStates states)
 {
     if (y < m_rows - 1)
     {
         if (states == ReversiCell.ReversiCellStates.White)
         {
             if (reversiCells[x, y + 1].ReversiCellState == ReversiCell.ReversiCellStates.Black)
             {
                 TopCheck(x, y + 1, states);
             }
             else if (reversiCells[x, y + 1].ReversiCellState == ReversiCell.ReversiCellStates.None)
             {
                 reversiCells[x, y + 1].isWhitePlaceable = true;
                 PlaceableList.Add(reversiCells[x, y + 1]);
             }
             else
             {
                 return;
             }
         }
         else if (states == ReversiCell.ReversiCellStates.Black)
         {
             if (reversiCells[x, y + 1].ReversiCellState == ReversiCell.ReversiCellStates.White)
             {
                 TopCheck(x, y + 1, states);
             }
             else if (reversiCells[x, y + 1].ReversiCellState == ReversiCell.ReversiCellStates.None)
             {
                 reversiCells[x, y + 1].isBlackPlaceable = true;
                 PlaceableList.Add(reversiCells[x, y + 1]);
             }
             else
             {
                 return;
             }
         }
     }
 }
 public void RightCheck(int x, int y, ReversiCell.ReversiCellStates states)
 {
     if (x < m_columns - 1)
     {
         if (states == ReversiCell.ReversiCellStates.White)
         {
             if (reversiCells[x + 1, y].ReversiCellState == ReversiCell.ReversiCellStates.Black)
             {
                 RightCheck(x + 1, y, states);
             }
             else if (reversiCells[x + 1, y].ReversiCellState == ReversiCell.ReversiCellStates.None)
             {
                 reversiCells[x + 1, y].isWhitePlaceable = true;
                 PlaceableList.Add(reversiCells[x + 1, y]);
             }
             else
             {
                 return;
             }
         }
         else if (states == ReversiCell.ReversiCellStates.Black)
         {
             if (reversiCells[x + 1, y].ReversiCellState == ReversiCell.ReversiCellStates.White)
             {
                 RightCheck(x + 1, y, states);
             }
             else if (reversiCells[x + 1, y].ReversiCellState == ReversiCell.ReversiCellStates.None)
             {
                 reversiCells[x + 1, y].isBlackPlaceable = true;
                 PlaceableList.Add(reversiCells[x + 1, y]);
             }
             else
             {
                 return;
             }
         }
     }
 }
 public void BottomCheck(int x, int y, ReversiCell.ReversiCellStates states)
 {
     if (y > 0)
     {
         if (states == ReversiCell.ReversiCellStates.White)
         {
             if (reversiCells[x, y - 1].ReversiCellState == ReversiCell.ReversiCellStates.Black)
             {
                 BottomCheck(x, y - 1, states);
             }
             else if (reversiCells[x, y - 1].ReversiCellState == ReversiCell.ReversiCellStates.None)
             {
                 reversiCells[x, y - 1].isWhitePlaceable = true;
                 PlaceableList.Add(reversiCells[x, y - 1]);
             }
             else
             {
                 return;
             }
         }
         else if (states == ReversiCell.ReversiCellStates.Black)
         {
             if (reversiCells[x, y - 1].ReversiCellState == ReversiCell.ReversiCellStates.White)
             {
                 BottomCheck(x, y - 1, states);
             }
             else if (reversiCells[x, y - 1].ReversiCellState == ReversiCell.ReversiCellStates.None)
             {
                 reversiCells[x, y - 1].isBlackPlaceable = true;
                 PlaceableList.Add(reversiCells[x, y - 1]);
             }
             else
             {
                 return;
             }
         }
     }
 }
    public static void AddTurnOverCells(int x, int y, ReversiCell.ReversiCellStates states)
    {
        int bottom = y - 1;
        int top    = y + 1;
        int right  = x + 1;
        int left   = x - 1;

        if (states == ReversiCell.ReversiCellStates.White)
        {
            if (bottom >= 0)
            {
                if (left >= 0)
                {
                    if (reversiCells[left, bottom].ReversiCellState == ReversiCell.ReversiCellStates.Black)
                    {
                        LBturnOverList.Clear();
                        LBturnOverList.Add(reversiCells[left, bottom]);
                        SLeftBottomCheck(left, bottom, states);
                    }
                }


                if (reversiCells[x, bottom].ReversiCellState == ReversiCell.ReversiCellStates.Black)
                {
                    BturnOverList.Clear();
                    BturnOverList.Add(reversiCells[x, bottom]);
                    SBottomCheck(x, bottom, states);
                }

                if (right < m_columns)
                {
                    if (reversiCells[right, bottom].ReversiCellState == ReversiCell.ReversiCellStates.Black)
                    {
                        RBturnOverList.Clear();
                        RBturnOverList.Add(reversiCells[right, bottom]);
                        SRightBottomCheck(right, bottom, states);
                    }
                }
            }

            if (left >= 0)
            {
                if (reversiCells[left, y].ReversiCellState == ReversiCell.ReversiCellStates.Black)
                {
                    LturnOverList.Clear();
                    LturnOverList.Add(reversiCells[left, y]);
                    SLeftCheck(left, y, states);
                }
            }
            if (right < m_columns)
            {
                if (reversiCells[right, y].ReversiCellState == ReversiCell.ReversiCellStates.Black)
                {
                    RturnOverList.Clear();
                    RturnOverList.Add(reversiCells[right, y]);
                    SRightCheck(right, y, states);
                }
            }

            if (top < m_rows)
            {
                if (left >= 0)
                {
                    if (reversiCells[left, top].ReversiCellState == ReversiCell.ReversiCellStates.Black)
                    {
                        LTturnOverList.Clear();
                        LTturnOverList.Add(reversiCells[left, top]);
                        SLeftTopCheck(left, top, states);
                    }
                }

                if (reversiCells[x, top].ReversiCellState == ReversiCell.ReversiCellStates.Black)
                {
                    TturnOverList.Clear();
                    TturnOverList.Add(reversiCells[x, top]);
                    STopCheck(x, top, states);
                }

                if (right < m_columns)
                {
                    if (reversiCells[right, top].ReversiCellState == ReversiCell.ReversiCellStates.Black)
                    {
                        RTturnOverList.Clear();
                        RTturnOverList.Add(reversiCells[right, top]);
                        SRightTopCheck(right, top, states);
                    }
                }
            }
        }
        else if (reversiCells[x, y].ReversiCellState == ReversiCell.ReversiCellStates.Black)
        {
            if (bottom >= 0)
            {
                if (left >= 0)
                {
                    if (reversiCells[left, bottom].ReversiCellState == ReversiCell.ReversiCellStates.White)
                    {
                        LBturnOverList.Clear();
                        LBturnOverList.Add(reversiCells[left, bottom]);
                        SLeftBottomCheck(left, bottom, states);
                    }
                }

                if (reversiCells[x, bottom].ReversiCellState == ReversiCell.ReversiCellStates.White)
                {
                    BturnOverList.Clear();
                    BturnOverList.Add(reversiCells[x, bottom]);
                    SBottomCheck(x, bottom, states);
                }

                if (right < m_columns)
                {
                    if (reversiCells[right, bottom].ReversiCellState == ReversiCell.ReversiCellStates.White)
                    {
                        RBturnOverList.Clear();
                        RBturnOverList.Add(reversiCells[right, bottom]);
                        SRightBottomCheck(right, bottom, states);
                    }
                }
            }

            if (left >= 0)
            {
                if (reversiCells[left, y].ReversiCellState == ReversiCell.ReversiCellStates.White)
                {
                    LturnOverList.Clear();
                    LturnOverList.Add(reversiCells[left, y]);
                    SLeftCheck(left, y, states);
                }
            }
            if (right < m_columns)
            {
                if (reversiCells[right, y].ReversiCellState == ReversiCell.ReversiCellStates.White)
                {
                    RturnOverList.Clear();
                    RturnOverList.Add(reversiCells[right, y]);
                    SRightCheck(right, y, states);
                }
            }

            if (top < m_rows)
            {
                if (left >= 0)
                {
                    if (reversiCells[left, top].ReversiCellState == ReversiCell.ReversiCellStates.White)
                    {
                        LTturnOverList.Clear();
                        LTturnOverList.Add(reversiCells[left, top]);
                        SLeftTopCheck(left, top, states);
                    }
                }

                if (reversiCells[x, top].ReversiCellState == ReversiCell.ReversiCellStates.White)
                {
                    TturnOverList.Clear();
                    TturnOverList.Add(reversiCells[x, top]);
                    STopCheck(x, top, states);
                }

                if (right < m_columns)
                {
                    if (reversiCells[right, top].ReversiCellState == ReversiCell.ReversiCellStates.White)
                    {
                        RTturnOverList.Clear();
                        RTturnOverList.Add(reversiCells[right, top]);
                        SRightTopCheck(right, top, states);
                    }
                }
            }
        }
    }
    public void CheckCells(int x, int y, ReversiCell.ReversiCellStates states)
    {
        int bottom = y - 1;
        int top    = y + 1;
        int right  = x + 1;
        int left   = x - 1;

        if (states == ReversiCell.ReversiCellStates.White)
        {
            if (bottom >= 0)
            {
                if (left >= 0)
                {
                    if (reversiCells[left, bottom].ReversiCellState == ReversiCell.ReversiCellStates.Black)
                    {
                        LeftBottomCheck(left, bottom, states);
                    }
                }


                if (reversiCells[x, bottom].ReversiCellState == ReversiCell.ReversiCellStates.Black)
                {
                    BottomCheck(x, bottom, states);
                }

                if (right < m_columns)
                {
                    if (reversiCells[right, bottom].ReversiCellState == ReversiCell.ReversiCellStates.Black)
                    {
                        RightBottomCheck(right, bottom, states);
                    }
                }
            }

            if (left >= 0)
            {
                if (reversiCells[left, y].ReversiCellState == ReversiCell.ReversiCellStates.Black)
                {
                    LeftCheck(left, y, states);
                }
            }
            if (right < m_columns)
            {
                if (reversiCells[right, y].ReversiCellState == ReversiCell.ReversiCellStates.Black)
                {
                    RightCheck(right, y, states);
                }
            }

            if (top < m_rows)
            {
                if (left >= 0)
                {
                    if (reversiCells[left, top].ReversiCellState == ReversiCell.ReversiCellStates.Black)
                    {
                        LeftTopCheck(left, top, states);
                    }
                }

                if (reversiCells[x, top].ReversiCellState == ReversiCell.ReversiCellStates.Black)
                {
                    TopCheck(x, top, states);
                }

                if (right < m_columns)
                {
                    if (reversiCells[right, top].ReversiCellState == ReversiCell.ReversiCellStates.Black)
                    {
                        RightTopCheck(right, top, states);
                    }
                }
            }
        }
        else if (reversiCells[x, y].ReversiCellState == ReversiCell.ReversiCellStates.Black)
        {
            if (bottom >= 0)
            {
                if (left >= 0)
                {
                    if (reversiCells[left, bottom].ReversiCellState == ReversiCell.ReversiCellStates.White)
                    {
                        LeftBottomCheck(left, bottom, states);
                    }
                }

                if (reversiCells[x, bottom].ReversiCellState == ReversiCell.ReversiCellStates.White)
                {
                    BottomCheck(x, bottom, states);
                }

                if (right < m_columns)
                {
                    if (reversiCells[right, bottom].ReversiCellState == ReversiCell.ReversiCellStates.White)
                    {
                        RightBottomCheck(right, bottom, states);
                    }
                }
            }

            if (left >= 0)
            {
                if (reversiCells[left, y].ReversiCellState == ReversiCell.ReversiCellStates.White)
                {
                    LeftCheck(left, y, states);
                }
            }
            if (right < m_columns)
            {
                if (reversiCells[right, y].ReversiCellState == ReversiCell.ReversiCellStates.White)
                {
                    RightCheck(right, y, states);
                }
            }

            if (top < m_rows)
            {
                if (left >= 0)
                {
                    if (reversiCells[left, top].ReversiCellState == ReversiCell.ReversiCellStates.White)
                    {
                        LeftTopCheck(left, top, states);
                    }
                }

                if (reversiCells[x, top].ReversiCellState == ReversiCell.ReversiCellStates.White)
                {
                    TopCheck(x, top, states);
                }

                if (right < m_columns)
                {
                    if (reversiCells[right, top].ReversiCellState == ReversiCell.ReversiCellStates.White)
                    {
                        RightTopCheck(right, top, states);
                    }
                }
            }
        }
    }