Пример #1
0
    /// <summary>
    /// 게임 내에서 착수가 발생했을 때
    /// </summary>
    /// <param name="snapshot"></param>
    void OnNewMove(GameState.IBoardSnapshot snapshot)
    {
        var ui = OverlayUI.instance;

        ui.GetDialog <WaitingDialog>().SafeClose();                             // 착수 대기 다이얼로그가 열려있다면 닫기
        ui.boardUI.ShowNewMove(snapshot.lastMove);                              // 게임판 UI에 새 착수 보내기
    }
Пример #2
0
    /// <summary>
    /// 판 전체를 특정 보드 스냅샷으로 덮어쓰기
    /// </summary>
    /// <param name="boardSnapshot"></param>
    public void ShowBoard(GameState.IBoardSnapshot boardSnapshot)
    {
        for (var y = 0; y < m_boardHeight; y++)
        {
            for (var x = 0; x < m_boardWidth; x++)
            {
                var move  = boardSnapshot.GetMove(x, y);
                var stone = GetStoneAtPos(x, y);
                if (move != null)
                {
                    var colorPreset = move.who == GameState.PlayerTurn.One ?
                                      BoardStone.ColorPreset.Player1
                                                                                                                :       BoardStone.ColorPreset.Player2;
                    stone.Show(colorPreset, false);
                }
                else
                {
                    stone.Hide();
                }
            }
        }

        var lastMove = boardSnapshot.lastMove;

        if (lastMove != null)
        {
            ShowStatus(lastMove);                                       // 상태 표시하기
            SetHighlight(GetStoneAtPos(lastMove.x, lastMove.y));        // 하이라이트 표시
        }
        else
        {
            HideStatus();
        }
    }
Пример #3
0
 /// <summary>
 /// 입력 가능한 라인에 버튼을 보여주고 입력을 받으면 콜백을 호출해준다.
 /// </summary>
 /// <param name="currentBoard"></param>
 public void ShowInputs(GameState.IBoardSnapshot currentBoard, System.Action <int> callback)
 {
     for (var x = 0; x < GameState.c_boardWidth; x++)
     {
         // 맨 윗쪽줄에 아무것도 없으면 착수 가능한 걸로 본다
         m_buttons[x].interactable = currentBoard == null || currentBoard.GetMove(x, GameState.c_boardHeight - 1) == null;
     }
     m_inputCallback            = callback;
     m_buttonGroup.interactable = true;              // 전체 그룹 입력 활성화
 }