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); }
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; } } } }