示例#1
0
        public void RpcTsumo(EventMessages.TsumoInfo info)
        {
            var tsumoState = new PlayerTsumoState
            {
                CurrentRoundStatus = CurrentRoundStatus,
                TsumoPlayerIndex   = info.TsumoPlayerIndex,
                TsumoPlayerName    = info.TsumoPlayerName,
                TsumoHandData      = info.TsumoHandData,
                WinningTile        = info.WinningTile,
                DoraIndicators     = info.DoraIndicators,
                UraDoraIndicators  = info.UraDoraIndicators,
                IsRichi            = info.IsRichi,
                TsumoPointInfo     = info.TsumoPointInfo,
                TotalPoints        = info.TotalPoints
            };

            StateMachine.ChangeState(tsumoState);
        }
示例#2
0
        public override void OnServerStateEnter()
        {
            PhotonNetwork.AddCallbackTarget(this);
            int multiplier = gameSettings.GetMultiplier(CurrentRoundStatus.IsDealer(TsumoPlayerIndex), players.Count);
            var netInfo    = new NetworkPointInfo
            {
                Fu         = TsumoPointInfo.Fu,
                YakuValues = TsumoPointInfo.YakuList.ToArray(),
                Dora       = TsumoPointInfo.Dora,
                UraDora    = TsumoPointInfo.UraDora,
                RedDora    = TsumoPointInfo.RedDora,
                IsQTJ      = TsumoPointInfo.IsQTJ
            };
            var info = new EventMessages.TsumoInfo
            {
                TsumoPlayerIndex  = TsumoPlayerIndex,
                TsumoPlayerName   = CurrentRoundStatus.GetPlayerName(TsumoPlayerIndex),
                TsumoHandData     = CurrentRoundStatus.HandData(TsumoPlayerIndex),
                WinningTile       = WinningTile,
                DoraIndicators    = MahjongSet.DoraIndicators,
                UraDoraIndicators = MahjongSet.UraDoraIndicators,
                IsRichi           = CurrentRoundStatus.RichiStatus(TsumoPlayerIndex),
                TsumoPointInfo    = netInfo,
                TotalPoints       = TsumoPointInfo.BasePoint * multiplier
            };

            // send rpc calls
            ClientBehaviour.Instance.photonView.RPC("RpcTsumo", RpcTarget.AllBufferedViaServer, info);
            // get point transfers
            // todo -- tsumo loss related, now there is tsumo loss by default
            transfers = new List <PointTransfer>();
            for (int playerIndex = 0; playerIndex < players.Count; playerIndex++)
            {
                if (playerIndex == TsumoPlayerIndex)
                {
                    continue;
                }
                int amount = TsumoPointInfo.BasePoint;
                if (CurrentRoundStatus.IsDealer(playerIndex))
                {
                    amount *= 2;
                }
                int extraPoints = CurrentRoundStatus.ExtraPoints;
                transfers.Add(new PointTransfer
                {
                    From   = playerIndex,
                    To     = TsumoPlayerIndex,
                    Amount = amount + extraPoints
                });
            }

            // richi-sticks-points
            transfers.Add(new PointTransfer
            {
                From   = -1,
                To     = TsumoPlayerIndex,
                Amount = CurrentRoundStatus.RichiSticksPoints
            });
            responds = new bool[players.Count];
            // determine server time out
            serverTimeOut = ServerMaxTimeOut + ServerConstants.ServerTimeBuffer;
            firstTime     = Time.time;
        }