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); }
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_tooltip_consumable_info(IAssignableIdentity minion, GameObject widget_go, ToolTip tooltip) { tooltip.ClearMultiStringTooltip(); ConsumableInfoTableColumn consumableInfoTableColumn = GetWidgetColumn(widget_go) as ConsumableInfoTableColumn; TableRow widgetRow = GetWidgetRow(widget_go); EdiblesManager.FoodInfo foodInfo = consumableInfoTableColumn.consumable_info as EdiblesManager.FoodInfo; int num = 0; if (foodInfo != null) { int num2 = foodInfo.Quality; MinionIdentity minionIdentity = minion as MinionIdentity; if ((UnityEngine.Object)minionIdentity != (UnityEngine.Object)null) { AttributeInstance attributeInstance = minionIdentity.GetAttributes().Get(Db.Get().Attributes.FoodExpectation); num2 += Mathf.RoundToInt(attributeInstance.GetTotalValue()); } string effectForFoodQuality = Edible.GetEffectForFoodQuality(num2); Effect effect = Db.Get().effects.Get(effectForFoodQuality); foreach (AttributeModifier selfModifier in effect.SelfModifiers) { if (selfModifier.AttributeId == Db.Get().Attributes.QualityOfLife.Id) { num += Mathf.RoundToInt(selfModifier.Value); } } } switch (widgetRow.rowType) { case TableRow.RowType.Header: tooltip.AddMultiStringTooltip(consumableInfoTableColumn.consumable_info.ConsumableName, null); if (foodInfo != null) { tooltip.AddMultiStringTooltip(string.Format(UI.CONSUMABLESSCREEN.FOOD_AVAILABLE, GameUtil.GetFormattedCalories(WorldInventory.Instance.GetAmount(consumableInfoTableColumn.consumable_info.ConsumableId.ToTag()) * foodInfo.CaloriesPerUnit, GameUtil.TimeSlice.None, true)), null); tooltip.AddMultiStringTooltip(string.Format(UI.CONSUMABLESSCREEN.FOOD_QUALITY, GameUtil.AddPositiveSign(num.ToString(), num > 0)), null); tooltip.AddMultiStringTooltip("\n" + foodInfo.Description, null); } else { tooltip.AddMultiStringTooltip(string.Format(UI.CONSUMABLESSCREEN.FOOD_AVAILABLE, GameUtil.GetFormattedUnits(WorldInventory.Instance.GetAmount(consumableInfoTableColumn.consumable_info.ConsumableId.ToTag()), GameUtil.TimeSlice.None, true)), null); } break; case TableRow.RowType.Default: if (consumableInfoTableColumn.get_value_action(minion, widget_go) == ResultValues.True) { tooltip.AddMultiStringTooltip(string.Format(UI.CONSUMABLESSCREEN.NEW_MINIONS_FOOD_PERMISSION_ON, consumableInfoTableColumn.consumable_info.ConsumableName), null); } else { tooltip.AddMultiStringTooltip(string.Format(UI.CONSUMABLESSCREEN.NEW_MINIONS_FOOD_PERMISSION_OFF, consumableInfoTableColumn.consumable_info.ConsumableName), null); } break; case TableRow.RowType.Minion: case TableRow.RowType.StoredMinon: if (minion != null) { if (consumableInfoTableColumn.get_value_action(minion, widget_go) == ResultValues.True) { tooltip.AddMultiStringTooltip(string.Format(UI.CONSUMABLESSCREEN.FOOD_PERMISSION_ON, minion.GetProperName(), consumableInfoTableColumn.consumable_info.ConsumableName), null); } else { tooltip.AddMultiStringTooltip(string.Format(UI.CONSUMABLESSCREEN.FOOD_PERMISSION_OFF, minion.GetProperName(), consumableInfoTableColumn.consumable_info.ConsumableName), null); } if (foodInfo != null && (UnityEngine.Object)(minion as MinionIdentity) != (UnityEngine.Object)null) { tooltip.AddMultiStringTooltip(string.Format(UI.CONSUMABLESSCREEN.FOOD_QUALITY_VS_EXPECTATION, GameUtil.AddPositiveSign(num.ToString(), num > 0), minion.GetProperName()), null); } else if ((UnityEngine.Object)(minion as StoredMinionIdentity) != (UnityEngine.Object)null) { tooltip.AddMultiStringTooltip(string.Format(UI.CONSUMABLESSCREEN.CANNOT_ADJUST_PERMISSIONS, (minion as StoredMinionIdentity).GetStorageReason()), null); } } break; } }
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; } } } }
protected override void OnActivate() { title = UI.CONSUMABLESSCREEN.TITLE; base.OnActivate(); AddPortraitColumn("Portrait", base.on_load_portrait, null, true); AddButtonLabelColumn("Names", base.on_load_name_label, base.get_value_name_label, delegate(GameObject widget_go) { GetWidgetRow(widget_go).SelectMinion(); }, delegate(GameObject widget_go) { GetWidgetRow(widget_go).SelectAndFocusMinion(); }, base.compare_rows_alphabetical, on_tooltip_name, base.on_tooltip_sort_alphabetically, false); AddLabelColumn("QOLExpectations", on_load_qualityoflife_expectations, get_value_qualityoflife_label, compare_rows_qualityoflife_expectations, on_tooltip_qualityoflife_expectations, on_tooltip_sort_qualityoflife_expectations, 96, true); List <IConsumableUIItem> list = new List <IConsumableUIItem>(); for (int i = 0; i < FOOD.FOOD_TYPES_LIST.Count; i++) { list.Add(FOOD.FOOD_TYPES_LIST[i]); } List <GameObject> prefabsWithTag = Assets.GetPrefabsWithTag(GameTags.Medicine); for (int j = 0; j < prefabsWithTag.Count; j++) { MedicinalPill component = prefabsWithTag[j].GetComponent <MedicinalPill>(); if ((bool)component) { list.Add(component); } else { DebugUtil.DevLogErrorFormat("Prefab tagged Medicine does not have MedicinalPill component: {0}", prefabsWithTag[j]); } } list.Sort(delegate(IConsumableUIItem a, IConsumableUIItem b) { int num2 = a.MajorOrder.CompareTo(b.MajorOrder); if (num2 == 0) { num2 = a.MinorOrder.CompareTo(b.MinorOrder); } return(num2); }); ConsumerManager.instance.OnDiscover += OnConsumableDiscovered; List <ConsumableInfoTableColumn> list2 = new List <ConsumableInfoTableColumn>(); List <DividerColumn> list3 = new List <DividerColumn>(); List <ConsumableInfoTableColumn> list4 = new List <ConsumableInfoTableColumn>(); StartScrollableContent("consumableScroller"); int num = 0; for (int k = 0; k < list.Count; k++) { if (list[k].Display) { if (list[k].MajorOrder != num && k != 0) { string id = "QualityDivider_" + list[k].MajorOrder; ConsumableInfoTableColumn[] quality_group_columns = list4.ToArray(); DividerColumn dividerColumn = new DividerColumn(delegate { if (quality_group_columns == null || quality_group_columns.Length == 0) { return(true); } ConsumableInfoTableColumn[] array = quality_group_columns; foreach (ConsumableInfoTableColumn consumableInfoTableColumn in array) { if (consumableInfoTableColumn.isRevealed) { return(true); } } return(false); }, "consumableScroller"); list3.Add(dividerColumn); RegisterColumn(id, dividerColumn); list4.Clear(); } ConsumableInfoTableColumn item = AddConsumableInfoColumn(list[k].ConsumableId, list[k], on_load_consumable_info, get_value_consumable_info, on_click_consumable_info, set_value_consumable_info, compare_consumable_info, on_tooltip_consumable_info, on_tooltip_sort_consumable_info); list2.Add(item); num = list[k].MajorOrder; list4.Add(item); } } AddSuperCheckboxColumn("SuperCheckConsumable", list2.ToArray(), base.on_load_value_checkbox_column_super, get_value_checkbox_column_super, base.on_press_checkbox_column_super, base.set_value_checkbox_column_super, null, on_tooltip_consumable_info_super); }