Example #1
0
        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);
        }
Example #2
0
        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;
        }