示例#1
0
        public void updateHeroCard(IntPtr ptrParam, int nPtrLen)
        {
            IntPtrVaArgParseHelper helper = new IntPtrVaArgParseHelper(ptrParam, nPtrLen);
            int nCount  = helper.get <int>();
            int dwPDBID = EntityFactory.MainHeroView.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_ID);

            for (int i = 0; i < nCount; i++)
            {
                cmd_entity_update_card_info node = helper.get <cmd_entity_update_card_info>();
                // Hero更新
                ActorHeroInfo info = null;
                if (actorHero.TryGetValue(dwPDBID, out info))
                {
                    if (info.dicEntityHeroInfo.ContainsKey(node.nCardID))
                    {
                        cmd_entity_hero_info temp = info.dicEntityHeroInfo[node.nCardID];
                        temp.nCardCount = node.nCardCount;
                        info.dicEntityHeroInfo[node.nCardID] = temp;
                    }
                    if (info.dicEntityNoHaveHeroInfo.ContainsKey(node.nCardID))
                    {
                        cmd_entity_nohanve_hero temp = info.dicEntityNoHaveHeroInfo[node.nCardID];
                        temp.nHaveCardCount = node.nCardCount;
                        info.dicEntityNoHaveHeroInfo[node.nCardID] = temp;
                    }
                }
            }

            UISystem.Instance.SendWndMessage(WndMsgID.WND_MSG_HEROPREVIEWFRAME_GETHEROINFO, null);
            checkAllHeroIsHaveCanUpStar();
        }
示例#2
0
        public void setHeroInfo(cmd_entity_hero_info cmdInfo, int nMaxExp)
        {
            nHeroID = cmdInfo.nHeroID;
            // 此处由于可能找不到对应的头像,策划特别提出随便加一个先
            heroIcon.sprite = USpriteManager.Instance.GetSprite(USpriteManager.ESpriteType.EST_HeadPortrait, WndID.WND_ID_PLAYERFRAME, 1, 6, cmdInfo.nHeroID);
            if (heroIcon.sprite == null)
            {
                heroIcon.sprite = USpriteManager.Instance.GetSprite(USpriteManager.ESpriteType.EST_HeadPortrait, WndID.WND_ID_PLAYERFRAME, 1, 6, 10);
            }

            heroName.text              = cmdInfo.chHeroName;
            heroStarLv.text            = cmdInfo.byStarLv.ToString();
            heroWinPro.text            = cmdInfo.usWinPro.ToString() + "%";
            matchCount.text            = cmdInfo.nGameCount.ToString();
            heroUseTimeSlider.maxValue = nMaxExp;
            heroUseTimeSlider.value    = cmdInfo.nGameCount;

            int nStarLvLimit = GameLogicAPI.getHeroStarLvLimit(nHeroID);
            int nHeroStar    = cmdInfo.byStarLv;

            nHeroStar = nHeroStar > nStarLvLimit ? nStarLvLimit : nHeroStar;
            heroStarItem.SetData(nHeroID, nHeroStar, false, false);

            setVisible(true);
        }
示例#3
0
        public void UpdataAllHero(IntPtr ptrParam, int nPtrLen)
        {
            IntPtrVaArgParseHelper helper = new IntPtrVaArgParseHelper(ptrParam, nPtrLen);

            cmd_pdbid_count haveHeroInfo = helper.get <cmd_pdbid_count>();
            ActorHeroInfo   info         = null;

            if (actorHero.TryGetValue(haveHeroInfo.dwPDBID, out info) == false)
            {
                return;
            }

            info.dicEntityHeroInfo.Clear();
            for (int i = 0; i < haveHeroInfo.nCount; ++i)
            {
                cmd_entity_hero_info data = helper.get <cmd_entity_hero_info>();
                info.dicEntityHeroInfo[data.nHeroID] = data;
            }

            cmd_count noHaveHeroInfo = helper.get <cmd_count>();

            info.dicEntityNoHaveHeroInfo.Clear();
            for (int i = 0; i < noHaveHeroInfo.nCount; i++)
            {
                cmd_entity_nohanve_hero data1 = helper.get <cmd_entity_nohanve_hero>();
                info.dicEntityNoHaveHeroInfo[data1.nHeroID] = data1;
            }

            UISystem.Instance.SendWndMessage(WndMsgID.WND_MSG_HEROPREVIEWFRAME_GETHEROINFO, null);
            checkAllHeroIsHaveCanUpStar();

            // 更新已下发详细英雄信息
            int actorID = EntityFactory.MainHeroView.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_ID);

            foreach (var item in actorHeroDetail)
            {
                if (item.Key.nPDBID == actorID)
                {
                    RequestHeroDetailInfo(item.Key, HeroDetailReqType.HDRT_REFRESH);
                }
            }
        }
