예제 #1
0
    private bool OnRemoteRoundEnded(object cookie)
    {
        for (int i = 0, count = gameData.Players.Count; i < count; ++i)
        {
            PlayerData player = gameData.Players[i];
            player.Tricks[player.Tricks.Count - 1] = player.CurrentTricks;
            player.CurrentTricks = 0;
        }

        bool isGameOver = gameData.CurrentRoundNumber >= 12;

        if (!isGameOver)
        {
            gameData.CurrentRoundNumber++;
        }

        gameScreen.HideHandresult();
        gameScreen.ShowRoundResult(gameData, isGameOver);
        if (localPlayer.IsHost && currentPendingActions.Count == 0)
        {
            if (!isGameOver)
            {
                DealCards();
                Service.WebRequests.SetGameState(gameData, (response) =>
                {
                    TableRoundBeginAction roundBeginAction = new TableRoundBeginAction();
                    roundBeginAction.IsRoundBegun          = true;
                    Service.WebRequests.SendGameAction(gameData,
                                                       roundBeginAction, (res) => {});
                });
            }
            else
            {
                // Game over!
                gameData.IsFinished = true;
                Service.WebRequests.SetGameState(gameData, (response) =>
                {
                    Debug.Log("Game Over!");
                });
            }
        }
        return(false);
    }
예제 #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();
                });
            }
        }
    }
예제 #3
0
    public void PopulateFromJson(string json)
    {
        TableRoundBeginAction parsedAction = JsonUtility.FromJson <TableRoundBeginAction>(json);

        IsRoundBegun = parsedAction.IsRoundBegun;
    }