protected ConsumableInfoTableColumn AddConsumableInfoColumn(string id, IConsumableUIItem consumable_info, Action <IAssignableIdentity, GameObject> load_value_action, Func <IAssignableIdentity, GameObject, ResultValues> get_value_action, Action <GameObject> on_press_action, Action <GameObject, ResultValues> set_value_action, Comparison <IAssignableIdentity> sort_comparison, Action <IAssignableIdentity, GameObject, ToolTip> on_tooltip, Action <IAssignableIdentity, GameObject, ToolTip> on_sort_tooltip)
    {
        ConsumableInfoTableColumn consumableInfoTableColumn = new ConsumableInfoTableColumn(consumable_info, load_value_action, get_value_action, on_press_action, set_value_action, sort_comparison, on_tooltip, on_sort_tooltip, (GameObject widget_go) => string.Empty);

        consumableInfoTableColumn.scrollerID = "consumableScroller";
        if (RegisterColumn(id, consumableInfoTableColumn))
        {
            return(consumableInfoTableColumn);
        }
        return(null);
    }
示例#2
0
 public ConsumableInfoTableColumn(IConsumableUIItem consumable_info, Action <IAssignableIdentity, GameObject> load_value_action, Func <IAssignableIdentity, GameObject, TableScreen.ResultValues> get_value_action, Action <GameObject> on_press_action, Action <GameObject, TableScreen.ResultValues> set_value_action, Comparison <IAssignableIdentity> sort_comparison, Action <IAssignableIdentity, GameObject, ToolTip> on_tooltip, Action <IAssignableIdentity, GameObject, ToolTip> on_sort_tooltip, Func <GameObject, string> get_header_label)
     : base(load_value_action, get_value_action, on_press_action, set_value_action, sort_comparison, on_tooltip, on_sort_tooltip, () => DebugHandler.InstantBuildMode || ConsumerManager.instance.isDiscovered(consumable_info.ConsumableId.ToTag()))
 {
     this.consumable_info  = consumable_info;
     this.get_header_label = get_header_label;
 }
    private ResultValues get_value_consumable_info(IAssignableIdentity minion, GameObject widget_go)
    {
        ConsumableInfoTableColumn consumableInfoTableColumn = GetWidgetColumn(widget_go) as ConsumableInfoTableColumn;
        IConsumableUIItem         consumable_info           = consumableInfoTableColumn.consumable_info;
        TableRow     widgetRow = GetWidgetRow(widget_go);
        ResultValues result    = ResultValues.Partial;

        switch (widgetRow.rowType)
        {
        case TableRow.RowType.Header:
        {
            bool flag  = true;
            bool flag2 = true;
            bool flag3 = false;
            bool flag4 = false;
            foreach (KeyValuePair <TableRow, GameObject> item in consumableInfoTableColumn.widgets_by_row)
            {
                GameObject value = item.Value;
                if (!((UnityEngine.Object)value == (UnityEngine.Object)widget_go) && !((UnityEngine.Object)value == (UnityEngine.Object)null))
                {
                    switch (consumableInfoTableColumn.get_value_action(item.Key.GetIdentity(), value))
                    {
                    case ResultValues.False:
                        flag2 = false;
                        if (!flag)
                        {
                            flag4 = true;
                        }
                        break;

                    case ResultValues.Partial:
                        flag3 = true;
                        flag4 = true;
                        break;

                    case ResultValues.True:
                        flag = false;
                        if (!flag2)
                        {
                            flag4 = true;
                        }
                        break;
                    }
                    if (flag4)
                    {
                        break;
                    }
                }
            }
            result = (flag3 ? ResultValues.Partial : (flag2 ? ResultValues.True : ((!flag) ? ResultValues.Partial : ResultValues.False)));
            break;
        }

        case TableRow.RowType.Default:
            result = ((!ConsumerManager.instance.DefaultForbiddenTagsList.Contains(consumable_info.ConsumableId.ToTag())) ? ResultValues.True : ResultValues.False);
            break;

        case TableRow.RowType.Minion:
            if ((UnityEngine.Object)(minion as MinionIdentity) != (UnityEngine.Object)null)
            {
                ConsumableConsumer component = ((MinionIdentity)minion).GetComponent <ConsumableConsumer>();
                result = (component.IsPermitted(consumable_info.ConsumableId) ? ResultValues.True : ResultValues.False);
            }
            else
            {
                result = ResultValues.True;
            }
            break;

        case TableRow.RowType.StoredMinon:
            result = ((!((UnityEngine.Object)(minion as StoredMinionIdentity) != (UnityEngine.Object)null)) ? ResultValues.True : (((StoredMinionIdentity)minion).IsPermittedToConsume(consumable_info.ConsumableId) ? ResultValues.True : ResultValues.False));
            break;
        }
        return(result);
    }
    private void on_load_consumable_info(IAssignableIdentity minion, GameObject widget_go)
    {
        TableRow          widgetRow       = GetWidgetRow(widget_go);
        TableColumn       widgetColumn    = GetWidgetColumn(widget_go);
        IConsumableUIItem consumable_info = (widgetColumn as ConsumableInfoTableColumn).consumable_info;

        EdiblesManager.FoodInfo foodInfo  = consumable_info as EdiblesManager.FoodInfo;
        MultiToggle             component = widget_go.GetComponent <MultiToggle>();

        if (!widgetColumn.isRevealed)
        {
            widget_go.SetActive(false);
        }
        else
        {
            if (!widget_go.activeSelf)
            {
                widget_go.SetActive(true);
            }
            switch (widgetRow.rowType)
            {
            case TableRow.RowType.Header:
            {
                GameObject prefab = Assets.GetPrefab(consumable_info.ConsumableId.ToTag());
                if ((UnityEngine.Object)prefab == (UnityEngine.Object)null)
                {
                    return;
                }
                KBatchedAnimController component2 = prefab.GetComponent <KBatchedAnimController>();
                Image image2 = widget_go.GetComponent <HierarchyReferences>().GetReference("PortraitImage") as Image;
                if (component2.AnimFiles.Length > 0)
                {
                    Sprite sprite = image2.sprite = Def.GetUISpriteFromMultiObjectAnim(component2.AnimFiles[0], "ui", false, string.Empty);
                }
                image2.color    = Color.white;
                image2.material = ((!(WorldInventory.Instance.GetAmount(consumable_info.ConsumableId.ToTag()) > 0f)) ? Assets.UIPrefabs.TableScreenWidgets.DesaturatedUIMaterial : Assets.UIPrefabs.TableScreenWidgets.DefaultUIMaterial);
                break;
            }

            case TableRow.RowType.Default:
                switch (get_value_consumable_info(minion, widget_go))
                {
                case ResultValues.False:
                    component.ChangeState(0);
                    break;

                case ResultValues.True:
                    component.ChangeState(1);
                    break;

                case ResultValues.ConditionalGroup:
                    component.ChangeState(2);
                    break;
                }
                break;

            case TableRow.RowType.Minion:
            case TableRow.RowType.StoredMinon:
                switch (get_value_consumable_info(minion, widget_go))
                {
                case ResultValues.False:
                    component.ChangeState(0);
                    break;

                case ResultValues.True:
                    component.ChangeState(1);
                    break;

                case ResultValues.ConditionalGroup:
                    component.ChangeState(2);
                    break;
                }
                if (foodInfo != null && (UnityEngine.Object)(minion as MinionIdentity) != (UnityEngine.Object)null)
                {
                    Image image  = widget_go.GetComponent <HierarchyReferences>().GetReference("BGImage") as Image;
                    Color color2 = image.color = new Color(0.721568644f, 0.443137258f, 0.5803922f, Mathf.Max((float)foodInfo.Quality - Db.Get().Attributes.FoodExpectation.Lookup(minion as MinionIdentity).GetTotalValue() + 1f, 0f) * 0.25f);
                }
                break;
            }
            refresh_scrollers();
        }
    }
    private void on_click_consumable_info(GameObject widget_go)
    {
        ConsumableConsumer        consumableConsumer        = null;
        IConsumableUIItem         consumableUIItem          = null;
        TableRow                  widgetRow                 = GetWidgetRow(widget_go);
        IAssignableIdentity       identity                  = widgetRow.GetIdentity();
        ConsumableInfoTableColumn consumableInfoTableColumn = GetWidgetColumn(widget_go) as ConsumableInfoTableColumn;

        switch (widgetRow.rowType)
        {
        case TableRow.RowType.Header:
            switch (get_value_consumable_info(null, widget_go))
            {
            case ResultValues.True:
                consumableInfoTableColumn.on_set_action(widget_go, ResultValues.False);
                break;

            case ResultValues.False:
            case ResultValues.Partial:
            case ResultValues.ConditionalGroup:
                consumableInfoTableColumn.on_set_action(widget_go, ResultValues.True);
                break;
            }
            consumableInfoTableColumn.on_load_action(null, widget_go);
            break;

        case TableRow.RowType.Default:
        {
            consumableUIItem = consumableInfoTableColumn.consumable_info;
            bool flag3 = !ConsumerManager.instance.DefaultForbiddenTagsList.Contains(consumableUIItem.ConsumableId.ToTag());
            consumableInfoTableColumn.on_set_action(widget_go, (!flag3) ? ResultValues.True : ResultValues.False);
            break;
        }

        case TableRow.RowType.Minion:
        {
            MinionIdentity minionIdentity = identity as MinionIdentity;
            if ((UnityEngine.Object)minionIdentity != (UnityEngine.Object)null)
            {
                consumableUIItem   = consumableInfoTableColumn.consumable_info;
                consumableConsumer = minionIdentity.GetComponent <ConsumableConsumer>();
                if ((UnityEngine.Object)consumableConsumer == (UnityEngine.Object)null)
                {
                    Debug.LogError("Could not find minion identity / row associated with the widget");
                }
                else
                {
                    bool flag2 = consumableConsumer.IsPermitted(consumableUIItem.ConsumableId);
                    consumableInfoTableColumn.on_set_action(widget_go, (!flag2) ? ResultValues.True : ResultValues.False);
                }
            }
            break;
        }

        case TableRow.RowType.StoredMinon:
        {
            StoredMinionIdentity storedMinionIdentity = identity as StoredMinionIdentity;
            if ((UnityEngine.Object)storedMinionIdentity != (UnityEngine.Object)null)
            {
                consumableUIItem = consumableInfoTableColumn.consumable_info;
                bool flag = storedMinionIdentity.IsPermittedToConsume(consumableUIItem.ConsumableId);
                consumableInfoTableColumn.on_set_action(widget_go, (!flag) ? ResultValues.True : ResultValues.False);
            }
            break;
        }
        }
    }
    private void set_value_consumable_info(GameObject widget_go, ResultValues new_value)
    {
        ConsumableConsumer consumableConsumer = null;
        IConsumableUIItem  consumableUIItem   = null;
        TableRow           widgetRow          = GetWidgetRow(widget_go);

        if ((UnityEngine.Object)widgetRow == (UnityEngine.Object)null)
        {
            Debug.LogWarning("Row is null");
        }
        else
        {
            ConsumableInfoTableColumn consumableInfoTableColumn = GetWidgetColumn(widget_go) as ConsumableInfoTableColumn;
            IAssignableIdentity       identity = widgetRow.GetIdentity();
            consumableUIItem = consumableInfoTableColumn.consumable_info;
            switch (widgetRow.rowType)
            {
            case TableRow.RowType.StoredMinon:
                break;

            case TableRow.RowType.Header:
                set_value_consumable_info(default_row.GetComponent <TableRow>().GetWidget(consumableInfoTableColumn), new_value);
                StartCoroutine(CascadeSetColumnCheckBoxes(sortable_rows, consumableInfoTableColumn, new_value, widget_go));
                break;

            case TableRow.RowType.Default:
                if (new_value == ResultValues.True)
                {
                    ConsumerManager.instance.DefaultForbiddenTagsList.Remove(consumableUIItem.ConsumableId.ToTag());
                }
                else
                {
                    ConsumerManager.instance.DefaultForbiddenTagsList.Add(consumableUIItem.ConsumableId.ToTag());
                }
                consumableInfoTableColumn.on_load_action(identity, widget_go);
                foreach (KeyValuePair <TableRow, GameObject> item in consumableInfoTableColumn.widgets_by_row)
                {
                    if (item.Key.rowType == TableRow.RowType.Header)
                    {
                        consumableInfoTableColumn.on_load_action(null, item.Value);
                        break;
                    }
                }
                break;

            case TableRow.RowType.Minion:
            {
                MinionIdentity minionIdentity = identity as MinionIdentity;
                if ((UnityEngine.Object)minionIdentity != (UnityEngine.Object)null)
                {
                    consumableConsumer = minionIdentity.GetComponent <ConsumableConsumer>();
                    if ((UnityEngine.Object)consumableConsumer == (UnityEngine.Object)null)
                    {
                        Debug.LogError("Could not find minion identity / row associated with the widget");
                    }
                    else
                    {
                        switch (new_value)
                        {
                        case ResultValues.True:
                        case ResultValues.ConditionalGroup:
                            consumableConsumer.SetPermitted(consumableUIItem.ConsumableId, true);
                            break;

                        case ResultValues.False:
                        case ResultValues.Partial:
                            consumableConsumer.SetPermitted(consumableUIItem.ConsumableId, false);
                            break;
                        }
                        consumableInfoTableColumn.on_load_action(widgetRow.GetIdentity(), widget_go);
                        foreach (KeyValuePair <TableRow, GameObject> item2 in consumableInfoTableColumn.widgets_by_row)
                        {
                            if (item2.Key.rowType == TableRow.RowType.Header)
                            {
                                consumableInfoTableColumn.on_load_action(null, item2.Value);
                                break;
                            }
                        }
                    }
                }
                break;
            }
            }
        }
    }