/// <summary> /// 处理下注事件 /// </summary> /// <param name="uid"></param> /// <param name="coin"></param> /// <param name="initCoin"></param> private void Bet(int uid, int coin, bool initCoin) { //将当前下注玩家和下注金额添加到集合中,等待结算 if (!BetCoinList.ContainsKey(uid)) { BetCoinList.Add(uid, new List <int>()); } BetCoinList[uid].Add(coin); //声明待广播的数据,将下注数据广播 TPBetModel tpm = new TPBetModel(); tpm.id = uid; tpm.coin = coin; tpm.isAdd = initCoin; Broadcast(FightProtocol.TPBETCOIN_BRQ, tpm); //更新玩家筹码后广播给所有玩家 UserFight[uid].coin -= coin; Broadcast(FightProtocol.PLAYERINFO_BRQ, UserFight[uid]); //将当前玩家移动到最后面,让下一家发话 LoopOrder.Add(LoopOrder[0]); LoopOrder.RemoveAt(0); DebugUtil.Instance.LogToTime(uid + "下注" + coin + "房间号" + RoomId + "是否看牌" + CheckList.Contains(uid)); }
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; } }
/// <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(); } }