Exemplo n.º 1
0
    public void UpdateData(FightUserModel model)
    {
        if (TeamInfo.ContainsKey(model.id))
        {
            //TODO:刷新玩家信息
            UpdateItem(model);
            return;
        }
        //添加队伍成员
        TeamInfo.Add(model.id, model);
        //将队伍成员的id进行缓存,直到收到玩家自己的信息
        if (!TeamInfo.ContainsKey(GameSession.Instance.UserInfo.id))
        {
            cacheId.Add(model.id);
            return;
        }
        int userdir = TeamInfo[GameSession.Instance.UserInfo.id].direction;

        for (int i = 0; i < cacheId.Count; i++)
        {
            UpdateItem(TeamInfo[cacheId[i]]);
        }
        cacheId.Clear();
        UpdateItem(model);
    }
Exemplo n.º 2
0
    /// <summary>
    /// 刷新赢三张用户手牌的绑定
    /// </summary>
    /// <param name="model"></param>
    protected override void UpdateItem(FightUserModel model)
    {
        int userid  = GameSession.Instance.UserInfo.id;
        int userdir = TeamInfo[userid].Direction;

        //待刷新的用户是否为玩家自己
        if (model.id == userid)
        {
            //添加玩家ID和玩家手牌的绑定
            if (!UserCardList.ContainsKey(model.id))
            {
                UserCardList.Add(model.id, transform.Find("mypoker").gameObject);
            }
            else
            {
                UserCardList[model.id] = transform.Find("mypoker").gameObject;
            }
            RechangeStatus(2, model.id);
        }
        else
        {
            //玩家方位在组件中的尾缀
            int dir = 0;
            //如果用户方位大于玩家自己的方位
            if (model.Direction > userdir)
            {
                dir = model.Direction - userdir;
            }
            else
            {
                dir = GameApp.Instance.UI_HeadScript.PosList.Count - userdir + model.Direction;
            }
            if (!UserCompareList.ContainsKey(model.id))
            {
                UserCardList.Add(model.id, transform.Find("reqCompare/Button" + dir).gameObject);
            }
            else
            {
                UserCardList[model.id] = transform.Find("reqCompare/Button" + dir).gameObject;
            }
            UserCardList[model.id].SetActive(true);
            int modeid = model.id;
            //向服务器请求比牌
            UserCardList[model.id].GetComponent <Button>().onClick.RemoveAllListeners();
            UserCardList[model.id].GetComponent <Button>().onClick.AddListener(delegate() {
                this.Write(TypeProtocol.FIGHT, FightProtocol.TPCOMCARD_CREQ, modeid);
            });
            //添加玩家ID和玩家手牌的绑定
            if (!UserCardList.ContainsKey(model.id))
            {
                UserCardList.Add(model.id, transform.Find("playerPoker/player" + dir).gameObject);
            }
            else
            {
                UserCardList[model.id] = transform.Find("playerPoker/player" + dir).gameObject;
            }
        }
        UserCardList[model.id].gameObject.SetActive(false);
    }
Exemplo n.º 3
0
 /// <summary>
 /// 刷新玩家的信息
 /// </summary>
 public void UpdateItem(FightUserModel model)
 {
     if (!nick)
     {
         nick = transform.Find("nick").GetComponent <Text>();
     }
     if (!coin)
     {
         coin = transform.Find("coin").GetComponent <Text>();
     }
     nick.text = model.nickname;
     coin.text = model.coin.ToString();
 }
Exemplo n.º 4
0
        /// <summary>
        /// 初始化房间
        /// </summary>
        /// <param name="model"></param>
        public void Init(MatchInfoModel model)
        {
            //初始化房间类型
            GameType = model.GameType;
            //初始化队伍成员
            TemeId.Clear();
            TemeId.AddRange(model.Team);
            //初始化房间ID
            RoomId = model.RoomId;
            //初始化人数
            MaxPlayer = model.MaxPlayer;
            //添加方位数量
            for (int i = 0; i < MaxPlayer; i++)
            {
                Direction.Add(i);
            }
            //初始化玩家信息
            for (int i = 0; i < model.Team.Count; i++)
            {
                FightUserModel m = new FightUserModel();
                //获取用户信息
                RoleInfo ri = cache.CacheFactory.user.Get(model.Team[i]);
                //如果获取到,则将玩家信息赋值给用户信息
                if (ri != null)
                {
                    m.coin     = ri.coin;
                    m.nickname = ri.nickname;
                    m.id       = ri.id;
                }
                //否则,设置为默认信息
                else
                {
                    m.coin     = 0;
                    m.nickname = "nickname";
                    m.id       = model.Team[i];
                }
                //赋值玩家当前方位
                m.Direction = Direction[0];
                Direction.RemoveAt(0);
                UserFight.Add(m.id, m);
            }
            //广播玩家信息
            for (int i = 0; i < TemeId.Count; i++)
            {
                Broadcast(FightProtocol.PLAYERINFO_BRQ, UserFight[TemeId[i]]);
            }

            DebugUtil.Instance.LogToTime(RoomId + "房间初始化成功");
        }
