public override void UpdateUI()
    {
        base.UpdateUI();
        SetActive((Enum)UI.SPR_COUNT_0_ON, exceedCount > 0);
        SetActive((Enum)UI.SPR_COUNT_1_ON, exceedCount > 1);
        SetActive((Enum)UI.SPR_COUNT_2_ON, exceedCount > 2);
        SetActive((Enum)UI.SPR_COUNT_3_ON, exceedCount > 3);
        SetLabelText((Enum)UI.LBL_SELECT_NOW, (selectPageIndex + 1).ToString());
        UpdateBonusDetail(true);
        bool is_only_lapis = true;
        int  item_num      = exceedData.exceed.Length;

        SetGrid(UI.GRD_LAPIS, "SmithExceedItem", item_num, false, delegate(int i, Transform t, bool is_recycle)
        {
            //IL_0276: Unknown result type (might be due to invalid IL or missing references)
            //IL_0295: Unknown result type (might be due to invalid IL or missing references)
            //IL_02a3: Unknown result type (might be due to invalid IL or missing references)
            //IL_02a8: Unknown result type (might be due to invalid IL or missing references)
            //IL_02af: Unknown result type (might be due to invalid IL or missing references)
            //IL_02b4: Unknown result type (might be due to invalid IL or missing references)
            if (exceedCount >= 4)
            {
                SetActive(t, false);
            }
            else if (i < selectPageIndex * 3 || i >= (selectPageIndex + 1) * 3)
            {
                SetActive(t, false);
            }
            else
            {
                EquipItemExceedTable.EquipItemExceedData.ExceedNeedItem exceedNeedItem = exceedData.exceed[i];
                if (exceedNeedItem == null || exceedNeedItem.itemId == 0 || exceedNeedItem.num[exceedCount] == 0)
                {
                    SetActive(t, false);
                }
                else
                {
                    ItemTable.ItemData itemData = Singleton <ItemTable> .I.GetItemData(exceedNeedItem.itemId);
                    if (itemData == null)
                    {
                        SetActive(t, false);
                    }
                    else
                    {
                        if (itemData.type != ITEM_TYPE.LAPIS)
                        {
                            is_only_lapis = false;
                        }
                        SetActive(t, true);
                        int haveingItemNum = MonoBehaviourSingleton <InventoryManager> .I.GetHaveingItemNum(exceedNeedItem.itemId);
                        int num            = (int)exceedNeedItem.num[exceedCount];
                        ItemIcon.GetIconShowData(REWARD_TYPE.ITEM, exceedNeedItem.itemId, out int _, out ITEM_ICON_TYPE icon_type, out RARITY_TYPE? _, out ELEMENT_TYPE _, out EQUIPMENT_TYPE? _, out int _, out int _, out GET_TYPE _, 0);
                        Transform val     = FindCtrl(t, UI.OBJ_MATERIAL_ICON_ROOT);
                        bool flag2        = haveingItemNum >= num;
                        ItemIcon itemIcon = ItemIconMaterial.CreateMaterialIcon(icon_type, itemData, val, haveingItemNum, num, (!flag2) ? "NEED" : "NEXT", i, false);
                        SetMaterialInfo(itemIcon._transform, REWARD_TYPE.ITEM, exceedNeedItem.itemId, GetCtrl(UI.SCR_LAPIS_ROOT));
                        ItemIconMaterial itemIconMaterial = itemIcon as ItemIconMaterial;
                        if (itemIconMaterial != null)
                        {
                            itemIconMaterial.SetVisibleBG(false);
                        }
                        FindCtrl(val, UI.SPR_EXCEED_BTN_BG).set_parent(itemIcon._transform);
                        SetActive(t, UI.SPR_EXCEED_GRAYOUT, !flag2);
                        if (itemData.endDate != default(DateTime))
                        {
                            string format = StringTable.Get(STRING_CATEGORY.SHOP, 15u);
                            SetLabelText(t, UI.LBL_LIMITED, string.Format(format, itemData.endDate.ToString("yyyy/MM/dd HH:mm")));
                        }
                        else
                        {
                            SetActive(t, UI.OBJ_EXCEED_LIMITED, false);
                        }
                        if (!IsValidExceedSection())
                        {
                            if (itemIcon.GetComponent <UINoAuto>() == null)
                            {
                                itemIcon.get_gameObject().AddComponent <UINoAuto>();
                            }
                            if (itemIcon.GetComponent <UIButtonScale>() == null)
                            {
                                UIButtonScale uIButtonScale = itemIcon.get_gameObject().AddComponent <UIButtonScale>();
                                uIButtonScale.hover         = Vector3.get_one();
                                uIButtonScale.pressed       = UIButtonEffect.buttonScale_pressed;
                                uIButtonScale.duration      = UIButtonEffect.buttonScale_duration;
                            }
                        }
                    }
                }
            }
        });
        bool flag = exceedCount < 4;

        SetActive((Enum)UI.OBJ_VALID_EXCEED_ROOT, flag);
        SetActive((Enum)UI.OBJ_INVALID_EXCEED_ROOT, !flag);
        int    id   = (!is_only_lapis) ? 6 : 5;
        string text = StringTable.Get(STRING_CATEGORY.ITEM_DETAIL, (uint)id);

        SetLabelText((Enum)UI.LBL_USE_MATERIAL_NAME, text);
    }
    protected override void DrawIcon()
    {
        SortCompareData[] sell_data_ary = sellData.ToArray();
        int reward_num = sell_data_ary.Length;

        if (crystalNum > 0)
        {
            reward_num++;
        }
        if (totalGold > 0)
        {
            reward_num++;
        }
        if (missionPointData != null && missionPointData.missionPoint > 0)
        {
            reward_num++;
        }
        bool shouldAddGold         = totalGold > 0;
        bool shouldAddMissionPoint = missionPointData != null && missionPointData.missionPoint > 0;
        int  sELL_SELECT_MAX       = MonoBehaviourSingleton <UserInfoManager> .I.userInfo.constDefine.SELL_SELECT_MAX;

        SetGrid(UI.GRD_ICON, null, sELL_SELECT_MAX, false, delegate(int i, Transform t, bool is_recycle)
        {
            if (i < reward_num)
            {
                if (i < sell_data_ary.Length)
                {
                    int enemy_icon_id  = 0;
                    int enemy_icon_id2 = 0;
                    object itemData    = sell_data_ary[i].GetItemData();
                    if (itemData is ItemSortData)
                    {
                        ItemSortData itemSortData = itemData as ItemSortData;
                        enemy_icon_id             = itemSortData.itemData.tableData.enemyIconID;
                        enemy_icon_id2            = itemSortData.itemData.tableData.enemyIconID2;
                    }
                    GET_TYPE getType  = sell_data_ary[i].GetGetType();
                    ItemIcon itemIcon = ItemIcon.Create(sell_data_ary[i].GetIconType(), sell_data_ary[i].GetIconID(), sell_data_ary[i].GetRarity(), t, sell_data_ary[i].GetIconElement(), sell_data_ary[i].GetIconMagiEnableType(), sell_data_ary[i].GetNum(), null, 0, false, -1, false, null, false, enemy_icon_id, enemy_icon_id2, false, getType);
                    itemIcon.SetRewardBG(true);
                    SetMaterialInfo(itemIcon.transform, sell_data_ary[i].GetMaterialType(), sell_data_ary[i].GetTableID(), null);
                }
                else if (shouldAddGold)
                {
                    ItemIcon itemIcon2 = ItemIcon.CreateRewardItemIcon(REWARD_TYPE.MONEY, 1u, t, totalGold, null, 0, false, -1, false, null, false, false, ItemIcon.QUEST_ICON_SIZE_TYPE.DEFAULT);
                    itemIcon2.SetRewardBG(true);
                    SetMaterialInfo(itemIcon2.transform, REWARD_TYPE.MONEY, 0u, null);
                    shouldAddGold = false;
                }
                else if (shouldAddMissionPoint)
                {
                    ItemIcon.GetIconShowData(REWARD_TYPE.POINT_SHOP_POINT, (uint)missionPointData.pointShopId, out int icon_id, out ITEM_ICON_TYPE icon_type, out RARITY_TYPE? rarity, out ELEMENT_TYPE element, out EQUIPMENT_TYPE? _, out int _, out int _, out GET_TYPE _, 0);
                    ItemIcon itemIcon3 = ItemIcon.Create(icon_type, icon_id, rarity, t, element, null, missionPointData.missionPoint, null, 0, false, -1, false, null, false, 0, 0, false, GET_TYPE.PAY);
                    itemIcon3.SetRewardBG(true);
                    int id = (!missionPointData.isEvent) ? 1 : 0;
                    SetMaterialInfo(itemIcon3.transform, REWARD_TYPE.POINT_SHOP_POINT, (uint)id, null);
                    shouldAddMissionPoint = false;
                }
                else
                {
                    ItemIcon itemIcon4 = ItemIcon.CreateRewardItemIcon(REWARD_TYPE.CRYSTAL, 1u, t, crystalNum, null, 0, false, -1, false, null, false, false, ItemIcon.QUEST_ICON_SIZE_TYPE.DEFAULT);
                    itemIcon4.SetRewardBG(true);
                    SetMaterialInfo(itemIcon4.transform, REWARD_TYPE.CRYSTAL, 0u, null);
                }
            }
            else
            {
                SetActive(t, false);
            }
        });
    }