//成为地主 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); //确定完地主后马上就广播可以出牌的消息 }
//发牌 记录自己的手牌并且发送给客户端发牌的消息 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); }
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); }
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); }
//玩家出牌 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); } } }
//发送玩家所在的网关服 public static void SendUserGateMessage(this JoyLdsPlayer joyLdsPlayer, IMessage iMessage) { joyLdsPlayer.pUser.SendUserGateSession(iMessage); }
//发送消息给客户端 public static void SendMessageUser(this JoyLdsPlayer joyLdsPlayer, IActorMessage iActorMessage) { joyLdsPlayer.pUser.SendeSessionClientActor(iActorMessage); }
//检测自己的手牌 是否为空 public static bool IsHandEmpty(this JoyLdsPlayer joyLdsPlayer) { return(joyLdsPlayer.pHnads.Count == 0); }
//结束游戏 public static void EndGame(this JoyLdsPlayer joyLdsPlayer) { // joyLdsPlayer.SendUserGateMessage( // new S2G_UserEndGame() { UserId = joyLdsPlayer.pUser.UserId});//通知用户所在的网关服结束游戏 }
//开始游戏 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);//通知客户端开始游戏 }