/// <summary> /// 请求比牌 /// </summary> /// <param name="uid">比牌的玩家</param> /// <param name="cid">被比牌的玩家</param> private void ReqComCard(int uid, int cid) { if (!UserFight.ContainsKey(uid) || !LoopOrder.Contains(uid)) { DebugUtil.Instance.LogToTime(uid + "请求比牌失败,没有此玩家"); return; } if (!UserFight.ContainsKey(cid) || !LoopOrder.Contains(cid)) { DebugUtil.Instance.LogToTime(cid + "请求比牌失败,没有此玩家"); return; } if (LoopOrder [0] != uid) { DebugUtil.Instance.LogToTime(cid + "请求比牌错误,当前不是此玩家"); SendMessage(uid, FightProtocol.TPCOMCARD_SRES, -2); return; } if (!IsGameStart) { DebugUtil.Instance.LogToTime(uid + "请求错误,游戏尚未开始"); SendMessage(uid, FightProtocol.TPCOMCARD_SRES, -3); return; } int coin = NowScore; if (CheckList.Contains(uid)) { coin *= 2; } if (coin == 4) { coin = 5; } //将当前下注玩家和下注金额添加到集合中,等待结算 if (!BetCoinList.ContainsKey(uid)) { BetCoinList.Add(uid, new List <int>()); } BetCoinList[uid].Add(NowScore); //声明待广播的数据,将下注数据广播 TPBetModel tpm = new TPBetModel(); tpm.id = uid; tpm.coin = coin; tpm.isAdd = false; Broadcast(FightProtocol.TPBETCOIN_BRQ, tpm); //更新玩家筹码后广播给所有玩家 UserFight[uid].coin -= coin; Broadcast(FightProtocol.PLAYERINFO_BRQ, UserFight[uid]); //首轮可比 三轮可比 五轮可比 //默认首轮可比,将玩家的手牌和被比玩家的手牌传入,获取结果 bool GetResult = TPokerUtil.GetComparePoker(UserFight[uid].poker, UserFight[cid].poker); DebugUtil.Instance.LogToTime(uid + "请求和" + cid + "比牌,比牌结果为:" + GetResult); for (int i = 0; i < LoopOrder.Count; i++) { TPCompareModel model = new TPCompareModel(); model.userId = uid; model.compId = cid; model.Result = GetResult; //如果是比牌或被比牌的玩家,则可以看到牌 if (LoopOrder [i] == uid || LoopOrder [i] == cid) { model.PokerList1.AddRange(UserFight[uid].poker); model.PokerList2.AddRange(UserFight[cid].poker); } SendMessage(LoopOrder[i], FightProtocol.TPCOMCARD_BRQ, model); } if (GetResult) { LoopOrder.Remove(cid); } else { LoopOrder.Remove(uid); } if (LoopOrder.Count == 1) { GameOver(); } }
public void MessageReceiveCallBack(SocketModel model) { switch (model.command) { //玩家信息 case FightProtocol.PLAYERINFO_BRQ: { FightUserModel user = model.GetMessage <FightUserModel>(); GameApp.Instance.UI_FightScript.UpdateTeam(user); } break; //玩家请求准备结果 case FightProtocol.ENTERFIGHT_SRES: { int res = model.GetMessage <int>(); switch (res) { case -1: case 0: GameApp.Instance.CommonHintDlgScript.OpenHint("已准备"); break; case -2: GameApp.Instance.CommonHintDlgScript.OpenHint("房间错误"); break; } } break; //确认准备的玩家列表 case FightProtocol.ENTERFIGHT_BRQ: { //已经准备的玩家id的数组 List <int> arr = model.GetMessage <List <int> >(); } break; //玩家摸到的牌 case FightProtocol.TPDRAWCARD_BRQ: { List <PokerModel> poker = new List <PokerModel>(); } break; //摸牌的玩家 case FightProtocol.TPDRAWCARDUSER_BRQ: { int id = model.GetMessage <int>(); GameApp.Instance.CardOtherScript.GetCardOther <TPCardOther>().DrawCard(id); } break; //获取底注 case FightProtocol.TPBETBASECOIN_BRQ: { int coin = model.GetMessage <int>(); GameApp.Instance.CardOtherScript.GetCardOther <TPCardOther>().BetBaseCoin(coin); } break; /// <summary> /// 返回下注结果 /// -1 请求错误,没有此玩家 /// -2 请求错误,当前不是此玩家 /// -3 请求错误,游戏尚未开始 /// -4 低于当前可下最小金额 /// -5 大于当前可下最大金额 /// </summary> case FightProtocol.TPBETCOIN_SRES: { int res = model.GetMessage <int>(); switch (res) { case -4: { GameApp.Instance.CommonHintDlgScript.OpenHint("小于当前最小金额"); } break; case -5: { GameApp.Instance.CommonHintDlgScript.OpenHint("大于当前最大金额"); } break; } } break; //玩家下注广播 case FightProtocol.TPBETCOIN_BRQ: { TPBetModel m = model.GetMessage <TPBetModel>(); GameApp.Instance.CardOtherScript.GetCardOther <TPCardOther>().BetCoin(m.coin); //播放音效,默认加注,否则跟注 string path = GameResources.TPAudioResourcesPath + GameData.Instance.MusicTag[GameResources.MusicTag.TPADDBETCOIN]; if (!m.isAdd) { path = GameResources.TPAudioResourcesPath + GameData.Instance.MusicTag[GameResources.MusicTag.TPWITHBETCOIN]; } GameApp.Instance.MusicManagerScript.PlayAudioEffect(path); } break; case FightProtocol.TPCHECKCARD_SRES: { GameApp.Instance.CardOtherScript.GetCardOther <TPCardOther>().CheckCard(model.GetMessage <List <PokerModel> >()); } break; case FightProtocol.TPCHECKCARD_BRQ: { string path = GameResources.AudioResourcesPath + GameData.Instance.MusicTag[GameResources.MusicTag.TPCHECKCARD]; GameApp.Instance.MusicManagerScript.PlayAudioEffect(path); GameApp.Instance.CardOtherScript.GetCardOther <TPCardOther>().RechangeStatus(0, model.GetMessage <int>()); } break; case FightProtocol.TPDISCARD_BRQ: { GameApp.Instance.CardOtherScript.GetCardOther <TPCardOther>().RechangeStatus(1, model.GetMessage <int>()); } break; case FightProtocol.TPCOMCARD_BRQ: { TPCompareModel tpcm = model.GetMessage <TPCompareModel>(); string path = GameResources.AudioResourcesPath + GameData.Instance.MusicTag[GameResources.MusicTag.TPCOMCARD]; GameApp.Instance.MusicManagerScript.PlayAudioEffect(path); GameApp.Instance.CardOtherScript.GetCardOther <TPCardOther>().Compare(tpcm); } break; //游戏结算 case FightProtocol.GAMESETTLMENT_BRQ: { GameApp.Instance.UI_FightScript.GetUIFight <TPUI_Fight>().GameOver(model.GetMessage <List <TPSettlementModel> >()); } break; } }
public void Compare(TPCompareModel Model) { transform.Find("reqCompare").gameObject.SetActive(false); Transform tf = transform.Find("compare"); //请求比牌的玩家信息(昵称) string name1 = TeamInfo[Model.userId].nickname; Text texName1 = tf.Find("Text1").GetComponent <Text>(); texName1.text = name1; Text texFinish1 = tf.Find("TextFinish1").GetComponent <Text>(); texFinish1.text = ""; //被请求比牌的玩家信息(昵称) string name2 = TeamInfo[Model.compId].nickname; Text texName2 = tf.Find("Text2").GetComponent <Text>(); texName2.text = name2; Text texFinish2 = tf.Find("TextFinish2").GetComponent <Text>(); texFinish2.text = ""; //刷新左边手牌的显示 for (int i = 0; i < 3; i++) { Image card = tf.Find("Image1" + (i + 1)).GetComponent <Image>(); //如果扑克列表中不包含此张牌,则直接设置为背面 if (Model.PokerList1.Count < i + 1) { card.sprite = GameApp.Instance.ResourcesManagerScript.LoadSprite(GameResource.PokerBgResourcePath); } else { //正面牌面 card.sprite = GameApp.Instance.ResourcesManagerScript.LoadSprite( GameResource.PokerResourcePath + "_" + Model.PokerList1[i].Value + "_" + Model.PokerList1[i].Color); } } //刷新右边手牌的显示 for (int i = 0; i < 3; i++) { Image card = tf.Find("Image2" + (i + 1)).GetComponent <Image>(); //如果扑克列表中不包含此张牌,则直接设置为背面 if (Model.PokerList2.Count < i + 1) { card.sprite = GameApp.Instance.ResourcesManagerScript.LoadSprite(GameResource.PokerBgResourcePath); } else { //正面牌面 card.sprite = GameApp.Instance.ResourcesManagerScript.LoadSprite( GameResource.PokerResourcePath + "_" + Model.PokerList2[i].Value + "_" + Model.PokerList2[i].Color); } } tf.gameObject.SetActive(true); GameApp.Instance.TimeManagerScript.AddSchedule(delegate() { //将比牌结果显示出来 if (Model.Result) { texFinish1.text = "胜"; texFinish2.text = "负"; RechangeStatus(3, Model.compId); } else { texFinish1.text = "负"; texFinish2.text = "胜"; RechangeStatus(3, Model.userId); } }, 2000); GameApp.Instance.TimeManagerScript.AddSchedule(delegate() { //将比牌结果隐藏 tf.gameObject.SetActive(false); }, 5000); }