Exemple #1
0
 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;
 }
Exemple #2
0
        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;
        }
Exemple #5
0
        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);
            }
        }
Exemple #6
0
        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;
        }
Exemple #8
0
 public static void SelectAll(this ColonistGroup colonistGroup)
 {
     Find.Selector.ClearSelection();
     foreach (var pawn in colonistGroup.ActivePawns)
     {
         Find.Selector.Select(pawn);
     }
 }
Exemple #9
0
 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);
 }
Exemple #12
0
        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;
        }
Exemple #13
0
 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);
 }
Exemple #15
0
 public static void SwitchToAttackMode(this ColonistGroup colonistGroup)
 {
     foreach (var pawn in colonistGroup.ActivePawns)
     {
         if (pawn.playerSettings != null)
         {
             pawn.playerSettings.hostilityResponse = HostilityResponseMode.Attack;
         }
     }
 }
Exemple #16
0
 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;
         }
     }
 }
Exemple #17
0
 public static void RemoveReferencesFor(ColonistGroup group)
 {
     foreach (var cachedData in pawnsWithGroups)
     {
         if (cachedData.Value.Contains(group))
         {
             cachedData.Value.Remove(group);
         }
     }
 }
Exemple #18
0
 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;
 }
Exemple #20
0
        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);
            }
        }
Exemple #21
0
 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;
        }
Exemple #23
0
 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();
 }
Exemple #25
0
 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);
     }
 }
Exemple #26
0
 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);
        }
Exemple #29
0
 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;
 }
Exemple #30
0
 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 { };
     }
 }