public Dialog_ResetGroup(TieredFloatMenu parentWindow, ColonistGroup colonistGroup, Rect originRect, Texture2D backgroundTexture) : base(parentWindow, colonistGroup, originRect, backgroundTexture) { this.originRect = new Rect(originRect.x + originRect.width, originRect.y, originRect.width, originRect.height); this.colonistGroup = colonistGroup; this.closeOnClickedOutside = true; }
public WorkMenu(TieredFloatMenu parentWindow, ColonistGroup colonistGroup, Rect originRect, Texture2D backgroundTexture) : base(parentWindow, colonistGroup, originRect, backgroundTexture) { this.options = new List <TieredFloatMenuOption>(); var takeFive = new TieredFloatMenuOption(Strings.TakeFive, null, Textures.LookBusyButton, Textures.LookBusyButtonHover, null, TextAnchor.MiddleCenter, MenuOptionPriority.High, 0f, Textures.LookBusyButton.width - 2f, Strings.TakeFiveTooltip); takeFive.action = delegate { TacticDefOf.TG_ClickSFX.PlayOneShotOnCamera(); WorkSearchUtility.TakeABreak(BreakType.None, this.colonistGroup.ActivePawns); }; options.Add(takeFive); breakIconStates[Textures.ChowHallButton] = BreakType.ChowHall; breakIconStates[Textures.LightsOutButton] = BreakType.LightsOut; tooltips[Textures.ChowHallButton] = Strings.ChowHallToolTip; tooltips[Textures.LightsOutButton] = Strings.SleepTooltip; for (int i = 0; i < options.Count; i++) { options[i].SetSizeMode(SizeMode); } }
public void CopySettingsFrom(ColonistGroup colonistGroup) { if (colonistGroup.activeWorkTypes?.Count > 0) { this.activeWorkTypes = colonistGroup.activeWorkTypes; } if (colonistGroup.groupWorkPriorities?.Count > 0) { this.groupWorkPriorities = colonistGroup.groupWorkPriorities; } if (colonistGroup.groupAreaEnabled && colonistGroup.groupArea != null) { this.groupArea = colonistGroup.groupArea; } if (colonistGroup.groupDrugPolicyEnabled && colonistGroup.groupDrugPolicy != null) { this.groupDrugPolicy = colonistGroup.groupDrugPolicy; } if (colonistGroup.groupFoodRestrictionEnabled && colonistGroup.groupFoodRestriction != null) { this.groupFoodRestriction = colonistGroup.groupFoodRestriction; } if (colonistGroup.groupOutfitEnabled && colonistGroup.groupOutfit != null) { this.groupOutfit = colonistGroup.groupOutfit; } }
public static void DoAssignDrugPolicyButtons(Rect rect, ColonistGroup group) { int num = Mathf.FloorToInt((rect.width - 4f) * 0.714285731f); int num2 = Mathf.FloorToInt((rect.width - 4f) * 0.2857143f); float x = rect.x; Rect rect2 = new Rect(x, rect.y + 2f, num, rect.height - 4f); string text = group.pawns.First().drugs.CurrentPolicy.label; Widgets.Dropdown(rect2, group, (ColonistGroup g) => g.pawns.First().drugs.CurrentPolicy, Button_GenerateMenu, text.Truncate(rect2.width), null, group.pawns.First().drugs.CurrentPolicy.label, null, delegate { PlayerKnowledgeDatabase.KnowledgeDemonstrated(ConceptDefOf.DrugPolicies, KnowledgeAmount.Total); }, paintable: true); x += (float)num; x += 4f; Rect rect3 = new Rect(x, rect.y + 2f, num2, rect.height - 4f); if (Widgets.ButtonText(rect3, "AssignTabEdit".Translate())) { var window = new Dialog_ManageDrugPolicies(group.pawns.First().drugs.CurrentPolicy); Find.WindowStack.Add(window); } UIHighlighter.HighlightOpportunity(rect2, "ButtonAssignDrugs"); UIHighlighter.HighlightOpportunity(rect3, "ButtonAssignDrugs"); x += (float)num2; }
public SortMenu(TieredFloatMenu parentWindow, ColonistGroup colonistGroup, Rect originRect, Texture2D backgroundTexture) : base(parentWindow, colonistGroup, originRect, backgroundTexture) { this.options = new List <TieredFloatMenuOption>(); var noneOption = new TieredFloatMenuOption("None".Translate(), null, Textures.AOMButton, Textures.AOMButtonHover, Textures.AOMButtonPress, TextAnchor.MiddleCenter, MenuOptionPriority.High, 0f); noneOption.action = delegate { TacticDefOf.TG_SortOptionsSFX.PlayOneShotOnCamera(); this.colonistGroup.activeSortBy = SortBy.None; }; noneOption.bottomIndent = Textures.MenuButton.height + 4; options.Add(noneOption); var nameOption = new TieredFloatMenuOption("TG.Name".Translate(), null, Textures.AOMButton, Textures.AOMButtonHover, Textures.AOMButtonPress, TextAnchor.MiddleCenter, MenuOptionPriority.High, 0f); nameOption.action = delegate { TacticDefOf.TG_SortOptionsSFX.PlayOneShotOnCamera(); this.colonistGroup.activeSortBy = SortBy.Name; this.colonistGroup.InitSort(this.colonistGroup.activeSortBy); }; nameOption.bottomIndent = Textures.MenuButton.height + 4; options.Add(nameOption); foreach (var skillDef in DefDatabase <SkillDef> .AllDefs) { AddSkillSortButton(skillDef); } for (int i = 0; i < options.Count; i++) { options[i].SetSizeMode(SizeMode); } }
public static void SetBattleStations(this ColonistGroup colonistGroup) { if (colonistGroup.formations is null) { colonistGroup.formations = new List <Formation>(4); } var formation = colonistGroup.formations.FirstOrDefault(x => x == colonistGroup.activeFormation); if (formation != null) { if (formation.formations is null) { formation.formations = new Dictionary <Pawn, IntVec3>(); } foreach (var pawn in colonistGroup.ActivePawns) { if (Find.Selector.SelectedPawns.Contains(pawn)) { formation.formations[pawn] = pawn.Position; switch (colonistGroup.formations.IndexOf(formation)) { case 0: formation.colorPrefix = "blue"; break; case 1: formation.colorPrefix = "red"; break; case 2: formation.colorPrefix = "green"; break; case 3: formation.colorPrefix = "yellow"; break; } } } } }
public static void DoAllowedAreaSelectors(Rect rect, ColonistGroup group) { List <Area> allAreas = group.Map.areaManager.AllAreas; int num = 1; for (int i = 0; i < allAreas.Count; i++) { if (allAreas[i].AssignableAsAllowed()) { num++; } } float num2 = rect.width / (float)num; Text.WordWrap = false; Text.Font = GameFont.Tiny; DoAreaSelector(new Rect(rect.x + 0f, rect.y, num2, rect.height), group, null); int num3 = 1; for (int j = 0; j < allAreas.Count; j++) { if (allAreas[j].AssignableAsAllowed()) { float num4 = (float)num3 * num2; DoAreaSelector(new Rect(rect.x + num4, rect.y, num2, rect.height), group, allAreas[j]); num3++; } } Text.WordWrap = true; Text.Font = GameFont.Small; }
public static void SelectAll(this ColonistGroup colonistGroup) { Find.Selector.ClearSelection(); foreach (var pawn in colonistGroup.ActivePawns) { Find.Selector.Select(pawn); } }
public IconMenu(TieredFloatMenu parentWindow, ColonistGroup colonistGroup, Rect originRect, Texture2D backgroundTexture) : base(parentWindow, colonistGroup, originRect, backgroundTexture) { groupBannerFolder = colonistGroup.groupBannerFolder; groupIconFolder = colonistGroup.groupIconFolder; bannerModeEnabled = colonistGroup.bannerModeEnabled; ReInitIcons(this.colonistGroup.defaultBannerFolder); }
public static int GetAllCommonWorkPriority(ColonistGroup group, WorkTypeDef wType) { if (group?.groupWorkPriorities != null && group.groupWorkPriorities.TryGetValue(wType, out int priority)) { return(priority); } return(0); }
public static bool IsCommonEnabledWork(ColonistGroup group, WorkTypeDef wType) { if (group?.groupWorkPriorities != null && group.groupWorkPriorities.TryGetValue(wType, out int priority)) { return(priority != 0); } return(false); }
public Dialog_RenameColonistGroup(TieredFloatMenu parentWindow, ColonistGroup colonistGroup, Rect originRect, Texture2D backgroundTexture, TieredFloatMenuOption option, string confirmationText) : base(parentWindow, colonistGroup, originRect, backgroundTexture, confirmationText) { this.originRect = new Rect(originRect.x + originRect.width, originRect.y, originRect.width, originRect.height); this.colonistGroup = colonistGroup; curName = colonistGroup.groupName; this.option = option; }
public ManagementMenu(TieredFloatMenu parentWindow, ColonistGroup colonistGroup, Rect originRect, Texture2D backgroundTexture) : base(parentWindow, colonistGroup, originRect, backgroundTexture) { this.options = new List <TieredFloatMenuOption>(); for (int i = 0; i < options.Count; i++) { options[i].SetSizeMode(SizeMode); } }
public static bool TryGetGroupWorkPriority(ColonistGroup group, WorkTypeDef wType, out int priority) { if (group?.groupWorkPriorities != null && group.groupWorkPriorities.TryGetValue(wType, out priority)) { return(true); } priority = 4; return(false); }
public static void SwitchToAttackMode(this ColonistGroup colonistGroup) { foreach (var pawn in colonistGroup.ActivePawns) { if (pawn.playerSettings != null) { pawn.playerSettings.hostilityResponse = HostilityResponseMode.Attack; } } }
public static void Draft(this ColonistGroup colonistGroup) { foreach (var pawn in colonistGroup.ActivePawns) { if (!pawn.Downed && !pawn.InMentalState && pawn.drafter != null && pawn.IsFreeColonist && !pawn.IsPrisoner) { pawn.drafter.Drafted = true; } } }
public static void RemoveReferencesFor(ColonistGroup group) { foreach (var cachedData in pawnsWithGroups) { if (cachedData.Value.Contains(group)) { cachedData.Value.Remove(group); } } }
public static void Undraft(this ColonistGroup colonistGroup) { foreach (var pawn in colonistGroup.ActivePawns) { if (pawn.drafter != null) { pawn.drafter.Drafted = false; } } }
public Dialog_Rename(TieredFloatMenu parentWindow, ColonistGroup colonistGroup, Rect originRect, Texture2D backgroundTexture, string confirmationText) : base(parentWindow, colonistGroup, originRect, backgroundTexture) { this.parentWindow = parentWindow; this.confirmationText = confirmationText; forcePause = true; doCloseX = true; absorbInputAroundWindow = true; closeOnAccept = false; closeOnClickedOutside = true; }
public PrisonerMenu(TieredFloatMenu parentWindow, ColonistGroup colonistGroup, Rect originRect, Texture2D backgroundTexture, string menuTitle) : base(parentWindow, colonistGroup, originRect, backgroundTexture, menuTitle) { prisonerNodes = new Dictionary <PrisonerInteractionModeDef, TreeNode_Pawns>(); foreach (PrisonerInteractionModeDef item in DefDatabase <PrisonerInteractionModeDef> .AllDefs.OrderBy((PrisonerInteractionModeDef pim) => pim.listOrder)) { prisonerNodes[item] = new TreeNode_Pawns(null, item.LabelCap); prisonerNodes[item].SetOpen(32, true); } }
public static MedicalCareCategory GetMedicalCare(ColonistGroup group) { foreach (var pawn in group.pawns) { if (pawn.playerSettings?.medCare != null) { return(pawn.playerSettings.medCare); } } return(MedicalCareCategory.NormalOrWorse); }
private static void DrawWorkBoxBackground(Rect rect, WorkTypeDef workDef, ColonistGroup group) { Texture2D image = (group.groupWorkPriorities is null || !group.groupWorkPriorities.ContainsKey(workDef)) ? WorkBoxBGTex_Mid : Textures.GreenBox; Texture2D image2 = WorkBoxBGTex_Excellent; float a = (7 - 14f) / 6f; GUI.DrawTexture(rect, image); GUI.color = new Color(GUI.color.r, GUI.color.g, GUI.color.b, a); GUI.DrawTexture(rect, image2); GUI.color = Color.white; }
public static void RemoveOldLord(this ColonistGroup colonistGroup) { foreach (var pawn in colonistGroup.ActivePawns) { var lord = pawn.GetLord(); if (lord != null) { lord.ownedPawns.Remove(pawn); pawn.Map.lordManager.RemoveLord(lord); } } }
public PawnInfoMenu(Pawn pawn, TieredFloatMenu parentWindow, ColonistGroup colonistGroup, Rect originRect, Texture2D backgroundTexture) : base(parentWindow, colonistGroup, originRect, backgroundTexture) { this.options = new List <TieredFloatMenuOption>(); this.pawn = pawn; this.parentWindow.layer = WindowLayer.Dialog; this.layer = WindowLayer.GameUI; for (int i = 0; i < options.Count; i++) { options[i].SetSizeMode(SizeMode); } TacticSkillUI.Reset(); }
public OrderMenu(TieredFloatMenu parentWindow, ColonistGroup colonistGroup, Rect originRect, Texture2D backgroundTexture) : base(parentWindow, colonistGroup, originRect, backgroundTexture) { this.options = new List <TieredFloatMenuOption>(); AddAttackButton(); AddRegroupButton(); AddBattleStationsButton(); AddMedicalButton(); for (int i = 0; i < options.Count; i++) { options[i].SetSizeMode(SizeMode); } }
public static void RegisterGroupFor(Pawn pawn, ColonistGroup group) { if (pawnsWithGroups.ContainsKey(pawn)) { pawnsWithGroups[pawn].Add(group); } else { pawnsWithGroups[pawn] = new HashSet <ColonistGroup> { group }; } }
public AttackMenu(TieredFloatMenu parentWindow, ColonistGroup colonistGroup, Rect originRect, Texture2D backgroundTexture) : base(parentWindow, colonistGroup, originRect, backgroundTexture) { this.options = new List <TieredFloatMenuOption>(); AddFireAtWillButton(); AddStrongestButton(); AddWeakestButton(); AddPursueFleeingButton(); for (int i = 0; i < options.Count; i++) { options[i].SetSizeMode(SizeMode); } }
private static void DoAreaSelector(Rect rect, ColonistGroup group, Area area) { MouseoverSounds.DoRegion(rect); rect = rect.ContractedBy(1f); GUI.DrawTexture(rect, (area != null) ? area.ColorTexture : BaseContent.GreyTex); Text.Anchor = TextAnchor.MiddleLeft; string text = AreaUtility.AreaAllowedLabel_Area(area); Rect rect2 = rect; rect2.xMin += 3f; rect2.yMin += 2f; Widgets.Label(rect2, text); if (group.ActivePawns.First().playerSettings.AreaRestriction == area) { Widgets.DrawBox(rect, 2); } if (Event.current.rawType == EventType.MouseUp && Event.current.button == 0) { dragging = false; } if (!Input.GetMouseButton(0) && Event.current.type != 0) { dragging = false; } if (Mouse.IsOver(rect)) { area?.MarkForDraw(); if (Event.current.type == EventType.MouseDown && Event.current.button == 0) { dragging = true; } if (dragging) { foreach (var p in group.ActivePawns) { if (p.playerSettings.AreaRestriction != area) { p.playerSettings.AreaRestriction = area; SoundDefOf.Designate_DragStandard_Changed.PlayOneShotOnCamera(); } } if (group.groupAreaEnabled) { group.groupArea = area; } } } Text.Anchor = TextAnchor.UpperLeft; TooltipHandler.TipRegion(rect, text); }
public TieredFloatMenu(TieredFloatMenu parentWindow, ColonistGroup colonistGroup, Rect originRect, Texture2D backgroundTexture) { this.soundAmbient = null; this.soundAppear = null; this.soundClose = null; this.parentWindow = parentWindow; this.colonistGroup = colonistGroup; this.originRect = originRect; this.backgroundTexture = backgroundTexture; this.layer = WindowLayer.GameUI; closeOnClickedOutside = false; doWindowBackground = false; drawShadow = false; preventCameraMotion = false; }
public static void SearchForJob(this ColonistGroup colonistGroup) { foreach (var pawn in colonistGroup.ActivePawns) { try { var job = pawn.thinker.MainThinkNodeRoot.TryIssueJobPackage(pawn, default(JobIssueParams)); if (job.Job != null) { pawn.jobs.TryTakeOrderedJob(job.Job); } } catch { }; } }