示例#1
0
    /// <summary>
    /// 生成宝石数据UI
    /// </summary>
    private void BuildGemDataUI()
    {
        m_emActiveGemType = GameCmd.GemType.GemType_None;
        if (null != mSecondsTabCreator)
        {
            //1、获取补一个不为空宝石类型
            GameCmd.GemType nextActiveGemType          = GameCmd.GemType.GemType_None;
            List <int>      secondTabDatas             = new List <int>();
            UISecondTabCreatorBase.SecondsTabData data = null;
            GemInlayUpdateData updateData = null;
            for (int i = 0; i < mlstCanInlayGemType.Count; i++)
            {
                updateData = GetGemInlayUpdateData(mlstCanInlayGemType[i]);
                if (null == updateData)
                {
                    continue;
                }

                secondTabDatas.Add(updateData.Count);
                if (updateData.Count != 0 &&
                    nextActiveGemType == GameCmd.GemType.GemType_None)
                {
                    nextActiveGemType = mlstCanInlayGemType[i];
                }
            }
            mSecondsTabCreator.CreateGrids(secondTabDatas);

            //2、展开当前活跃宝石列表,并生成UI
            SetActiveGemType(nextActiveGemType);
        }
    }
示例#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
    public Dictionary <GameCmd.GemType, GemInlayUpdateData> StructGemInlayDatas(GameCmd.EquipPos pos)
    {
        //可镶嵌数据
        if (null == mdicCanInlayDatas)
        {
            mdicCanInlayDatas = new Dictionary <GameCmd.GemType, GemInlayUpdateData>();
        }
        //mdicCanInlayDatas.Clear();

        //获取可镶嵌宝石列表
        if (null == mlstCanInlayGemType)
        {
            mlstCanInlayGemType = new List <GameCmd.GemType>();
        }
        mlstCanInlayGemType.Clear();
        mlstCanInlayGemType.AddRange(emgr.GeCanInlaytGemTypeByPos(pos));
        if (subTypes.Count == 0)
        {
            subTypes.Add((uint)ItemDefine.ItemMaterialSubType.Gem);
        }
        if (gemItemList == null)
        {
            gemItemList = new List <uint>();
            gemItemList.AddRange(imgr.GetItemByType(GameCmd.ItemBaseType.ItemBaseType_Material, subTypes, GameCmd.PACKAGETYPE.PACKAGETYPE_MAIN));
            gemQwThisIDsChanged = false;
        }
        else
        {
            if (gemQwThisIDsChanged)
            {
                gemItemList.Clear();
                gemItemList.AddRange(imgr.GetItemByType(GameCmd.ItemBaseType.ItemBaseType_Material, subTypes, GameCmd.PACKAGETYPE.PACKAGETYPE_MAIN));
                gemQwThisIDsChanged = false;
            }
        }
        GemInlayUpdateData gemInlayUpdateData = null;

        for (int i = 0; i < mlstCanInlayGemType.Count; i++)
        {
            if (mdicCanInlayDatas.ContainsKey(mlstCanInlayGemType[i]))
            {
                gemInlayUpdateData = mdicCanInlayDatas[mlstCanInlayGemType[i]];
                if (null != gemInlayUpdateData)
                {
                    if (!gemInlayUpdateData.m_lstGemQwThisIDList.Equals(gemItemList))
                    {
                        gemInlayUpdateData.StructData(gemItemList);
                    }
                }
            }
            else
            {
                gemInlayUpdateData = new GemInlayUpdateData(mlstCanInlayGemType[i]);
                mdicCanInlayDatas.Add(mlstCanInlayGemType[i], gemInlayUpdateData);
            }
        }
        return(mdicCanInlayDatas);
    }
示例#4
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);
                }
            }
        }
    }
示例#5
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);
    }
示例#6
0
 /// <summary>
 /// 宝石二级页签数据刷新
 /// </summary>
 /// <param name="gridBase"></param>
 /// <param name="id"></param>
 /// <param name="index"></param>
 private void OnUpdateSecondGemGrid(UIGridBase gridBase, object id, int index)
 {
     if (gridBase is UIGemGrid && id is GameCmd.GemType)
     {
         GameCmd.GemType    gemType = (GameCmd.GemType)id;
         GemInlayUpdateData data    = GetGemInlayUpdateData(gemType);
         uint gembaseId             = 0;
         if (null != data && data.TryGetBaseIdByIndex(index, out gembaseId))
         {
             UIGemGrid gemGrid = gridBase as UIGemGrid;
             gemGrid.SetGridData(gembaseId);
             bool show = DataManager.Manager <ForgingManager>().HaveGemCanImprove(m_emSelectInlayPos, gemType) &&
                         (gembaseId == data.PrefectGemID && data.PrefectGemID != 0);
             gemGrid.SetRedPointStatus(show);
         }
     }
 }
