//other hardcoded options public void OtherOptionsMaker() { List <FloatMenuOption> list = new List <FloatMenuOption>(); if (new[] { pawnType.Colonists, pawnType.Prisoners, pawnType.Enemies }.Contains(chosenPawnType)) { Action action = delegate { KListObject kl = new KListObject(KListObject.objectType.Gear, "Equipment".Translate(), null); if (fits(kl.minWidthDesired)) { kList.Add(kl); } }; list.Add(new FloatMenuOption("Equipment".Translate(), action, MenuOptionPriority.Medium, null, null)); } if (chosenPawnType == pawnType.Prisoners) { Action action = delegate { KListObject kl = new KListObject(KListObject.objectType.ControlPrisonerGetsFood, "GetsFood".Translate(), null); if (fits(kl.minWidthDesired)) { kList.Add(kl); } }; list.Add(new FloatMenuOption("GetsFood".Translate(), action, MenuOptionPriority.Medium, null, null)); Action action2 = delegate { KListObject kl = new KListObject(KListObject.objectType.ControlPrisonerInteraction, "koisama.Interaction".Translate(), null); if (fits(kl.minWidthDesired)) { kList.Add(kl); } }; list.Add(new FloatMenuOption("koisama.Interaction".Translate(), action2, MenuOptionPriority.Medium, null, null)); } if (new[] { pawnType.Colonists, pawnType.Prisoners }.Contains(chosenPawnType)) { Action action = delegate { KListObject kl = new KListObject(KListObject.objectType.ControlMedicalCare, "koisama.MedicalCare".Translate(), null); if (fits(kl.minWidthDesired)) { kList.Add(kl); } }; list.Add(new FloatMenuOption("koisama.MedicalCare".Translate(), action, MenuOptionPriority.Medium, null, null)); } Find.WindowStack.Add(new FloatMenu(list, false)); }
public void RecordsOptionsMaker() { List <FloatMenuOption> list = new List <FloatMenuOption>(); foreach (RecordDef rcd in DefDatabase <RecordDef> .AllDefsListForReading) { Action action = delegate { KListObject kl = new KListObject(KListObject.ObjectType.Record, rcd.LabelCap, rcd); kList.Add(kl); }; list.Add(new FloatMenuOption(rcd.LabelCap, action, MenuOptionPriority.Default, null, null)); } Find.WindowStack.Add(new FloatMenu(list)); }
public void CapacityOptionsMaker() { List <FloatMenuOption> list = new List <FloatMenuOption>(); foreach (PawnCapacityDef pcd in DefDatabase <PawnCapacityDef> .AllDefsListForReading) { Action action = delegate { KListObject kl = new KListObject(KListObject.objectType.Capacity, pcd.LabelCap, pcd); //if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption(pcd.LabelCap, action, MenuOptionPriority.Default, null, null)); } Find.WindowStack.Add(new FloatMenu(list)); }
public void NeedsOptionsMaker() { List <FloatMenuOption> list = new List <FloatMenuOption>(); foreach (NeedDef need in pNeedDef) { Action action = delegate { KListObject kl = new KListObject(KListObject.objectType.Need, need.LabelCap, need); //if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption(need.LabelCap, action, MenuOptionPriority.Default, null, null)); } Find.WindowStack.Add(new FloatMenu(list)); }
public void StatsOptionsMaker() { List <FloatMenuOption> list = new List <FloatMenuOption>(); foreach (StatDef stat in pStatDef) { Action action = delegate { KListObject kl = new KListObject(KListObject.objectType.Stat, stat.LabelCap, stat); //if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption(stat.LabelCap, action, MenuOptionPriority.Default, null, null)); } Find.WindowStack.Add(new FloatMenu(list)); }
public void SkillsOptionsMaker() { List <FloatMenuOption> list = new List <FloatMenuOption>(); foreach (SkillDef skill in DefDatabase <SkillDef> .AllDefsListForReading) { Action action = delegate { KListObject kl = new KListObject(KListObject.ObjectType.Skill, skill.LabelCap, skill); //if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption(skill.LabelCap, action, MenuOptionPriority.Default, null, null)); } Find.WindowStack.Add(new FloatMenu(list)); }
public override void DoWindowContents(Rect r) { base.DoWindowContents(r); if (pawnListUpdateNext < Find.TickManager.TicksGame) { isDirty = true; } if (isDirty) { UpdatePawnList(); } Rect position = new Rect(0f, 0f, r.width, 110f); GUI.BeginGroup(position); float x = 0f; Text.Font = GameFont.Small; //pawn/prisoner list switch Rect sourceButton = new Rect(x, 0f, 180f, PawnRowHeight); if (Widgets.TextButton(sourceButton, ("koisama.pawntype." + chosenPawnType.ToString()).Translate())) { PawnSelectOptionsMaker(); } x += 190; //stats btn Rect addColumnButton = new Rect(x, 0f, 180f, PawnRowHeight); if (Widgets.TextButton(addColumnButton, "koisama.Numbers.AddColumnLabel".Translate())) { StatsOptionsMaker(); } x += 190; //skills btn if (new[] { pawnType.Colonists, pawnType.Prisoners, pawnType.Enemies }.Contains(chosenPawnType)) { Rect skillColumnButton = new Rect(x, 0f, 180f, PawnRowHeight); if (Widgets.TextButton(skillColumnButton, "koisama.Numbers.AddSkillColumnLabel".Translate())) { SkillsOptionsMaker(); } x += 190; } //needs btn Rect needsColumnButton = new Rect(x, 0f, 180f, PawnRowHeight); if (Widgets.TextButton(needsColumnButton, "koisama.Numbers.AddNeedsColumnLabel".Translate())) { NeedsOptionsMaker(); } x += 190; Rect otherColumnBtn = new Rect(x, 0f, 180f, PawnRowHeight); if (Widgets.TextButton(otherColumnBtn, "koisama.Numbers.AddOtherColumnLabel".Translate())) { OtherOptionsMaker(); } x += 190; x = 0; //names Rect nameLabel = new Rect(x, 75f, NameColumnWidth, PawnRowHeight); Text.Anchor = TextAnchor.LowerCenter; Widgets.Label(nameLabel, "koisama.Numbers.Name".Translate()); if (Widgets.InvisibleButton(nameLabel)) { if (chosenOrderBy == orderBy.Name) { pawnListDescending = !pawnListDescending; } else { chosenOrderBy = orderBy.Name; pawnListDescending = false; } isDirty = true; } TooltipHandler.TipRegion(nameLabel, "koisama.Numbers.SortByTooltip".Translate("koisama.Numbers.Name".Translate())); Widgets.DrawHighlightIfMouseover(nameLabel); x += NameColumnWidth; //header //TODO: better interface - auto width calculation bool offset = true; kListDesiredWidth = 175f; for (int i = 0; i < kList.Count; i++) { float colWidth = kList[i].minWidthDesired; kListDesiredWidth += colWidth; Rect defLabel = new Rect(x - 35, 20f + (offset ? 10f : 50f), colWidth + 70, 40f); Widgets.DrawLine(new Vector2(x + colWidth / 2, 52f + (offset ? 15f : 55f)), new Vector2(x + colWidth / 2, 110f), Color.gray, 1); Widgets.Label(defLabel, kList[i].label); StringBuilder labelSB = new StringBuilder(); labelSB.AppendLine("koisama.Numbers.SortByTooltip".Translate(kList[i].label)); labelSB.AppendLine("koisama.Numbers.RemoveTooltip".Translate()); TooltipHandler.TipRegion(defLabel, labelSB.ToString()); Widgets.DrawHighlightIfMouseover(defLabel); if (Widgets.InvisibleButton(defLabel)) { if (Event.current.button == 1) { kList.RemoveAt(i); } else { if (chosenOrderBy == orderBy.Column && kList[i].Equals(sortObject)) { pawnListDescending = !pawnListDescending; } else { sortObject = kList[i]; chosenOrderBy = orderBy.Column; pawnListDescending = false; } } isDirty = true; } offset = !offset; x += colWidth; } GUI.EndGroup(); //content Rect content = new Rect(0f, position.yMax, r.width, r.height - position.yMax); GUI.BeginGroup(content); base.DrawRows(new Rect(0f, 0f, content.width, content.height)); GUI.EndGroup(); }
//other hardcoded options public void OtherOptionsMaker() { List <FloatMenuOption> list = new List <FloatMenuOption>(); //equipment bearers if (new[] { pawnType.Colonists, pawnType.Prisoners, pawnType.Enemies, pawnType.Corpses }.Contains(chosenPawnType)) { Action action = delegate { KListObject kl = new KListObject(KListObject.objectType.Gear, "koisama.Equipment".Translate(), null); //if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption("koisama.Equipment".Translate(), action, MenuOptionPriority.Default, null, null)); } //all living things if (new[] { pawnType.Colonists, pawnType.Prisoners, pawnType.Enemies, pawnType.Animals, pawnType.WildAnimals, pawnType.Guests }.Contains(chosenPawnType)) { Action action = delegate { KListObject kl = new KListObject(KListObject.objectType.Age, "koisama.Age".Translate(), null); //if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption("koisama.Age".Translate(), action, MenuOptionPriority.Default, null, null)); action = delegate { KListObject kl = new KListObject(KListObject.objectType.MentalState, "koisama.MentalState".Translate(), null); //if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption("koisama.MentalState".Translate(), action, MenuOptionPriority.Default, null, null)); } if (chosenPawnType == pawnType.Prisoners) { Action action = delegate { KListObject kl = new KListObject(KListObject.objectType.ControlPrisonerGetsFood, "GetsFood".Translate(), null); //if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption("GetsFood".Translate(), action, MenuOptionPriority.Default, null, null)); Action action2 = delegate { KListObject kl = new KListObject(KListObject.objectType.ControlPrisonerInteraction, "koisama.Interaction".Translate(), null); //if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption("koisama.Interaction".Translate(), action2, MenuOptionPriority.Default, null, null)); } if (chosenPawnType == pawnType.Animals) { Action action = delegate { KListObject kl = new KListObject(KListObject.objectType.AnimalMilkFullness, "MilkFullness".Translate(), null); //if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption("MilkFullness".Translate(), action, MenuOptionPriority.Default, null, null)); Action action2 = delegate { KListObject kl = new KListObject(KListObject.objectType.AnimalWoolGrowth, "WoolGrowth".Translate(), null); //if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption("WoolGrowth".Translate(), action2, MenuOptionPriority.Default, null, null)); } //healable if (new[] { pawnType.Colonists, pawnType.Prisoners, pawnType.Animals }.Contains(chosenPawnType)) { Action action = delegate { KListObject kl = new KListObject(KListObject.objectType.ControlMedicalCare, "koisama.MedicalCare".Translate(), null); //if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption("koisama.MedicalCare".Translate(), action, MenuOptionPriority.Default, null, null)); } if (!new[] { pawnType.Corpses, pawnType.AnimalCorpses }.Contains(chosenPawnType)) { Action action = delegate { KListObject kl = new KListObject(KListObject.objectType.CurrentJob, "koisama.CurrentJob".Translate(), null); //if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption("koisama.CurrentJob".Translate(), action, MenuOptionPriority.Default, null, null)); } Find.WindowStack.Add(new FloatMenu(list)); }
public override void DoWindowContents(Rect r) { var component = Find.World.GetComponent <WorldComponent_Numbers>(); maxWindowWidth = Screen.width; base.DoWindowContents(r); if (pawnListUpdateNext < Find.TickManager.TicksGame) { isDirty = true; } if (isDirty) { UpdatePawnList(); } Rect position = new Rect(0f, 0f, r.width, 115f); GUI.BeginGroup(position); float x = 0f; Text.Font = GameFont.Small; //pawn/prisoner list switch Rect sourceButton = new Rect(x, 0f, buttonWidth, PawnRowHeight); if (Widgets.ButtonText(sourceButton, ("koisama.pawntype." + component.chosenPawnType.ToString()).Translate())) { PawnSelectOptionsMaker(); } x += buttonWidth + 10; TooltipHandler.TipRegion(sourceButton, new TipSignal("koisama.Numbers.ClickToToggle".Translate(), sourceButton.GetHashCode())); //stats btn Rect addColumnButton = new Rect(x, 0f, buttonWidth, PawnRowHeight); if (Widgets.ButtonText(addColumnButton, "koisama.Numbers.AddColumnLabel".Translate())) { StatsOptionsMaker(); } x += buttonWidth + 10; //skills btn if (new[] { PawnType.Colonists, PawnType.Prisoners, PawnType.Enemies }.Contains(component.chosenPawnType)) { Rect skillColumnButton = new Rect(x, 0f, buttonWidth, PawnRowHeight); if (Widgets.ButtonText(skillColumnButton, "koisama.Numbers.AddSkillColumnLabel".Translate())) { SkillsOptionsMaker(); } x += buttonWidth + 10; } if (!new[] { PawnType.AnimalCorpses, PawnType.Corpses }.Contains(component.chosenPawnType)) { //needs btn Rect needsColumnButton = new Rect(x, 0f, buttonWidth, PawnRowHeight); if (Widgets.ButtonText(needsColumnButton, "koisama.Numbers.AddNeedsColumnLabel".Translate())) { NeedsOptionsMaker(); } x += buttonWidth + 10; } //cap btn Rect capacityColumnButton = new Rect(x, 0f, buttonWidth, PawnRowHeight); if (Widgets.ButtonText(capacityColumnButton, "koisama.Numbers.AddCapacityColumnLabel".Translate())) { CapacityOptionsMaker(); } x += buttonWidth + 10; if (!new[] { PawnType.AnimalCorpses }.Contains(component.chosenPawnType)) { Rect otherColumnBtn = new Rect(x, 0f, buttonWidth, PawnRowHeight); if (Widgets.ButtonText(otherColumnBtn, "koisama.Numbers.AddOtherColumnLabel".Translate())) { OtherOptionsMaker(); } x += buttonWidth + 10; } Rect recordsColumnBtn = new Rect(x, 0f, buttonWidth, PawnRowHeight); if (Widgets.ButtonText(recordsColumnBtn, "TabRecords".Translate())) { RecordsOptionsMaker(); } x += buttonWidth + 10; //TODO: implement /* * Rect addPresetBtn = new Rect(x, 0f, buttonWidth, PawnRowHeight); * if (Widgets.ButtonText(addPresetBtn, "koisama.Numbers.SetPresetLabel".Translate())) * { * PresetOptionsMaker(); * } * x += buttonWidth + 10; */ Rect thingCount = new Rect(10f, 45f, 200f, 30f); Widgets.Label(thingCount, "koisama.Numbers.Count".Translate() + ": " + this.things.Count().ToString()); x = 0; //names Rect nameLabel = new Rect(x, 75f, NameColumnWidth, PawnRowHeight); Text.Anchor = TextAnchor.LowerCenter; Widgets.Label(nameLabel, "koisama.Numbers.Name".Translate()); if (Widgets.ButtonInvisible(nameLabel)) { if (chosenOrderBy == OrderBy.Name) { pawnListDescending = !pawnListDescending; } else { chosenOrderBy = OrderBy.Name; pawnListDescending = false; } isDirty = true; } TooltipHandler.TipRegion(nameLabel, "koisama.Numbers.SortByTooltip".Translate("koisama.Numbers.Name".Translate())); Widgets.DrawHighlightIfMouseover(nameLabel); x += NameColumnWidth; //header //TODO: better interface - auto width calculation int reorderableGroup = ReorderableWidget.NewGroup(delegate(int from, int to) { KListObject oldKlistObject = kList[from]; kList.Insert(to, oldKlistObject); kList.RemoveAt((from >= to) ? (from + 1) : from); }, ReorderableDirection.Horizontal); bool offset = true; kListDesiredWidth = 175f; Text.Anchor = TextAnchor.MiddleCenter; for (int i = 0; i < kList.Count; i++) { float colWidth = kList[i].minWidthDesired; if (colWidth + kListDesiredWidth + cFreeSpaceAtTheEnd > maxWindowWidth) { break; } kListDesiredWidth += colWidth; Rect defLabel = new Rect(x - 35, 25f + (offset ? 10f : 50f), colWidth + 70, 40f); Widgets.DrawLine(new Vector2(x + colWidth / 2, 55f + (offset ? 15f : 55f)), new Vector2(x + colWidth / 2, 113f), Color.gray, 1); Widgets.Label(defLabel, kList[i].label); ReorderableWidget.Reorderable(reorderableGroup, defLabel); StringBuilder labelSB = new StringBuilder(); labelSB.AppendLine("koisama.Numbers.SortByTooltip".Translate(kList[i].label)); labelSB.AppendLine("koisama.Numbers.RemoveTooltip".Translate()); labelSB.AppendLine("DragToReorder".Translate()); TooltipHandler.TipRegion(defLabel, labelSB.ToString()); Widgets.DrawHighlightIfMouseover(defLabel); if (Widgets.ButtonInvisible(defLabel)) { if (Event.current.button == 1) { kList.RemoveAt(i); } else { if (chosenOrderBy == OrderBy.Column && kList[i].Equals(sortObject)) { pawnListDescending = !pawnListDescending; } else { sortObject = kList[i]; chosenOrderBy = OrderBy.Column; pawnListDescending = false; } } isDirty = true; } offset = !offset; x += colWidth; } GUI.EndGroup(); //content Rect content = new Rect(0f, position.yMax, r.width, r.height - position.yMax); GUI.BeginGroup(content); base.DrawRows(new Rect(0f, 0f, content.width, content.height)); GUI.EndGroup(); }
//other hardcoded options public void OtherOptionsMaker() { var component = Find.World.GetComponent <WorldComponent_Numbers>(); List <FloatMenuOption> list = new List <FloatMenuOption>(); //equipment bearers if (new[] { PawnType.Colonists, PawnType.Prisoners, PawnType.Enemies, PawnType.Corpses }.Contains(component.chosenPawnType)) { Action action = delegate { KListObject kl = new KListObject(KListObject.ObjectType.Gear, "koisama.Equipment".Translate(), null); //if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption("koisama.Equipment".Translate(), action, MenuOptionPriority.Default, null, null)); } //all living things if (new[] { PawnType.Colonists, PawnType.Prisoners, PawnType.Enemies, PawnType.Animals, PawnType.WildAnimals, PawnType.Guests }.Contains(component.chosenPawnType)) { Action action = delegate { KListObject kl = new KListObject(KListObject.ObjectType.Age, "koisama.Age".Translate(), null); //if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption("koisama.Age".Translate(), action, MenuOptionPriority.Default, null, null)); action = delegate { KListObject kl = new KListObject(KListObject.ObjectType.MentalState, "koisama.MentalState".Translate(), null); //if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption("koisama.MentalState".Translate(), action, MenuOptionPriority.Default, null, null)); Action action2 = delegate { KListObject kl = new KListObject(KListObject.ObjectType.Race, "Race".Translate(), null); //if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption("Race".Translate(), action2, MenuOptionPriority.Default, null, null)); } if (component.chosenPawnType == PawnType.Prisoners) { Action action2 = delegate { KListObject kl = new KListObject(KListObject.ObjectType.ControlPrisonerInteraction, "koisama.Interaction".Translate(), null); //if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption("koisama.Interaction".Translate(), action2, MenuOptionPriority.Default, null, null)); Action action3 = delegate { KListObject kl = new KListObject(KListObject.ObjectType.PrisonerRecruitmentDifficulty, "RecruitmentDifficulty".Translate(), null); kList.Add(kl); }; list.Add(new FloatMenuOption("RecruitmentDifficulty".Translate(), action3, MenuOptionPriority.Default, null, null)); Action action4 = delegate { KListObject kl = new KListObject(KListObject.ObjectType.PrisonerResistance, "RecruitmentResistance".Translate(), null); kList.Add(kl); }; list.Add(new FloatMenuOption("RecruitmentResistance".Translate(), action4, MenuOptionPriority.Default, null, null)); } if (component.chosenPawnType == PawnType.Animals) { Action action = delegate { KListObject kl = new KListObject(KListObject.ObjectType.AnimalMilkFullness, "MilkFullness".Translate(), null); //if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption("MilkFullness".Translate(), action, MenuOptionPriority.Default, null, null)); Action action2 = delegate { KListObject kl = new KListObject(KListObject.ObjectType.AnimalWoolGrowth, "WoolGrowth".Translate(), null); //if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption("WoolGrowth".Translate(), action2, MenuOptionPriority.Default, null, null)); Action action3 = delegate { KListObject kl = new KListObject(KListObject.ObjectType.AnimalEggProgress, "EggProgress".Translate(), null); //if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption("EggProgress".Translate(), action3, MenuOptionPriority.Default, null, null)); } //healable if (new[] { PawnType.Colonists, PawnType.Prisoners, PawnType.Animals }.Contains(component.chosenPawnType)) { Action action = delegate { KListObject kl = new KListObject(KListObject.ObjectType.ControlMedicalCare, "koisama.MedicalCare".Translate(), null); //if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption("koisama.MedicalCare".Translate(), action, MenuOptionPriority.Default, null, null)); } if (!new[] { PawnType.Corpses, PawnType.AnimalCorpses }.Contains(component.chosenPawnType)) { Action action = delegate { KListObject kl = new KListObject(KListObject.ObjectType.CurrentJob, "koisama.CurrentJob".Translate(), null); //if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption("koisama.CurrentJob".Translate(), action, MenuOptionPriority.Default, null, null)); Action action2 = delegate { KListObject kl = new KListObject(KListObject.ObjectType.QueuedJob, "koisama.QueuedJob".Translate(), null); //if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption("koisama.QueuedJob".Translate(), action2, MenuOptionPriority.Default, null, null)); } Find.WindowStack.Add(new FloatMenu(list)); }
public override void DoWindowContents(Rect r) { base.DoWindowContents(r); if (pawnListUpdateNext < Find.TickManager.TicksGame) isDirty = true; if (isDirty) { UpdatePawnList(); } Rect position = new Rect(0f, 0f, r.width, 110f); GUI.BeginGroup(position); float x = 0f; Text.Font = GameFont.Small; //pawn/prisoner list switch Rect sourceButton = new Rect(x, 0f, 180f, PawnRowHeight); if (Widgets.TextButton(sourceButton, ("koisama.pawntype." + chosenPawnType.ToString()).Translate())) { PawnSelectOptionsMaker(); } x += 190; //stats btn Rect addColumnButton = new Rect(x, 0f, 180f, PawnRowHeight); if (Widgets.TextButton(addColumnButton, "koisama.Numbers.AddColumnLabel".Translate())) { StatsOptionsMaker(); } x += 190; //skills btn if (new[] { pawnType.Colonists, pawnType.Prisoners, pawnType.Enemies }.Contains(chosenPawnType)) { Rect skillColumnButton = new Rect(x, 0f, 180f, PawnRowHeight); if (Widgets.TextButton(skillColumnButton, "koisama.Numbers.AddSkillColumnLabel".Translate())) { SkillsOptionsMaker(); } x += 190; } //needs btn Rect needsColumnButton = new Rect(x, 0f, 180f, PawnRowHeight); if (Widgets.TextButton(needsColumnButton, "koisama.Numbers.AddNeedsColumnLabel".Translate())) { NeedsOptionsMaker(); } x += 190; Rect otherColumnBtn = new Rect(x, 0f, 180f, PawnRowHeight); if (Widgets.TextButton(otherColumnBtn, "koisama.Numbers.AddOtherColumnLabel".Translate())) { OtherOptionsMaker(); } x += 190; x = 0; //names Rect nameLabel = new Rect(x, 75f, NameColumnWidth, PawnRowHeight); Text.Anchor = TextAnchor.LowerCenter; Widgets.Label(nameLabel, "koisama.Numbers.Name".Translate()); if (Widgets.InvisibleButton(nameLabel)) { if (chosenOrderBy == orderBy.Name) { pawnListDescending = !pawnListDescending; } else { chosenOrderBy = orderBy.Name; pawnListDescending = false; } isDirty = true; } TooltipHandler.TipRegion(nameLabel, "koisama.Numbers.SortByTooltip".Translate("koisama.Numbers.Name".Translate())); Widgets.DrawHighlightIfMouseover(nameLabel); x += NameColumnWidth; //header //TODO: better interface - auto width calculation bool offset = true; kListDesiredWidth = 175f; for (int i=0;i<kList.Count; i++) { float colWidth = kList[i].minWidthDesired; kListDesiredWidth += colWidth; Rect defLabel = new Rect(x-35, 20f + (offset ? 10f : 50f), colWidth+70 , 40f); Widgets.DrawLine(new Vector2(x + colWidth/2 , 52f + (offset ? 15f : 55f)), new Vector2(x + colWidth/2 , 110f), Color.gray, 1); Widgets.Label(defLabel, kList[i].label); StringBuilder labelSB = new StringBuilder(); labelSB.AppendLine("koisama.Numbers.SortByTooltip".Translate(kList[i].label)); labelSB.AppendLine("koisama.Numbers.RemoveTooltip".Translate()); TooltipHandler.TipRegion(defLabel, labelSB.ToString()); Widgets.DrawHighlightIfMouseover(defLabel); if (Widgets.InvisibleButton(defLabel)) { if (Event.current.button == 1) { kList.RemoveAt(i); } else { if (chosenOrderBy == orderBy.Column && kList[i].Equals(sortObject)) { pawnListDescending = !pawnListDescending; } else { sortObject = kList[i]; chosenOrderBy = orderBy.Column; pawnListDescending = false; } } isDirty = true; } offset = !offset; x += colWidth; } GUI.EndGroup(); //content Rect content = new Rect(0f, position.yMax, r.width, r.height - position.yMax); GUI.BeginGroup(content); base.DrawRows(new Rect(0f, 0f, content.width, content.height)); GUI.EndGroup(); }
//other hardcoded options public void OtherOptionsMaker() { List<FloatMenuOption> list = new List<FloatMenuOption>(); if (new[] { pawnType.Colonists, pawnType.Prisoners, pawnType.Enemies }.Contains(chosenPawnType)) { Action action = delegate { KListObject kl = new KListObject(KListObject.objectType.Gear, "Equipment".Translate(), null); if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption("Equipment".Translate(), action, MenuOptionPriority.Medium, null, null)); } if (chosenPawnType == pawnType.Prisoners) { Action action = delegate { KListObject kl = new KListObject(KListObject.objectType.ControlPrisonerGetsFood, "GetsFood".Translate(), null); if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption("GetsFood".Translate(), action, MenuOptionPriority.Medium, null, null)); Action action2 = delegate { KListObject kl = new KListObject(KListObject.objectType.ControlPrisonerInteraction, "koisama.Interaction".Translate(), null); if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption("koisama.Interaction".Translate(), action2, MenuOptionPriority.Medium, null, null)); } if (new[] { pawnType.Colonists, pawnType.Prisoners }.Contains(chosenPawnType)) { Action action = delegate { KListObject kl = new KListObject(KListObject.objectType.ControlMedicalCare, "koisama.MedicalCare".Translate(), null); if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption("koisama.MedicalCare".Translate(), action, MenuOptionPriority.Medium, null, null)); } Find.WindowStack.Add(new FloatMenu(list, false)); }
public void NeedsOptionsMaker() { List<FloatMenuOption> list = new List<FloatMenuOption>(); foreach (NeedDef need in pNeedDef) { Action action = delegate { KListObject kl = new KListObject(KListObject.objectType.Need, need.LabelCap, need); if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption(need.LabelCap, action, MenuOptionPriority.Medium, null, null)); } Find.WindowStack.Add(new FloatMenu(list, false)); }
public void SkillsOptionsMaker() { List<FloatMenuOption> list = new List<FloatMenuOption>(); foreach (SkillDef skill in DefDatabase<SkillDef>.AllDefsListForReading) { Action action = delegate { KListObject kl = new KListObject(KListObject.objectType.Skill, skill.LabelCap, skill); if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption(skill.LabelCap, action, MenuOptionPriority.Medium, null, null)); } Find.WindowStack.Add(new FloatMenu(list, false)); }
//other hardcoded options public void OtherOptionsMaker() { List<FloatMenuOption> list = new List<FloatMenuOption>(); //equipment bearers if (new[] { pawnType.Colonists, pawnType.Prisoners, pawnType.Enemies, pawnType.Corpses }.Contains(chosenPawnType)) { Action action = delegate { KListObject kl = new KListObject(KListObject.objectType.Gear, "koisama.Equipment".Translate(), null); if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption("koisama.Equipment".Translate(), action, MenuOptionPriority.Medium, null, null)); } //all living things if (new[] { pawnType.Colonists, pawnType.Prisoners, pawnType.Enemies, pawnType.Animals, pawnType.WildAnimals, pawnType.Guests }.Contains(chosenPawnType)) { Action action = delegate { KListObject kl = new KListObject(KListObject.objectType.Age, "koisama.Age".Translate(), null); if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption("koisama.Age".Translate(), action, MenuOptionPriority.Medium, null, null)); } if (chosenPawnType == pawnType.Prisoners) { Action action = delegate { KListObject kl = new KListObject(KListObject.objectType.ControlPrisonerGetsFood, "GetsFood".Translate(), null); if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption("GetsFood".Translate(), action, MenuOptionPriority.Medium, null, null)); Action action2 = delegate { KListObject kl = new KListObject(KListObject.objectType.ControlPrisonerInteraction, "koisama.Interaction".Translate(), null); if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption("koisama.Interaction".Translate(), action2, MenuOptionPriority.Medium, null, null)); } if (chosenPawnType == pawnType.Animals) { Action action = delegate { KListObject kl = new KListObject(KListObject.objectType.AnimalMilkFullness, "MilkFullness".Translate(), null); if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption("MilkFullness".Translate(), action, MenuOptionPriority.Medium, null, null)); Action action2 = delegate { KListObject kl = new KListObject(KListObject.objectType.AnimalWoolGrowth, "WoolGrowth".Translate(), null); if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption("WoolGrowth".Translate(), action2, MenuOptionPriority.Medium, null, null)); } //healable if (new[] { pawnType.Colonists, pawnType.Prisoners, pawnType.Animals }.Contains(chosenPawnType)) { Action action = delegate { KListObject kl = new KListObject(KListObject.objectType.ControlMedicalCare, "koisama.MedicalCare".Translate(), null); if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption("koisama.MedicalCare".Translate(), action, MenuOptionPriority.Medium, null, null)); } if (! new[] { pawnType.Corpses, pawnType.AnimalCorpses }.Contains(chosenPawnType)) { Action action = delegate { KListObject kl = new KListObject(KListObject.objectType.CurrentJob, "koisama.CurrentJob".Translate(), null); if (fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption("koisama.CurrentJob".Translate(), action, MenuOptionPriority.Medium, null, null)); } Find.WindowStack.Add(new FloatMenu(list)); }
public void StatsOptionsMaker() { List<FloatMenuOption> list = new List<FloatMenuOption>(); foreach(StatDef stat in pStatDef) { Action action = delegate { KListObject kl = new KListObject(KListObject.objectType.Stat, stat.LabelCap, stat); if(fits(kl.minWidthDesired)) kList.Add(kl); }; list.Add(new FloatMenuOption(stat.LabelCap, action, MenuOptionPriority.Medium, null, null)); } Find.WindowStack.Add(new FloatMenu(list)); }