コード例 #1
0
    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);
    }
コード例 #2
0
    /// <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);
            }
        }
    }
コード例 #3
0
    /// <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);
        }
    }
コード例 #4
0
    /// <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();
        }
    }
コード例 #5
0
ファイル: ComposeManager.cs プロジェクト: zuojiashun/src
 /// <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);
     }
 }
コード例 #6
0
    /// <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);
                }
            }
        }
    }
コード例 #7
0
 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);
 }
コード例 #8
0
    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);
    }
コード例 #9
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);
 }
コード例 #10
0
    /// <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);
        }
    }
コード例 #11
0
    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();
    }
コード例 #12
0
    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);
    }
コード例 #13
0
ファイル: UIGemInLayGrid.cs プロジェクト: zuojiashun/src
 public override void SetGridData(object data)
 {
     base.SetGridData(data);
     this.data = (EquipManager.EquipGridIndexType)data;
     Reset();
 }
コード例 #14
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="type"></param>
 /// <returns></returns>
 private bool IsSelectInlayGridIndexType(EquipManager.EquipGridIndexType type)
 {
     return(type == selectEquipGridType);
 }
コード例 #15
0
    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);
    }
コード例 #16
0
    /// <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);
            }
        }
    }