Exemplo n.º 5
0
    /// <summary>
    /// 刷新队伍成员信息
    /// </summary>
    /// <param name="model"></param>
    public void UpdateTeam(FightUserModel model)
    {
        if (TeamInfo.ContainsKey(model.id))
        {
            if (TeamInfo.ContainsKey(GameSession.Instance.UserInfo.id))
            {
                //TODO:更新玩家信息
                GameApp.Instance.UI_HeadScript.UpdateItem(model, TeamInfo[GameSession.Instance.UserInfo.id].direction);
            }
            return;
        }
        switch (GameSession.Instance.RoomeType)
        {
        //如果当前游戏类型是赢三张,则直接刷新赢三张手牌脚本
        case SConst.GameType.WINTHREEPOKER:
            GameApp.Instance.CardOtherScript.GetCardOther <TPCardOther>().UpdateData(model);
            break;
        }
        //添加队伍成员
        TeamInfo.Add(model.id, model);
        //将队伍成员的id进行缓存,直到收到玩家自己的信息
        if (!TeamInfo.ContainsKey(GameSession.Instance.UserInfo.id))
        {
            cacheId.Add(model.id);
            return;
        }
        int userdir = TeamInfo[GameSession.Instance.UserInfo.id].direction;

        for (int i = 0; i < cacheId.Count; i++)
        {
            GameApp.Instance.UI_HeadScript.UpdateItem(TeamInfo[cacheId[i]], userdir);
        }
        cacheId.Clear();
        GameApp.Instance.UI_HeadScript.UpdateItem(model, userdir);
        if (TeamInfo.Count >= GameApp.Instance.GetPlayerCount())
        {
            //TODO:游戏即将开始
        }
    }
Exemplo n.º 6
0
    /// <summary>
    /// 当前待刷新的玩家信息和玩家自己的方位
    /// </summary>
    /// <param name="model"></param>
    /// <param name="userdir"></param>
    public void UpdateItme(FightUserModel model, int userdir)
    {
        //移除原有信息
        if (HeadList.ContainsKey(model.id))
        {
            HeadList[model.id].GetComponent <HeadItem>().UpdateItem(model);
            return;
        }
        //头像待刷新的位置
        Vector3 pos;

        //如果是玩家自己,则直接使用第零个
        if (model.id == GameSession.Instance.UserInfo.id)
        {
            pos = PosList[0];
        }
        else
        {
            //如果玩家方位大于自己的方位的话
            if (model.Direction > userdir)
            {
                //直接用玩家的方位减去自己的方位即为玩家的头像位置
                pos = PosList[model.Direction - userdir];
            }
            else
            {
                //用玩家最大人数减去自己的方位再加上玩家的方位,即为玩家的位置
                pos = PosList[PosList.Count - userdir + model.Direction];
            }
        }
        //加载头像到页面中
        string     path = GameResource.ItemResourcePath + GameData.Instance.ItemName[GameResource.ItemTag.TPHEAD];
        GameObject go   = GameApp.Instance.ResourcesManagerScript.LoadInstantiateGameObject(path, transform, pos);

        go.AddComponent <HeadItem>().UpdateItem(model);
        HeadList.Add(model.id, go);
    }
Exemplo n.º 7
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;
        }
    }
Exemplo n.º 8
0
 /// <summary>
 /// 根据游戏刷新具体的功能组件
 /// </summary>
 /// <param name="model"></param>
 protected virtual void UpdateItem(FightUserModel model)
 {
 }