private void DoStageDropdown(WidgetRow row, int setI, Action <int> selectedAction) { if (row.ButtonText(Sel.stages[setI]?.label.CapitalizeFirst() ?? "TD.Invisible".Translate())) { List <FloatMenuOption> options = new List <FloatMenuOption>(); IEnumerable <int> stageIndices = ContentsUtility.onlyAvailable ? ContentsUtility.AvailableInGame(t => ThoughtStagesForThing(t, Sel)) : Enumerable.Range(0, Sel.stages.Count); foreach (int i in stageIndices.Where(i => DebugSettings.godMode || (Sel.stages[i]?.visible ?? false))) { int localI = i; options.Add(new FloatMenuOption(Sel.stages[i]?.label.CapitalizeFirst() ?? "TD.Invisible".Translate(), () => selectedAction(localI))); } MainTabWindow_List.DoFloatMenu(options); } }
public override IEnumerable <TraitDef> Options() => ContentsUtility.onlyAvailable ? ContentsUtility.AvailableInGame(t => (t as Pawn)?.story?.traits.allTraits.Select(tr => tr.def) ?? Enumerable.Empty <TraitDef>()) : base.Options();
public override IEnumerable <ThoughtDef> Options() => ContentsUtility.onlyAvailable ? ContentsUtility.AvailableInGame(ThoughtsForThing) : base.Options();