示例#4
0
        public void RequestHeroDetailInfo(PDBIDandHeroID nMultiKey, HeroDetailReqType eType = HeroDetailReqType.HDRT_INIT)
        {
            // 设置详细英雄界面信息请求标志位
            eHeroDetailReqType = eType;

            cmd_entity_hero_info cmdHeroInfo = new cmd_entity_hero_info();

            // Player界面取一次
            ActorPlayerInfo playerInfo = null;

            if (actorPlayer.TryGetValue(nMultiKey.nPDBID, out playerInfo))
            {
                foreach (var value in playerInfo.strongHeroInfoList)
                {
                    if (value.nHeroID == nMultiKey.nHeroID)
                    {
                        cmdHeroInfo = value;
                        break;
                    }
                }
            }

            // Hero界面取一次
            if (cmdHeroInfo.nHeroID == 0)
            {
                ActorHeroInfo heroInfo = null;
                if (actorHero.TryGetValue(nMultiKey.nPDBID, out heroInfo))
                {
                    heroInfo.dicEntityHeroInfo.TryGetValue(nMultiKey.nHeroID, out cmdHeroInfo);
                }
            }

            // nHeroID > 0,则表示该英雄有数据;bIsBuy > 0,则表示已购买
            cmd_Request_Hero_Detail_Info reqHeroDetailInfo = new cmd_Request_Hero_Detail_Info();

            reqHeroDetailInfo.nActorID = (uint)nMultiKey.nPDBID;
            reqHeroDetailInfo.nHeroID  = nMultiKey.nHeroID;
            reqHeroDetailInfo.heroInfo = cmdHeroInfo;

            EntityEventHelper.Instance.SendCommand <cmd_Request_Hero_Detail_Info>(EntityFactory.MainHeroID, EntityLogicDef.ENTITY_CMD_QUERY_HERO_DETAIL_INFO, ref reqHeroDetailInfo);
        }
示例#5
0
        public void UpdatePlayerInfo(IntPtr ptrParam, int nPtrLen)
        {
            IntPtrVaArgParseHelper helper = new IntPtrVaArgParseHelper(ptrParam, nPtrLen);

            cmd_player_info_return playerInfo = helper.get <cmd_player_info_return>();
            ActorPlayerInfo        info       = null;

            if (actorPlayer.TryGetValue((int)playerInfo.pDbid, out info) == false)
            {
                return;
            }
            info.playerInfo = playerInfo;

            info.strongHeroInfoList.Clear();
            for (int i = 0; i < info.playerInfo.nCount; ++i)
            {
                cmd_entity_hero_info data = helper.get <cmd_entity_hero_info>();
                info.strongHeroInfoList.Add(data);
            }

            UISystem.Instance.SendWndMessage(WndMsgID.WND_MSG_PLAYERINFO_INITINFO, null);
        }
示例#6
0
        public void UpdateHeroInfo(IntPtr ptrParam, int nPtrLen)
        {
            int actorID = EntityFactory.MainHeroView.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_ID);

            IntPtrVaArgParseHelper helper = new IntPtrVaArgParseHelper(ptrParam, nPtrLen);

            int nCount = helper.get <int>();

            for (int i = 0; i < nCount; ++i)
            {
                bool bNewBuy = false;
                bool bOldBuy = false;

                cmd_entity_hero_info data     = helper.get <cmd_entity_hero_info>();
                ActorPlayerInfo      playInfo = null;
                ActorHeroInfo        info     = null;
                int nHeroID = data.nHeroID;
                bNewBuy = data.bIsBuy > 0;

                if (actorHero.TryGetValue(actorID, out info) == true)
                {
                    // 英雄总览界面数据更新
                    if (info.dicEntityHeroInfo.ContainsKey(nHeroID) == true)
                    {
                        bOldBuy = info.dicEntityHeroInfo[nHeroID].bIsBuy > 0;
                        info.dicEntityHeroInfo[nHeroID] = data;
                    }
                    else if (info.dicEntityNoHaveHeroInfo.ContainsKey(nHeroID) == true)
                    {
                        info.dicEntityNoHaveHeroInfo.Remove(nHeroID);
                        info.dicEntityHeroInfo[nHeroID] = data;
                    }
                }

                if ((actorPlayer.TryGetValue(actorID, out playInfo) == true))
                {
                    // 玩家界面数据更新
                    for (int j = 0; j < playInfo.strongHeroInfoList.Count; j++)
                    {
                        if (playInfo.strongHeroInfoList[j].nHeroID == nHeroID)
                        {
                            playInfo.strongHeroInfoList[j] = data;
                        }
                    }
                }

                PlayerHeroUpdateData msgData = new PlayerHeroUpdateData();
                msgData.nHeroID   = nHeroID;
                msgData.nReqPDBID = actorID;
                UISystem.Instance.SendWndMessage(WndMsgID.WND_MSG_HEROPREVIEWFRAME_GETHEROINFO, msgData);

                if (bNewBuy && !bOldBuy)
                {
                    UISystem.Instance.SendWndMessage(WndMsgID.WND_ID_GAMEWAITINGROOMVIEW_ROOMBUYHERO, msgData);
                }

                // 英雄详细界面数据更新
                PDBIDandHeroID multiKey = new PDBIDandHeroID(actorID, nHeroID);
                RequestHeroDetailInfo(multiKey, HeroDetailReqType.HDRT_REFRESH);
            }
        }
