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); }
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(); }); } } }
public void PopulateFromJson(string json) { TableRoundBeginAction parsedAction = JsonUtility.FromJson <TableRoundBeginAction>(json); IsRoundBegun = parsedAction.IsRoundBegun; }