Пример #1
0
        public void RpcDiscardOperation(EventMessages.DiscardOperationInfo info)
        {
            var discardOperationState = new PlayerDiscardOperationState
            {
                CurrentRoundStatus = CurrentRoundStatus,
                CurrentPlayerIndex = info.CurrentTurnPlayerIndex,
                IsRichiing         = info.IsRichiing,
                DiscardingLastDraw = info.DiscardingLastDraw,
                Tile          = info.Tile,
                BonusTurnTime = info.BonusTurnTime,
                Zhenting      = info.Zhenting,
                Operations    = info.Operations,
                HandTiles     = info.HandTiles,
                Rivers        = info.Rivers
            };

            StateMachine.ChangeState(discardOperationState);
        }
Пример #2
0
        public override void OnServerStateEnter()
        {
            PhotonNetwork.AddCallbackTarget(this);
            if (CurrentRoundStatus.CurrentPlayerIndex != CurrentPlayerIndex)
            {
                Debug.LogError("[Server] currentPlayerIndex does not match, this should not happen");
                CurrentRoundStatus.CurrentPlayerIndex = CurrentPlayerIndex;
            }

            UpdateRoundStatus();
            Debug.Log($"[Server] CurrentRoundStatus: {CurrentRoundStatus}");
            responds   = new bool[players.Count];
            operations = new OutTurnOperation[players.Count];
            var rivers = CurrentRoundStatus.Rivers;

            // Get messages and send them to players
            for (int i = 0; i < players.Count; i++)
            {
                var info = new EventMessages.DiscardOperationInfo
                {
                    PlayerIndex            = i,
                    CurrentTurnPlayerIndex = CurrentPlayerIndex,
                    IsRichiing             = IsRichiing,
                    DiscardingLastDraw     = DiscardLastDraw,
                    Tile          = DiscardTile,
                    BonusTurnTime = CurrentRoundStatus.GetBonusTurnTime(i),
                    Zhenting      = CurrentRoundStatus.IsZhenting(i),
                    Operations    = GetOperations(i),
                    HandTiles     = CurrentRoundStatus.HandTiles(i),
                    Rivers        = rivers
                };
                var player = CurrentRoundStatus.GetPlayer(i);
                ClientBehaviour.Instance.photonView.RPC("RpcDiscardOperation", player, info);
            }

            firstSendTime = Time.time;
            serverTimeOut = gameSettings.BaseTurnTime + CurrentRoundStatus.MaxBonusTurnTime
                            + ServerConstants.ServerTimeBuffer;
        }