示例#7
0
        // 显示英雄头像星级及卡牌数量
        public void ShowHeroHead(Dictionary <int, cmd_entity_hero_info> dicEntityHeroInfo, Dictionary <int, cmd_entity_nohanve_hero> dicEntityNoHaveHeroInfo, int nCurrentGold = 0)
        {
            HeroList.DataSource.Clear();
            UIWidgets.ObservableList <UTileViewItemHero> dataSource = new UIWidgets.ObservableList <UTileViewItemHero>();

            // 遍历已拥有的英雄加到表中
            foreach (KeyValuePair <int, cmd_entity_hero_info> kvp in dicEntityHeroInfo)
            {
                cmd_entity_hero_info cmdInfo = kvp.Value;
                int nHeroID = cmdInfo.nHeroID;

                SHeroStarSchemeInfo pStarScheme = new SHeroStarSchemeInfo();
                if (!GameLogicAPI.getHeroStarConfig(nHeroID, cmdInfo.byStarLv, ref pStarScheme))
                {
                    continue;
                }
                bool bIsLifeHero = LogicDataCenter.lifeHeroDataManager.AllLifeHero.ContainsKey(nHeroID);
                int  nNeedCard   = bIsLifeHero && pStarScheme.nCardDiscount > 0 ? pStarScheme.nCardDiscount : pStarScheme.nNeedCount;
                int  nNeedGold   = bIsLifeHero && pStarScheme.nGoldDiscount > 0 ? pStarScheme.nGoldDiscount : pStarScheme.nExpendGold;
                if (nNeedCard <= 0 || nNeedGold <= 0)
                {
                    continue;
                }

                PersonSkinModelItem modelData = new PersonSkinModelItem();
                if (!GameLogicAPI.GetPersonModel((UInt16)nHeroID, ref modelData))
                {
                    continue;
                }

                UTileViewItemHero item = new UTileViewItemHero();
                item.nHeroID  = nHeroID;
                item.headIcon = USpriteManager.Instance.GetSprite(USpriteManager.ESpriteType.EST_HeadPortrait, WndID.WND_ID_PLAYERFRAME, 1, 9, nHeroID);
                if (item.headIcon == null)
                {
                    item.headIcon = USpriteManager.Instance.GetSprite(USpriteManager.ESpriteType.EST_HeadPortrait, WndID.WND_ID_PLAYERFRAME, 1, 9, 10);
                }
                item.stName    = cmdInfo.chHeroName;
                item.stTitle   = modelData.szHeroTitle;
                item.nStarLv   = cmdInfo.byStarLv;
                item.bHaveHero = (cmdInfo.bIsBuy > 0);
                item.bWeekFree = (cmdInfo.bIsWeekFree > 0);

                item.nStarLvLimit = pStarScheme.nLimitLV;
                item.fExpValue    = (float)cmdInfo.nCardCount / nNeedCard;
                item.stStarExp    = cmdInfo.nCardCount.ToString() + (cmdInfo.byStarLv >= pStarScheme.nLimitLV ? "" : "/" + nNeedCard.ToString());
                int nGold = nCurrentGold == 0 ? EntityFactory.MainHeroView.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_GOLD) : nCurrentGold;

                // 已购买、未满级、卡够、钱够
                item.bUpGrade = (cmdInfo.bIsBuy > 0 && cmdInfo.byStarLv < pStarScheme.nLimitLV && item.fExpValue >= 1 && nGold >= nNeedGold);

                item.nUnlockLevel = modelData.nUnlockLevel;
                item.bFpsHero     = modelData.nPlayMode > 0;

                dataSource.Add(item);
            }

            // 遍历未拥有的英雄遍历到表中
            foreach (KeyValuePair <int, cmd_entity_nohanve_hero> kvp in dicEntityNoHaveHeroInfo)
            {
                cmd_entity_nohanve_hero cmdInfo = kvp.Value;
                int nHeroID = cmdInfo.nHeroID;

                PersonSkinModelItem modelData = new PersonSkinModelItem();
                if (!GameLogicAPI.GetPersonModel((UInt16)nHeroID, ref modelData))
                {
                    continue;
                }

                SHeroStarSchemeInfo pStarScheme = new SHeroStarSchemeInfo();
                if (!GameLogicAPI.getHeroStarConfig(nHeroID, 1, ref pStarScheme))
                {
                    continue;
                }

                bool bIsLifeHero = LogicDataCenter.lifeHeroDataManager.AllLifeHero.ContainsKey(nHeroID);
                int  nNeedCard   = bIsLifeHero && pStarScheme.nCardDiscount > 0 ? pStarScheme.nCardDiscount : pStarScheme.nNeedCount;
                int  nNeedGold   = bIsLifeHero && pStarScheme.nGoldDiscount > 0 ? pStarScheme.nGoldDiscount : pStarScheme.nExpendGold;
                if (nNeedCard <= 0 || nNeedGold <= 0)
                {
                    continue;
                }

                UTileViewItemHero item = new UTileViewItemHero();
                item.nHeroID  = nHeroID;
                item.headIcon = USpriteManager.Instance.GetSprite(USpriteManager.ESpriteType.EST_HeadPortrait, WndID.WND_ID_PLAYERFRAME, 1, 9, nHeroID);
                if (item.headIcon == null)
                {
                    item.headIcon = USpriteManager.Instance.GetSprite(USpriteManager.ESpriteType.EST_HeadPortrait, WndID.WND_ID_PLAYERFRAME, 1, 9, 10);
                }
                item.stName    = cmdInfo.chHeroName;
                item.stTitle   = modelData.szHeroTitle;
                item.nStarLv   = 1;
                item.bHaveHero = false;
                item.bWeekFree = false;

                item.nStarLvLimit = pStarScheme.nLimitLV;
                item.fExpValue    = (float)cmdInfo.nHaveCardCount / nNeedCard;
                item.stStarExp    = cmdInfo.nHaveCardCount.ToString() + "/" + nNeedCard.ToString();
                item.bUpGrade     = false;

                item.nUnlockLevel = modelData.nUnlockLevel;
                item.bFpsHero     = modelData.nPlayMode > 0;

                dataSource.Add(item);
            }
            dataSource.Sort(CompareMemberList);
            HeroList.DataSource = dataSource;

            //增加监听点击头像的事件
            HeroList.OnSelect.RemoveAllListeners();
            HeroList.OnSelect.AddListener(ItemSelected);
        }
