public override void DoWindowContents(Rect inRect) { //grab before anchor/font GameFont fontBefore = Text.Font; TextAnchor anchorBefore = Text.Anchor; //Settlement Tax Collection Header Text.Anchor = TextAnchor.MiddleCenter; Text.Font = GameFont.Small; Widgets.DrawMenuSection(menuSectionHeader); Widgets.DrawBox(menuSectionHeader); //Icon button if (Widgets.ButtonImage(headerFactionIcon, faction.factionIcon)) { } Text.Anchor = TextAnchor.MiddleLeft; Text.Font = GameFont.Medium; Widgets.Label(headerFactionName, faction.name); Text.Font = GameFont.Small; Widgets.Label(headerFactionTitle, faction.title); //Settings button if (Widgets.ButtonImage(headerSettings, TexLoad.iconCustomize)) { Faction fact = FactionColonies.getPlayerColonyFaction(); if (fact != null) { Find.WindowStack.Add(new FactionCustomizeWindowFc(faction)); } } //Progress bar Widgets.FillableBar(progressBarLevelUp, faction.factionXPCurrent / faction.factionXPGoal, foreground, background, true); Widgets.DrawShadowAround(progressBarLevelUp); Text.Font = GameFont.Tiny; Text.Anchor = TextAnchor.MiddleCenter; Widgets.Label(progressBarLevelUp, Math.Round(faction.factionXPCurrent) + "/" + faction.factionXPGoal); Text.Anchor = TextAnchor.MiddleLeft; Widgets.DrawBox(progressBarLevelUp); Text.Font = GameFont.Small; Widgets.Label(factionLevel, "FCLevel".Translate(faction.factionLevel)); //Policies if (faction.policies.Count() == 2) { Widgets.ButtonImage(policy_1, faction.policies[0].def.IconLight); if (policy_1.Contains(Event.current.mousePosition)) { TooltipHandler.TipRegion(policy_1, returnPolicyText(faction.policies[0].def)); } //Widgets.Label(policy_2, new GUIContent("test", "test test test")); Widgets.ButtonImage(policy_2, faction.policies[1].def.IconLight); if (policy_2.Contains(Event.current.mousePosition)) { TooltipHandler.TipRegion(policy_2, returnPolicyText(faction.policies[1].def)); } } else { Widgets.Label(new Rect(policy_1.x, policy_1.y, 200, 50), "FCSelectYourTraits".Translate()); } List <FloatMenuOption> list = new List <FloatMenuOption>(); List <FCPolicyDef> available = availableTraitsList(); //Trait) //TraitSlot if (Widgets.ButtonTextSubtle(trait_1, returnTraitAvailibility(1, faction.factionTraits[0]))) //CHANGE THIS { if (canChangeTrait(1, faction.factionTraits[0])) { foreach (FCPolicyDef trait in available) { list.Add(new FloatMenuOption(trait.label, delegate { List <FloatMenuOption> confirm = new List <FloatMenuOption>(); confirm.Add(new FloatMenuOption("FCConfirmTrait".Translate(trait.label), delegate { faction.factionTraits[0] = new FCPolicy(trait); })); Find.WindowStack.Add(new FloatMenu(confirm)); }, mouseoverGuiAction: delegate { TooltipHandler.TipRegion(new Rect(Event.current.mousePosition, new Vector2(100, 200)), returnPolicyText(trait)); })); } Find.WindowStack.Add(new FloatMenu(list)); } } if (Mouse.IsOver(trait_1) && faction.factionTraits[0].def != FCPolicyDefOf.empty) { TooltipHandler.TipRegion(new Rect(Event.current.mousePosition, new Vector2(100, 200)), returnPolicyText(faction.factionTraits[0].def)); } //End Trait Slot //TraitSlot if (Widgets.ButtonTextSubtle(trait_2, returnTraitAvailibility(2, faction.factionTraits[1]))) //CHANGE THIS { if (canChangeTrait(2, faction.factionTraits[1])) { foreach (FCPolicyDef trait in available) { list.Add(new FloatMenuOption(trait.label, delegate { List <FloatMenuOption> confirm = new List <FloatMenuOption>(); confirm.Add(new FloatMenuOption("FCConfirmTrait".Translate(trait.label), delegate { faction.factionTraits[1] = new FCPolicy(trait); })); Find.WindowStack.Add(new FloatMenu(confirm)); }, mouseoverGuiAction: delegate { TooltipHandler.TipRegion(new Rect(Event.current.mousePosition, new Vector2(200, 200)), returnPolicyText(trait)); })); } Find.WindowStack.Add(new FloatMenu(list)); } } if (Mouse.IsOver(trait_2) && faction.factionTraits[1].def != FCPolicyDefOf.empty) { TooltipHandler.TipRegion(new Rect(Event.current.mousePosition, new Vector2(200, 200)), returnPolicyText(faction.factionTraits[1].def)); } //End Trait Slot //TraitSlot if (Widgets.ButtonTextSubtle(trait_3, returnTraitAvailibility(3, faction.factionTraits[2]))) //CHANGE THIS { if (canChangeTrait(3, faction.factionTraits[2])) { foreach (FCPolicyDef trait in available) { list.Add(new FloatMenuOption(trait.label, delegate { List <FloatMenuOption> confirm = new List <FloatMenuOption>(); confirm.Add(new FloatMenuOption("FCConfirmTrait".Translate(trait.label), delegate { faction.factionTraits[2] = new FCPolicy(trait); })); Find.WindowStack.Add(new FloatMenu(confirm)); }, mouseoverGuiAction: delegate { TooltipHandler.TipRegion(new Rect(Event.current.mousePosition, new Vector2(300, 200)), returnPolicyText(trait)); })); } Find.WindowStack.Add(new FloatMenu(list)); } } if (Mouse.IsOver(trait_3) && faction.factionTraits[2].def != FCPolicyDefOf.empty) { TooltipHandler.TipRegion(new Rect(Event.current.mousePosition, new Vector2(300, 200)), returnPolicyText(faction.factionTraits[2].def)); } //End Trait Slot //TraitSlot if (Widgets.ButtonTextSubtle(trait_4, returnTraitAvailibility(4, faction.factionTraits[3]))) //CHANGE THIS { if (canChangeTrait(4, faction.factionTraits[3])) { foreach (FCPolicyDef trait in available) { list.Add(new FloatMenuOption(trait.label, delegate { List <FloatMenuOption> confirm = new List <FloatMenuOption>(); confirm.Add(new FloatMenuOption("FCConfirmTrait".Translate(trait.label), delegate { faction.factionTraits[3] = new FCPolicy(trait); })); Find.WindowStack.Add(new FloatMenu(confirm)); }, mouseoverGuiAction: delegate { TooltipHandler.TipRegion(new Rect(Event.current.mousePosition, new Vector2(400, 200)), returnPolicyText(trait)); })); } Find.WindowStack.Add(new FloatMenu(list)); } } if (Mouse.IsOver(trait_4) && faction.factionTraits[3].def != FCPolicyDefOf.empty) { TooltipHandler.TipRegion(new Rect(Event.current.mousePosition, new Vector2(400, 200)), returnPolicyText(faction.factionTraits[3].def)); } //End Trait Slot //TraitSlot if (Widgets.ButtonTextSubtle(trait_5, returnTraitAvailibility(5, faction.factionTraits[4]))) //CHANGE THIS { if (canChangeTrait(5, faction.factionTraits[4])) { foreach (FCPolicyDef trait in available) { list.Add(new FloatMenuOption(trait.label, delegate { List <FloatMenuOption> confirm = new List <FloatMenuOption>(); confirm.Add(new FloatMenuOption("FCConfirmTrait".Translate(trait.label), delegate { faction.factionTraits[4] = new FCPolicy(trait); })); Find.WindowStack.Add(new FloatMenu(confirm)); }, mouseoverGuiAction: delegate { TooltipHandler.TipRegion(new Rect(Event.current.mousePosition, new Vector2(500, 200)), returnPolicyText(trait)); })); } Find.WindowStack.Add(new FloatMenu(list)); } } if (Mouse.IsOver(trait_5) && faction.factionTraits[4].def != FCPolicyDefOf.empty) { TooltipHandler.TipRegion(new Rect(Event.current.mousePosition, new Vector2(500, 200)), returnPolicyText(faction.factionTraits[4].def)); } //End Trait Slot FactionFC fc = Find.World.GetComponent <FactionFC>(); Widgets.Label(roadBuilding, "FCBuildRoads".Translate()); Widgets.Checkbox(roadBuilding.x + roadBuilding.width + 5, roadBuilding.y, ref fc.roadBuilder.roadBuildingEnabled); //SettlementBox Widgets.DrawMenuSection(settlementsBox); Text.Font = GameFont.Tiny; Text.Anchor = TextAnchor.MiddleCenter; GUI.BeginGroup(settlementsBoxLabels); Widgets.DrawMenuSection(new Rect(0, 0, settlementsBox.width, 20)); Widgets.DrawLightHighlight(new Rect(0, 0, settlementsBox.width, 20)); Widgets.Label(settlement_1, "Name"); if (Widgets.ButtonInvisible(settlement_1)) { faction.settlements.Sort(FactionColonies.CompareSettlementName); } Widgets.Label(settlement_2, "Level"); if (Widgets.ButtonInvisible(settlement_2)) { faction.settlements.Sort(FactionColonies.CompareSettlementLevel); } Widgets.Label(settlement_3, "Mil Level"); if (Widgets.ButtonInvisible(settlement_3)) { faction.settlements.Sort(FactionColonies.CompareSettlementMilitaryLevel); } Widgets.Label(settlement_4, "Profit"); if (Widgets.ButtonInvisible(settlement_4)) { faction.settlements.Sort(FactionColonies.CompareSettlementProfit); } Widgets.Label(settlement_5, "Free Workers"); if (Widgets.ButtonInvisible(settlement_5)) { faction.settlements.Sort(FactionColonies.CompareSettlementFreeWorkers); } Widgets.Label(settlement_6, "Happiness"); if (Widgets.ButtonInvisible(settlement_6)) { faction.settlements.Sort(FactionColonies.CompareSettlementHappiness); } Widgets.Label(settlement_7, "Loyalty"); if (Widgets.ButtonInvisible(settlement_7)) { faction.settlements.Sort(FactionColonies.CompareSettlementLoyalty); } Widgets.Label(settlement_8, "Unrest"); if (Widgets.ButtonInvisible(settlement_8)) { faction.settlements.Sort(FactionColonies.CompareSettlementUnrest); } GUI.EndGroup(); GUI.BeginGroup(settlementsBox); for (int i = 0; i < faction.settlements.Count(); i++) { SettlementFC settlement = faction.settlements[i]; //settlement name if (Widgets.ButtonTextSubtle(AdjustRect(settlement_1, i), settlement.name)) { Find.WindowStack.Add(new SettlementWindowFc(settlement)); } Text.Font = GameFont.Tiny; Text.Anchor = TextAnchor.MiddleCenter; Widgets.Label(AdjustRect(settlement_2, i), settlement.settlementLevel.ToString()); Widgets.Label(AdjustRect(settlement_3, i), settlement.settlementMilitaryLevel.ToString()); Widgets.Label(AdjustRect(settlement_4, i), ((int)settlement.getTotalProfit()).ToString()); Widgets.Label(AdjustRect(settlement_5, i), (settlement.workersUltraMax - settlement.getTotalWorkers()).ToString()); Widgets.Label(AdjustRect(settlement_6, i), ((int)settlement.Happiness).ToString()); Widgets.Label(AdjustRect(settlement_7, i), ((int)settlement.Loyalty).ToString()); Widgets.Label(AdjustRect(settlement_8, i), ((int)settlement.Unrest).ToString()); } GUI.EndGroup(); //reset anchor/font Text.Font = fontBefore; Text.Anchor = anchorBefore; if (Event.current.type == EventType.ScrollWheel) { scrollWindow(Event.current.delta.y); } }