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); }
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; }