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