Esempio n. 1
0
        /// <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();
            }
        }
Esempio n. 2
0
    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;
        }
    }
Esempio n. 3
0
    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);
    }