Example #1
0
 //成为地主
 public static void TurnLandlord(this JoyLdsPlayer joyLdsPlayer, RepeatedField <int> landordThreeCard)
 {
     for (int i = 0; i < landordThreeCard.Count; i++)
     {
         joyLdsPlayer.pHnads.Add(landordThreeCard[i]);
     }
 }
        //确定谁是地主
        public static void ConfirmLandlord(this JoyLdsRoom joyLdsRoom)
        {
            JoyLdsPlayer ldsPlayer = joyLdsRoom.pJoyLdsPlayerDic[joyLdsRoom.SelectCallOrRobLandlordSeatIndex];                       //要成为地主的玩家

            ldsPlayer.TurnLandlord(joyLdsRoom.LdsThreeCard);                                                                         //玩家成为地主
            joyLdsRoom.ConfirmCampBroadcast(joyLdsRoom.SelectCallOrRobLandlordSeatIndex, ldsPlayer.pHnads, joyLdsRoom.LdsThreeCard); //直接广播确定地主的消息
            joyLdsRoom.CanPlayCardBroadcast(joyLdsRoom.LandlordSeatIndex, true);                                                     //确定完地主后马上就广播可以出牌的消息
        }
Example #3
0
        //发牌 记录自己的手牌并且发送给客户端发牌的消息
        public static void Deal(this JoyLdsPlayer joyLdsPlayer, RepeatedField <int> cards)
        {
            joyLdsPlayer.pHnads = cards;
            Actor_JoyLds_Deal actorJoyLdsDeal = new Actor_JoyLds_Deal();

            actorJoyLdsDeal.Cards.Add(joyLdsPlayer.pHnads.ToArray());
            joyLdsPlayer.SendMessageUser(actorJoyLdsDeal);
        }
Example #4
0
        public static async Task <JoyLdsPlayer> Create(MatchPlayerInfo matchPlayer, JoyLdsRoom joyLdsRoom)
        {
            JoyLdsPlayer joyLdsPlayer = ComponentFactory.Create <JoyLdsPlayer>();

            joyLdsPlayer.pSeatIndex = matchPlayer.SeatIndex;
            joyLdsPlayer.pUser      = matchPlayer.User;
            joyLdsPlayer.pUser.AddComponent <UserGateActorIdComponent>().ActorId = matchPlayer.SessionActorId;
            joyLdsPlayer.pJoyLdsRoom = joyLdsRoom;
            //添加收取Actor消息组件 并且本地化一下 就是所有服务器都能向这个对象发
            await joyLdsPlayer.AddComponent <MailBoxComponent>().AddLocation();

            return(joyLdsPlayer);
        }
Example #5
0
        public static async Task <JoyLdsRoom> Create(M2S_StartGame m2SStartGame)
        {
            JoyLdsRoom joyLdsRoom = ComponentFactory.Create <JoyLdsRoom>();

            joyLdsRoom.BesansLowest = m2SStartGame.RoomConfig.BesansLowest;
            joyLdsRoom.BaseMultiple = m2SStartGame.RoomConfig.BaseScore;
            foreach (var matchPlayer in m2SStartGame.MatchPlayerInfos)
            {
                JoyLdsPlayer joyLdsPlayer = await JoyLdsPlayerFactory.Create(matchPlayer, joyLdsRoom);

                joyLdsRoom.pJoyLdsPlayerDic.Add(joyLdsPlayer.pSeatIndex, joyLdsPlayer);
            }
            return(joyLdsRoom);
        }
Example #6
0
 //玩家出牌
 public static void PlayHand(this JoyLdsPlayer joyLdsPlayer, RepeatedField <int> cards)
 {
     foreach (var card in cards)
     {
         if (joyLdsPlayer.pHnads.Contains(card))
         {
             joyLdsPlayer.pHnads.Remove(card);
         }
         else
         {
             Log.Info("要出的牌自己手中没有:" + card);
         }
     }
 }
Example #7
0
 //发送玩家所在的网关服
 public static void SendUserGateMessage(this JoyLdsPlayer joyLdsPlayer, IMessage iMessage)
 {
     joyLdsPlayer.pUser.SendUserGateSession(iMessage);
 }
Example #8
0
 //发送消息给客户端
 public static void SendMessageUser(this JoyLdsPlayer joyLdsPlayer, IActorMessage iActorMessage)
 {
     joyLdsPlayer.pUser.SendeSessionClientActor(iActorMessage);
 }
Example #9
0
 //检测自己的手牌 是否为空
 public static bool IsHandEmpty(this JoyLdsPlayer joyLdsPlayer)
 {
     return(joyLdsPlayer.pHnads.Count == 0);
 }
Example #10
0
 //结束游戏
 public static void EndGame(this JoyLdsPlayer joyLdsPlayer)
 {
     //  joyLdsPlayer.SendUserGateMessage(
     //   new S2G_UserEndGame() { UserId = joyLdsPlayer.pUser.UserId});//通知用户所在的网关服结束游戏
 }
Example #11
0
 //开始游戏
 public static void StartGame(this JoyLdsPlayer joyLdsPlayer, Actor_JoyLds_StartGame actorJoyLdsStartGame)
 {
     // joyLdsPlayer.SendUserGateMessage(
     //      new S2G_UserStartGame() {UserId = joyLdsPlayer.pUser.UserId, SessionActorId = joyLdsPlayer.Id});//通知用户所在的网关服开始游戏
     joyLdsPlayer.SendMessageUser(actorJoyLdsStartGame);//通知客户端开始游戏
 }