Ejemplo n.º 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();
        }
Ejemplo n.º 2
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);
                }
            }
        }
Ejemplo n.º 3
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);
        }