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(); }
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); } } }
// 显示英雄头像星级及卡牌数量 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); }