public bool HaveEquipCanInlayByEquipPartMode(EquipPartMode mode) { uint key = (uint)mode; List <GameCmd.EquipPos> lst = StructEquipPartInlayData()[key]; for (int j = 0; j < lst.Count; j++) { if (null == mlstCanInlayGemType) { mlstCanInlayGemType = new List <GameCmd.GemType>(); } mlstCanInlayGemType.Clear(); mlstCanInlayGemType.AddRange(emgr.GeCanInlaytGemTypeByPos(lst[j])); for (EquipManager.EquipGridIndexType i = EquipManager.EquipGridIndexType.First; i < EquipManager.EquipGridIndexType.Max; i++) { for (int x = 0; x < mlstCanInlayGemType.Count; x++) { if (JudgeEquipPosCanInlay(lst[j], i, mlstCanInlayGemType[x])) { return(true); } } } } return(false); }
/// <summary> /// 卸下 /// </summary> /// <param name="index"></param> private void DoUnload(EquipManager.EquipGridIndexType index) { uint inlayBaseId = 0; if (!emgr.IsUnlockEquipGridIndex(index)) { TipsManager.Instance.ShowLocalFormatTips(LocalTextType.Gemstone_Commond_3, emgr.GetEquipGridUnlockLevel(index)); } else if (emgr.TryGetEquipGridInlayGem(m_emSelectInlayPos, index, out inlayBaseId)) { //卸下 emgr.GemUnload(m_emSelectInlayPos, index); } else { GemInlayUpdateData data = GetGemInlayUpdateData(); uint canInlayBaseId = 0; if (null != data && data.TryGetCanInlayGem(out canInlayBaseId)) { DoInlay(canInlayBaseId, index); } else { TipsManager.Instance.ShowLocalFormatTips(LocalTextType.Gemstone_Commond_4); } } }
/// <summary> /// 镶嵌 /// </summary> /// <param name="gemBaseId"></param> private void DoInlay(uint gemBaseId, EquipManager.EquipGridIndexType index = EquipManager.EquipGridIndexType.None) { EquipManager.EquipGridIndexType inlayGridIndex = EquipManager.EquipGridIndexType.None; if (index == EquipManager.EquipGridIndexType.None) { for (EquipManager.EquipGridIndexType i = EquipManager.EquipGridIndexType.First; i < EquipManager.EquipGridIndexType.Max; i++) { if (emgr.IsEquipGridIndexEmpty(m_emSelectInlayPos, i)) { inlayGridIndex = i; break; } } } else { inlayGridIndex = index; } if (inlayGridIndex == EquipManager.EquipGridIndexType.None || !emgr.IsUnlockEquipGridIndex(inlayGridIndex)) { TipsManager.Instance.ShowLocalFormatTips(LocalTextType.Gemstone_Commond_5); return; } if (inlayGridIndex != EquipManager.EquipGridIndexType.None) { emgr.GemInlay(m_emSelectInlayPos, inlayGridIndex, gemBaseId); } }
/// <summary> /// 更新镶嵌信息 /// </summary> private void UpdateInlayInfo() { UIGemInLayGrid inLayGrid = null; int index = 0; StringBuilder builder = new StringBuilder(); uint inlayBaseId = 0; Gem gem = null; for (EquipManager.EquipGridIndexType i = EquipManager.EquipGridIndexType.First; i < EquipManager.EquipGridIndexType.Max; i++) { index = (int)i - 1; if (i < 0) { continue; } if (null != m_dic_inLayGrids && m_dic_inLayGrids.TryGetValue(i, out inLayGrid)) { inLayGrid.UpdateGridData(m_emSelectInlayPos); } if (emgr.TryGetEquipGridInlayGem(m_emSelectInlayPos, i, out inlayBaseId)) { gem = DataManager.Manager <ItemManager>() .GetTempBaseItemByBaseID <Gem>(inlayBaseId, ItemDefine.ItemDataType.Gem); builder.Append(DataManager.Manager <TextManager>().GetLocalFormatText(GetEquipGridIndexTextType(i), gem.AttrDes) + "\n"); } } if (null != m_label_InlayGemAttrDes) { m_label_InlayGemAttrDes.text = builder.ToString(); } }
/// <summary> /// 镶嵌宝石合成 /// </summary> /// <param name="gemBaseId">宝石baseid</param> /// <param name="pos">镶嵌位置</param> /// <param name="equipGridIndexType"></param> public void DoInlayGemCompose(uint gemBaseId, GameCmd.EquipPos pos, EquipManager.EquipGridIndexType equipGridIndexType) { if (null != DataManager.Instance.Sender) { DataManager.Instance.Sender.ItemComposeReq(gemBaseId, 2, pos, (uint)equipGridIndexType); } }
/// <summary> /// 镶嵌格子数据刷新回调 /// </summary> /// <param name="grid"></param> /// <param name="index"></param> private void OnUpdateInlayGrid(UIGridBase grid, int index) { if (grid is UICtrTypeGrid) { UICtrTypeGrid ctg = grid as UICtrTypeGrid; if (mlstCanInlayGemType.Count > index) { GameCmd.GemType gemType = mlstCanInlayGemType[index]; GemInlayUpdateData updateData = GetGemInlayUpdateData(gemType); int num = (null != updateData) ? updateData.Count : 0; ctg.SetData(gemType, DataManager.Manager <TextManager>().GetGemNameByType(gemType), num); ctg.SetRedPointStatus(DataManager.Manager <ForgingManager>().HaveGemCanImprove(m_emSelectInlayPos, gemType)); } } else if (grid is UIEquipPosStatusGrid) { UIEquipPosStatusGrid posGrid = grid as UIEquipPosStatusGrid; GameCmd.EquipPos pos = GetEquipPosByIndex(index); bool isInlay = IsPanelMode(ForgingPanelMode.Inlay); posGrid.SetGridViewData(pos, isInlay); posGrid.SetHightLight(pos == m_emSelectInlayPos); if (isInlay) { Gem gem = null; uint inLayGemBaseId = 0; string inlayGemIconName = ""; bool inlay = false; bool unlock = false; for (EquipManager.EquipGridIndexType i = EquipManager.EquipGridIndexType.First; i < EquipManager.EquipGridIndexType.Max; i++) { inlayGemIconName = ""; inlay = false; unlock = false; if (i < 0) { continue; } if (emgr.TryGetEquipGridInlayGem(pos, i, out inLayGemBaseId)) { gem = DataManager.Manager <ItemManager>() .GetTempBaseItemByBaseID <Gem>(inLayGemBaseId, ItemDefine.ItemDataType.Gem); inlayGemIconName = gem.Icon; unlock = true; inlay = true; } else if (emgr.IsUnlockEquipGridIndex(i)) { unlock = true; } posGrid.SetInlayIcon(i, unlock, inlay, inlayGemIconName); } } } }
public bool HaveGemCanImprove(GameCmd.EquipPos pos, GameCmd.GemType gemType) { for (EquipManager.EquipGridIndexType i = EquipManager.EquipGridIndexType.First; i < EquipManager.EquipGridIndexType.Max; i++) { if (JudgeEquipPosCanInlay(pos, i, gemType)) { return(true); } } return(false); }
public bool JudgeEquipPosCanInlay(GameCmd.EquipPos pos, EquipManager.EquipGridIndexType index, GameCmd.GemType gemType) { uint inlayBaseId = 0; int matchNum = 0; if (!emgr.IsUnlockEquipGridIndex(index)) { return(false); } else if (emgr.TryGetEquipGridInlayGem(pos, index, out inlayBaseId)) { Gem InlayItem = DataManager.Manager <ItemManager>().GetTempBaseItemByBaseID <Gem>(inlayBaseId, ItemDefine.ItemDataType.Gem); //镶嵌的宝石小与背包的宝石? StructGemInlayDatas(pos); GemInlayUpdateData updateData = GetGemInlayUpdateData(gemType); if (null != updateData) { updateData.HaveGemCanInlay = false; uint canInlayBaseId = 0; if (null != updateData && updateData.TryGetCanInlayGem(out canInlayBaseId)) { Gem canInlayItem = DataManager.Manager <ItemManager>().GetTempBaseItemByBaseID <Gem>(canInlayBaseId, ItemDefine.ItemDataType.Gem); if (InlayItem != null && canInlayItem != null) { bool higher = canInlayItem.FightPowerNum > InlayItem.FightPowerNum; if (higher) { matchNum++; updateData.HaveGemCanInlay = true; } } } } } else { StructGemInlayDatas(pos); GemInlayUpdateData updateData = GetGemInlayUpdateData(gemType); if (null != updateData) { updateData.HaveGemCanInlay = false; uint canInlayBaseId = 0; if (null != updateData && updateData.TryGetCanInlayGem(out canInlayBaseId)) { matchNum++; updateData.HaveGemCanInlay = true; } } } return(matchNum > 0); }
public bool EquipPosCanInlay(GameCmd.EquipPos pos, EquipManager.EquipGridIndexType index) { if (null == mlstCanInlayGemType) { mlstCanInlayGemType = new List <GameCmd.GemType>(); } mlstCanInlayGemType.Clear(); mlstCanInlayGemType.AddRange(emgr.GeCanInlaytGemTypeByPos(pos)); for (int x = 0; x < mlstCanInlayGemType.Count; x++) { if (JudgeEquipPosCanInlay(pos, index, mlstCanInlayGemType[x])) { return(true); } } return(false); }
/// <summary> /// 设置选中镶嵌格子 /// </summary> /// <param name="type"></param> private void SelectInlayGridIndexType(EquipManager.EquipGridIndexType type, bool force = false) { if (type == selectEquipGridType && !force) { return; } UIGemInLayGrid grid = null; if (null != m_dic_inLayGrids && m_dic_inLayGrids.TryGetValue(selectEquipGridType, out grid)) { grid.SetHightLight(false); } selectEquipGridType = type; if (null != m_dic_inLayGrids && m_dic_inLayGrids.TryGetValue(selectEquipGridType, out grid)) { grid.SetHightLight(true); } }
private void InitInlayWidgets() { if (IsInitStatus(ForgingPanelMode.Inlay)) { return; } SetInitStatus(ForgingPanelMode.Inlay, true); //初始化镶嵌格子 if (null != m_trans_EquipGridInLayContent) { if (null == m_dic_inLayGrids) { m_dic_inLayGrids = new Dictionary <EquipManager.EquipGridIndexType, UIGemInLayGrid>(); } m_dic_inLayGrids.Clear(); Transform inLayTs = null; UIGemInLayGrid gemGrid = null; for (EquipManager.EquipGridIndexType i = EquipManager.EquipGridIndexType.First ; i < EquipManager.EquipGridIndexType.Max; i++) { inLayTs = Util.findTransform(m_trans_EquipGridInLayContent, i.ToString() + "InlayBox"); if (null == inLayTs) { continue; } gemGrid = inLayTs.GetComponent <UIGemInLayGrid>(); if (null == gemGrid) { gemGrid = inLayTs.gameObject.AddComponent <UIGemInLayGrid>(); } gemGrid.SetGridData(i); gemGrid.RegisterUIEventDelegate(OnInlayGridUIEventDlg); if (!m_dic_inLayGrids.ContainsKey(i)) { m_dic_inLayGrids.Add(i, gemGrid); } } } InitCanInlayGemWidgets(); }
private LocalTextType GetEquipGridIndexTextType(EquipManager.EquipGridIndexType index) { LocalTextType tt = LocalTextType.LocalText_None; switch (index) { case EquipManager.EquipGridIndexType.First: tt = LocalTextType.Local_Txt_Set_1; break; case EquipManager.EquipGridIndexType.Second: tt = LocalTextType.Local_Txt_Set_2; break; case EquipManager.EquipGridIndexType.Third: tt = LocalTextType.Local_Txt_Set_3; break; } return(tt); }
public override void SetGridData(object data) { base.SetGridData(data); this.data = (EquipManager.EquipGridIndexType)data; Reset(); }
/// <summary> /// /// </summary> /// <param name="type"></param> /// <returns></returns> private bool IsSelectInlayGridIndexType(EquipManager.EquipGridIndexType type) { return(type == selectEquipGridType); }
public void SetGridViewData(GameCmd.EquipPos pos, bool inlay = false) { this.data = pos; if (null != m_labName) { m_labName.text = string.Format("{0}.部位", EquipDefine.GetEquipPosName(this.data)); } if (null != gemHoleContent && gemHoleContent.activeSelf != inlay) { gemHoleContent.gameObject.SetActive(inlay); } if (null != m_labStrengthenDes && m_labStrengthenDes.gameObject.activeSelf == inlay) { m_labStrengthenDes.gameObject.SetActive(!inlay); } uint StrengthenLv = 0; if (!inlay) { StrengthenLv = DataManager.Manager <EquipManager>().GetGridStrengthenLvByPos(this.data); m_labStrengthenDes.text = string.Format("强化 {0}级" , StrengthenLv); } uint equipId = 0; bool equip = DataManager.Manager <EquipManager>().IsEquipPos(this.data, out equipId); ResetInfoGrid(equip); if (equip) { Equip itemData = DataManager.Manager <ItemManager>().GetBaseItemByQwThisId <Equip>(equipId); SetIcon(true, itemData.Icon); SetBorder(true, itemData.BorderIcon); SetBindMask(itemData.IsBind); uint particleID = DataManager.Manager <EquipManager>().GetEquipParticleIDByStrengthenLevel(StrengthenLv); AddParticle(particleID); } else { if (particle != null) { particle.ReleaseParticle(); } } if (null != icon) { if (icon.gameObject.activeSelf == equip) { icon.gameObject.SetActive(equip); } if (!equip) { string iconName = EquipDefine.GetEquipPartIcon(this.data); UIManager.GetAtlasAsyn(iconName, ref m_bgIcon, () => { if (null != icon) { icon.atlas = null; } }, icon); } } bool match = false; if (inlay) { for (EquipManager.EquipGridIndexType i = EquipManager.EquipGridIndexType.First; i < EquipManager.EquipGridIndexType.Max; i++) { if (DataManager.Manager <ForgingManager>().EquipPosCanInlay(this.data, i)) { match = true; } } } else { match = DataManager.Manager <ForgingManager>().JudgeEquipPosCanStrengthen(this.data); } SetRedPointStatus(match); }
/// <summary> /// 設置鑲嵌寶石 /// </summary> /// <param name="index"></param> /// <param name="iconName"></param> public void SetInlayIcon(EquipManager.EquipGridIndexType index, bool unlock = true, bool inlay = false, string iconName = "") { UITexture icon = null; UISprite lockIcon = null; CMResAsynSeedData <CMTexture> m_inlayIcon = null; Action action = null; switch (index) { case EquipManager.EquipGridIndexType.First: icon = gemHoleIcon1; lockIcon = m_sp_lock1; m_inlayIcon = m_inlayIcon1; action = () => { if (null != gemHoleIcon1) { gemHoleIcon1.mainTexture = null; } }; break; case EquipManager.EquipGridIndexType.Second: icon = gemHoleIcon2; lockIcon = m_sp_lock2; m_inlayIcon = m_inlayIcon2; action = () => { if (null != gemHoleIcon2) { gemHoleIcon2.mainTexture = null; } }; break; case EquipManager.EquipGridIndexType.Third: icon = gemHoleIcon3; lockIcon = m_sp_lock3; m_inlayIcon = m_inlayIcon3; action = () => { if (null != gemHoleIcon3) { gemHoleIcon3.mainTexture = null; } }; break; } if (null != lockIcon && lockIcon.gameObject.activeSelf == unlock) { lockIcon.gameObject.SetActive(!unlock); } if (null != icon) { if (icon.gameObject.activeSelf != inlay) { icon.gameObject.SetActive(inlay); } if (inlay && !string.IsNullOrEmpty(iconName)) { UIManager.GetTextureAsyn(iconName, ref m_inlayIcon, action, icon, false); } } }