示例#8
0
        public bool UpdateRoomHeroList(int nUpdateHeroID)
        {
            int           nUnlockTime = 0;
            ActorHeroInfo info        = LogicDataCenter.playerSystemDataManager.GetActorAllHero();

            if (info.dicEntityHeroInfo.ContainsKey(nUpdateHeroID))
            {
                cmd_entity_hero_info heroInfo = info.dicEntityHeroInfo[nUpdateHeroID];
                nUnlockTime = (int)heroInfo.ulUnlockTime;
            }

            foreach (UTileViewItemRoomHero item in this.DataSource)
            {
                if (item.nHeroIconId == nUpdateHeroID)
                {
                    if (item.bIsHaveHero)
                    {
                        return(false);
                    }

                    item.nUnlockTime = nUnlockTime;
                    item.bIsHaveHero = true;
                    if (!item.bIsLockByHero && !item.bIsLockByComputer)
                    {
                        item.Lock = false;
                    }

                    break;
                }
            }
            this.DataSource.Sort(CompareMemberList);

            foreach (UTileViewItemRoomHero item in this.SelectHeroData)
            {
                if (item.nHeroIconId == nUpdateHeroID)
                {
                    item.nUnlockTime = nUnlockTime;
                    item.bIsHaveHero = true;
                    if (!item.bIsLockByHero && !item.bIsLockByComputer)
                    {
                        item.Lock = false;
                    }

                    break;
                }
            }
            this.SelectHeroData.Sort(CompareMemberList);

            foreach (UTileViewItemRoomHero item in this.SelectHeroDataFilter)
            {
                if (item.nHeroIconId == nUpdateHeroID)
                {
                    item.nUnlockTime = nUnlockTime;
                    item.bIsHaveHero = true;
                    if (!item.bIsLockByHero && !item.bIsLockByComputer)
                    {
                        item.Lock = false;
                    }

                    break;
                }
            }
            this.SelectHeroDataFilter.Sort(CompareMemberList);

            UpdateItem();
            return(true);
        }