public void RpcRoundStart(EventMessages.RoundStartInfo info) { var startState = new RoundStartState { CurrentRoundStatus = CurrentRoundStatus, LocalPlayerHandTiles = info.InitialHandTiles, OyaPlayerIndex = info.OyaPlayerIndex, Dice = info.Dice, Field = info.Field, Extra = info.Extra, RichiSticks = info.RichiSticks, MahjongSetData = info.MahjongSetData, Points = info.Points }; StateMachine.ChangeState(startState); }
public override void OnServerStateEnter() { MahjongSet.Reset(); // throwing dice var dice = Random.Range(CurrentRoundStatus.GameSettings.DiceMin, CurrentRoundStatus.GameSettings.DiceMax + 1); CurrentRoundStatus.NextRound(dice, NextRound, ExtraRound, KeepSticks); // draw initial tiles DrawInitial(); Debug.Log("[Server] Initial tiles distribution done"); CurrentRoundStatus.SortHandTiles(); CurrentRoundStatus.SetBonusTurnTime(gameSettings.BonusTurnTime); responds = new bool[players.Count]; var room = PhotonNetwork.CurrentRoom; for (int index = 0; index < players.Count; index++) { var tiles = CurrentRoundStatus.HandTiles(index); Debug.Log($"[Server] Hand tiles of player {index}: {string.Join("", tiles)}"); var info = new EventMessages.RoundStartInfo { PlayerIndex = index, Field = CurrentRoundStatus.Field, Dice = CurrentRoundStatus.Dice, Extra = CurrentRoundStatus.Extra, RichiSticks = CurrentRoundStatus.RichiSticks, OyaPlayerIndex = CurrentRoundStatus.OyaPlayerIndex, Points = CurrentRoundStatus.Points.ToArray(), InitialHandTiles = tiles, MahjongSetData = MahjongSet.Data }; var player = CurrentRoundStatus.GetPlayer(index); ClientBehaviour.Instance.photonView.RPC("RpcRoundStart", player, info); } firstTime = Time.time; }