Example #1
0
    public static void StartGame(string gameId, LobbyGameDetailsModel gameDetails)
    {
        Instance.currentGameId = gameId;
        Instance.gameDetails   = gameDetails;

        SceneManager.LoadSceneAsync(1, LoadSceneMode.Single);
    }
Example #2
0
    private void GameDetailsCallback(LobbyGameDetailsModel model)
    {
        bool isMeJoined = false;
        bool isMeReady  = false;
        bool isAllReady = true;

        if (model == null || model.GameState == GameRoomState.Closed)
        {
            OnBtnLeave();

            return;
        }

        if (model.GameState == GameRoomState.Started)
        {
            Debug.Log("Load game field scene.");

            GameFieldManager.StartGame(gameId, model);

            gameObject.SetActive(false);

            return;
        }

        foreach (Transform child in gamePlayersContent.transform)
        {
            Destroy(child.gameObject);
        }

        txtGameId.text = model.GameState + " game #" + model.GameId.Substring(24);

        isAllReady = model.JoinedPlayers >= 2;

        foreach (var gamePlayer in model.Players)
        {
            var item = GameObject.Instantiate(gamePlayerPrefab, gamePlayersContent.transform);
            item.transform.localScale = Vector3.one;

            item.txtPlayerName.text = gamePlayer.PlayerName;
            item.playerSign.sprite  = item.playerSigns[gamePlayer.Sign];

            item.readyStatusObject.SetActive(gamePlayer.IsReady);
            item.waitingStatusObject.SetActive(!gamePlayer.IsReady);

            if (!isMeJoined &&
                gamePlayer.PlayerId == myPlayerId)
            {
                isMeJoined = true;
            }

            if (!isMeReady &&
                isMeJoined &&
                gamePlayer.PlayerId == myPlayerId &&
                gamePlayer.IsReady)
            {
                isMeReady = true;
            }

            isAllReady = isAllReady && gamePlayer.IsReady;
        }

        btnStart.gameObject.SetActive(model.CreatedBy == myPlayerId);
        btnStart.interactable = isAllReady;
        btnReady.gameObject.SetActive(!isMeReady && isMeJoined);
        btnJoin.gameObject.SetActive(!isMeJoined);
        btnLeave.gameObject.SetActive(isMeJoined);
    }