示例#7
0
 /// <summary>
 /// 设置展开的宝石类型
 /// </summary>
 /// <param name="gType">目标宝石类型</param>
 /// <param name="instant">是否直接展开不需要过度</param>
 private void SetActiveGemType(GameCmd.GemType gType, bool instant = false)
 {
     if (gType == GameCmd.GemType.GemType_None)
     {
         return;
     }
     if (null != mSecondsTabCreator)
     {
         UICtrTypeGrid      ctgGrid           = mSecondsTabCreator.GetGrid <UICtrTypeGrid>(mlstCanInlayGemType.IndexOf(m_emActiveGemType));
         GemInlayUpdateData gemCurUpdateData  = GetGemInlayUpdateData();
         GemInlayUpdateData gemNextUpdateData = GetGemInlayUpdateData(gType);
         if (m_emActiveGemType == gType)
         {
             if (!mSecondsTabCreator.IsOpen(mlstCanInlayGemType.IndexOf(m_emActiveGemType)) ||
                 gemCurUpdateData.Count == 0)
             {
                 mSecondsTabCreator.Close(mlstCanInlayGemType.IndexOf(m_emActiveGemType), true);
                 m_emActiveGemType = GameCmd.GemType.GemType_None;
                 TipsManager.Instance.ShowLocalFormatTips(LocalTextType.Gemstone_Commond_2);
             }
             else
             {
                 TipsManager.Instance.ShowLocalFormatTips(LocalTextType.Gemstone_Commond_1);
             }
             return;
         }
         if (null != gemCurUpdateData && (gemCurUpdateData.Count == 0 || gemNextUpdateData.Count != 0))
         {
             mSecondsTabCreator.Close(mlstCanInlayGemType.IndexOf(m_emActiveGemType), true);
         }
         if (null != gemNextUpdateData)
         {
             if (gemNextUpdateData.Count != 0)
             {
                 m_emActiveGemType = gType;
                 mSecondsTabCreator.Open(mlstCanInlayGemType.IndexOf(m_emActiveGemType), instant);
             }
             else
             {
                 TipsManager.Instance.ShowLocalFormatTips(LocalTextType.Gemstone_Commond_2);
             }
         }
     }
 }
示例#8
0
    /// <summary>
    /// 构建宝石镶嵌数据
    /// </summary>
    private void StructGemInlayDatas()
    {
        //可镶嵌数据
        if (null == mdicCanInlayDatas)
        {
            mdicCanInlayDatas = new Dictionary <GameCmd.GemType, GemInlayUpdateData>();
        }
        mdicCanInlayDatas.Clear();

        //获取可镶嵌宝石列表
        if (null == mlstCanInlayGemType)
        {
            mlstCanInlayGemType = new List <GameCmd.GemType>();
        }
        mlstCanInlayGemType.Clear();



        mlstCanInlayGemType.AddRange(emgr.GeCanInlaytGemTypeByPos(m_emSelectInlayPos));

        //获取宝石列表
        List <uint> gemItemList = new List <uint>();
        List <uint> subTypes    = new List <uint>();

        subTypes.Add((uint)ItemDefine.ItemMaterialSubType.Gem);
        gemItemList.AddRange(imgr.GetItemByType(GameCmd.ItemBaseType.ItemBaseType_Material, subTypes, GameCmd.PACKAGETYPE.PACKAGETYPE_MAIN));

        GemInlayUpdateData gemInlayUpdateData = null;

        for (int i = 0; i < mlstCanInlayGemType.Count; i++)
        {
            if (!mdicCanInlayDatas.TryGetValue(mlstCanInlayGemType[i], out gemInlayUpdateData))
            {
                gemInlayUpdateData = new GemInlayUpdateData(mlstCanInlayGemType[i]);
                mdicCanInlayDatas.Add(mlstCanInlayGemType[i], gemInlayUpdateData);
            }
            if (null != gemInlayUpdateData)
            {
                gemInlayUpdateData.StructData(gemItemList);
            }
        }
    }
示例#9
0
    /// <summary>
    /// 物品信息变更
    /// </summary>
    /// <param name="passData"></param>
    private void OnInlayItemUpdate(ItemDefine.UpdateItemPassData passData)
    {
        BaseItem baseItem = DataManager.Manager <ItemManager>().GetTempBaseItemByBaseID <BaseItem>(passData.BaseId);

        if (baseItem.IsGem || baseItem.IsForgingEquip)
        {
            UpdateInlayPartList();
            UpdateInlayInfo();
            if (baseItem.IsGem)
            {
                Gem gem = DataManager.Manager <ItemManager>()
                          .GetTempBaseItemByBaseID <Gem>(passData.BaseId, ItemDefine.ItemDataType.Gem);
                GemInlayUpdateData gemInlayUpdateData = null;
                if (mlstCanInlayGemType.Contains(gem.Type) &&
                    mdicCanInlayDatas.TryGetValue(gem.Type, out gemInlayUpdateData))
                {
                    int firstIndex  = mlstCanInlayGemType.IndexOf(gem.Type);
                    int secondIndex = -1;
                    GemInlayUpdateData.GemInlayUpdateType updateType = gemInlayUpdateData.UpdateItem(passData.BaseId, out secondIndex);
                    if (null != mSecondsTabCreator)
                    {
                        if (updateType == GemInlayUpdateData.GemInlayUpdateType.GIUT_Insert)
                        {
                            //数据新增
                            mSecondsTabCreator.InsertIndex(firstIndex, secondIndex);
                        }
                        else if (updateType == GemInlayUpdateData.GemInlayUpdateType.GIUT_Remove)
                        {
                            //数据删除
                            mSecondsTabCreator.RemoveIndex(firstIndex, secondIndex);
                        }
                        else if (updateType == GemInlayUpdateData.GemInlayUpdateType.GIUT_Update)
                        {
                            //数据更新
                            mSecondsTabCreator.UpdateIndex(firstIndex, secondIndex);
                        }
                    }
                }
            }
        }
    }