예제 #1
0
        public void LaunchGame(GameData gameData, string localPlayerName)
        {
            OhHellGameLoadParams loadParams =
                new OhHellGameLoadParams(gameData, LoadMainMenu, localPlayerName);

            sceneFactory.LoadScene <OhHellGameState>(OnSceneLoaded, loadParams);
        }
예제 #2
0
    public void Load(Action onLoadedCallback, object passedParams)
    {
        onLoaded = onLoadedCallback;
        OhHellGameLoadParams loadParams = (OhHellGameLoadParams)passedParams;

        gameData    = loadParams.GameData;
        localPlayer = gameData.GetPlayerByName(loadParams.LocalPlayerName);

        Service.EventManager.AddListener(EventId.RoundBegun, OnRoundBegun);
        Service.EventManager.AddListener(EventId.RemoteCardPlayed, OnRemoteCardPlayed);
        Service.EventManager.AddListener(EventId.RemoteTurnEnded, OnRemoteTurnEnded);
        Service.EventManager.AddListener(EventId.RemoteRoundEnded, OnRemoteRoundEnded);
        Service.EventManager.AddListener(EventId.GameEnded, OnGameEnded);
        Service.EventManager.AddListener(EventId.LocalBidPlaced, OnLocalBidPlaced);
        Service.EventManager.AddListener(EventId.RemoteBidPlaced, OnRemoteBidPlaced);
        Service.EventManager.AddListener(EventId.OnShowScoresClicked, ShowScores);
        Service.EventManager.AddListener(EventId.BidAdjusted, AdjustBid);

        Transform gameUiLayer = GameObject.Find("GameUILayer").transform;

        gameUi = GameObject.Instantiate(
            Resources.Load <GameObject>("GameScreen"),
            gameUiLayer);
        gameUi.SetActive(false);
        gameScreen = gameUi.GetComponent <GameScreen>();

        if (gameData.IsLaunched)
        {
            // Joined a game in progress.
            SyncGameState(() =>
            {
                seenActionIndex = gameData.CurrentActionIndex;
                onLoaded();
            });
        }
        else
        {
            // Joined a newly launched game.
            if (localPlayer.IsHost)
            {
                gameData.CurrentDealerIndex = gameData.Players.IndexOf(localPlayer);
                gameData.IsLaunched         = true;
                DealCards();
                Service.WebRequests.SetGameState(gameData, (response) =>
                {
                    TableRoundBeginAction beginRoundAction = new TableRoundBeginAction();
                    beginRoundAction.IsRoundBegun          = true;
                    Service.WebRequests.SendGameAction(gameData, beginRoundAction,
                                                       (beginResponse) =>
                    {
                        onLoaded();
                    });
                });
            }
            else
            {
                SyncGameState(() =>
                {
                    onLoaded();
                });
            }
        }
    }