public Area_Allowed(AreaManager areaManager, AllowedAreaMode mode, string label = null)
     : base(areaManager)
 {
     base.areaManager = areaManager;
     this.mode        = mode;
     if (!label.NullOrEmpty())
     {
         this.labelInt = label;
     }
     else
     {
         int num = 1;
         while (true)
         {
             if (mode == AllowedAreaMode.Animal)
             {
                 this.labelInt = "AreaAnimalDefaultLabel".Translate(num);
             }
             else
             {
                 this.labelInt = "AreaDefaultLabel".Translate(num);
             }
             if (areaManager.GetLabeled(this.labelInt) != null)
             {
                 num++;
                 continue;
             }
             break;
         }
     }
     this.colorInt = new Color(Rand.Value, Rand.Value, Rand.Value);
     this.colorInt = Color.Lerp(this.colorInt, Color.gray, 0.5f);
 }
Beispiel #2
0
 private static void DrawAreaAllowed(WidgetRow row, Pawn pawn)
 {
     if (pawn.playerSettings != null && pawn.playerSettings.RespectsAllowedArea)
     {
         row.Gap(6f);
         bool      flag    = pawn.playerSettings != null && pawn.playerSettings.AreaRestriction != null;
         Texture2D fillTex = (!flag) ? BaseContent.GreyTex : pawn.playerSettings.AreaRestriction.ColorTexture;
         Rect      rect    = row.FillableBar(93f, 16f, 1f, AreaUtility.AreaAllowedLabel(pawn), fillTex, null);
         if (Mouse.IsOver(rect))
         {
             if (flag)
             {
                 pawn.playerSettings.AreaRestriction.MarkForDraw();
             }
             Rect rect2 = rect.ContractedBy(-1f);
             Widgets.DrawBox(rect2, 1);
         }
         if (Widgets.ButtonInvisible(rect, false))
         {
             AllowedAreaMode mode = (AllowedAreaMode)(pawn.RaceProps.Humanlike ? 1 : 2);
             AreaUtility.MakeAllowedAreaListFloatMenu(delegate(Area a)
             {
                 pawn.playerSettings.AreaRestriction = a;
             }, mode, true, true, pawn.Map);
         }
     }
 }
Beispiel #3
0
        public static void DoAllowedAreaHeaders(Rect rect, List <Pawn> pawns, AllowedAreaMode mode)
        {
            List <Area> allAreas = Find.AreaManager.AllAreas;
            int         num      = 1;

            for (int i = 0; i < allAreas.Count; i++)
            {
                if (allAreas[i].AssignableAsAllowed(mode))
                {
                    num++;
                }
            }
            float num2 = rect.width / num;

            Text.WordWrap = false;
            Text.Font     = GameFont.Tiny;
            Text.Anchor   = TextAnchor.LowerCenter;
            Rect rect2 = new Rect(rect.x, rect.y, num2, rect.height);

            Widgets.Label(rect2, "NoAreaAllowed".Translate());
            if (Widgets.InvisibleButton(rect2))
            {
                for (int i = 0; i < pawns.Count; i++)
                {
                    SoundDefOf.DesignateDragStandardChanged.PlayOneShotOnCamera();
                    pawns[i].playerSettings.AreaRestriction = null;
                }
            }
            if (Mouse.IsOver(rect2))
            {
                GUI.DrawTexture(rect2, TexUI.HighlightTex);
            }
            TooltipHandler.TipRegion(rect2, "NoAreaAllowed".Translate());
            int num3 = 1;

            foreach (Area area in allAreas)
            {
                if (area.AssignableAsAllowed(mode))
                {
                    float num4  = num3 * num2;
                    Rect  rect3 = new Rect(rect.x + num4, rect.y, num2, rect.height);
                    Widgets.Label(rect3, area.Label);
                    if (Widgets.InvisibleButton(rect3))
                    {
                        foreach (Pawn p in pawns)
                        {
                            SoundDefOf.DesignateDragStandardChanged.PlayOneShotOnCamera();
                            p.playerSettings.AreaRestriction = area;
                        }
                    }
                    TooltipHandler.TipRegion(rect3, "Fluffy.RestrictAllTo".Translate(area.Label));
                    if (Mouse.IsOver(rect3))
                    {
                        GUI.DrawTexture(rect3, TexUI.HighlightTex);
                    }
                    num3++;
                }
            }
            Text.WordWrap = true;
        }
 public static void DoAllowedAreaSelectors(Rect rect, Pawn p, AllowedAreaMode mode)
 {
     if (Find.VisibleMap != null)
     {
         List <Area> allAreas = Find.VisibleMap.areaManager.AllAreas;
         int         num      = 1;
         for (int i = 0; i < allAreas.Count; i++)
         {
             if (allAreas[i].AssignableAsAllowed(mode))
             {
                 num++;
             }
         }
         float num2 = rect.width / (float)num;
         Text.WordWrap = false;
         Text.Font     = GameFont.Tiny;
         Rect rect2 = new Rect(rect.x, rect.y, num2, rect.height);
         AreaAllowedGUI.DoAreaSelector(rect2, p, null);
         int num3 = 1;
         for (int j = 0; j < allAreas.Count; j++)
         {
             if (allAreas[j].AssignableAsAllowed(mode))
             {
                 float num4  = (float)num3 * num2;
                 Rect  rect3 = new Rect(rect.x + num4, rect.y, num2, rect.height);
                 AreaAllowedGUI.DoAreaSelector(rect3, p, allAreas[j]);
                 num3++;
             }
         }
         Text.WordWrap = true;
         Text.Font     = GameFont.Small;
     }
 }
        public static void MakeAllowedAreaListFloatMenu(Action <Area> selAction, AllowedAreaMode mode, bool addNullAreaOption, bool addManageOption, Map map)
        {
            List <FloatMenuOption> list = new List <FloatMenuOption>();

            if (addNullAreaOption)
            {
                list.Add(new FloatMenuOption("NoAreaAllowed".Translate(), delegate
                {
                    selAction(null);
                }, MenuOptionPriority.High, null, null, 0f, null, null));
            }
            foreach (Area item2 in from a in map.areaManager.AllAreas
                     where a.AssignableAsAllowed(mode)
                     select a)
            {
                Area            localArea = item2;
                FloatMenuOption item      = new FloatMenuOption(localArea.Label, delegate
                {
                    selAction(localArea);
                }, MenuOptionPriority.Default, delegate
                {
                    localArea.MarkForDraw();
                }, null, 0f, null, null);
                list.Add(item);
            }
            if (addManageOption)
            {
                list.Add(new FloatMenuOption("ManageAreas".Translate(), delegate
                {
                    Find.WindowStack.Add(new Dialog_ManageAreas(map));
                }, MenuOptionPriority.Low, null, null, 0f, null, null));
            }
            Find.WindowStack.Add(new FloatMenu(list));
        }
Beispiel #6
0
 // RimWorld.AreaAllowedGUI
 public static void DoAllowedAreaSelectors(Rect rect, ManagerJob job, AllowedAreaMode mode = AllowedAreaMode.Humanlike)
 {
     List<Area> allAreas = Find.AreaManager.AllAreas;
     int areaCount = 1;
     for (int i = 0; i < allAreas.Count; i++)
     {
         if (allAreas[i].AssignableAsAllowed(mode))
         {
             areaCount++;
         }
     }
     float widthPerArea = rect.width / (float)areaCount;
     Text.WordWrap = false;
     Text.Font = GameFont.Tiny;
     Rect nullAreaRect = new Rect(rect.x, rect.y, widthPerArea, rect.height);
     AreaAllowedGUI.DoAreaSelector(nullAreaRect, job, null);
     int areaIndex = 1;
     for (int j = 0; j < allAreas.Count; j++)
     {
         if (allAreas[j].AssignableAsAllowed(mode))
         {
             float xOffset = (float)areaIndex * widthPerArea;
             Rect areaRect = new Rect(rect.x + xOffset, rect.y, widthPerArea, rect.height);
             AreaAllowedGUI.DoAreaSelector(areaRect, job, allAreas[j]);
             areaIndex++;
         }
     }
     Text.WordWrap = true;
 }
Beispiel #7
0
        //
        // Methods
        //
        public override void DoCell(Rect rect, Pawn pawn, PawnTable table)
        {
            // Allow robots to be assigned to any area
            AllowedAreaMode mode = AllowedAreaMode.Any;

            AreaAllowedGUI.DoAllowedAreaSelectors(rect, pawn, mode);
        }
 public static Area DoAllowedAreaSelectors( Rect rect, Area areaIn,
                                            AllowedAreaMode mode = AllowedAreaMode.Humanlike, float lrMargin = 0 )
 {
     Area areaIO = areaIn;
     DoAllowedAreaSelectors( rect, ref areaIO, mode, lrMargin );
     return areaIO;
 }
Beispiel #9
0
 public override void DoCell(Rect rect, Pawn pawn, PawnTable table)
 {
     if (pawn.Faction == Faction.OfPlayer)
     {
         AllowedAreaMode mode = (AllowedAreaMode)(pawn.RaceProps.Humanlike ? 1 : 2);
         AreaAllowedGUI.DoAllowedAreaSelectors(rect, pawn, mode);
     }
 }
Beispiel #10
0
 public static void DoAllowedAreaHeaders(Rect rect, List<Pawn> pawns, AllowedAreaMode mode)
 {
     List<Area> allAreas = Find.AreaManager.AllAreas;
     int num = 1;
     for (int i = 0; i < allAreas.Count; i++)
     {
         if (allAreas[i].AssignableAsAllowed(mode))
         {
             num++;
         }
     }
     float num2 = rect.width / num;
     Text.WordWrap = false;
     Text.Font = GameFont.Tiny;
     Text.Anchor = TextAnchor.LowerCenter;
     Rect rect2 = new Rect(rect.x, rect.y, num2, rect.height);
     Widgets.Label(rect2, "NoAreaAllowed".Translate());
     if (Widgets.InvisibleButton(rect2))
     {
         for (int i = 0; i < pawns.Count; i++)
         {
             SoundDefOf.DesignateDragStandardChanged.PlayOneShotOnCamera();
             pawns[i].playerSettings.AreaRestriction = null;
         }
     }
     if (Mouse.IsOver(rect2))
     {
         GUI.DrawTexture(rect2, TexUI.HighlightTex);
     }
     TooltipHandler.TipRegion(rect2, "NoAreaAllowed".Translate());
     int num3 = 1;
     foreach (Area area in allAreas)
     {
         if (area.AssignableAsAllowed(mode))
         {
             float num4 = num3 * num2;
             Rect rect3 = new Rect(rect.x + num4, rect.y, num2, rect.height);
             Widgets.Label(rect3, area.Label);
             if (Widgets.InvisibleButton(rect3))
             {
                 foreach (Pawn p in pawns)
                 {
                     SoundDefOf.DesignateDragStandardChanged.PlayOneShotOnCamera();
                     p.playerSettings.AreaRestriction = area;
                 }
             }
             TooltipHandler.TipRegion(rect3, "Fluffy.RestrictAllTo".Translate(area.Label));
             if (Mouse.IsOver(rect3))
             {
                 GUI.DrawTexture(rect3, TexUI.HighlightTex);
             }
             num3++;
         }
     }
     Text.WordWrap = true;
 }
Beispiel #11
0
        public override void DoCell(Rect rect, Pawn pawn, PawnTable table)
        {
            if (pawn.Faction != Faction.OfPlayer)
            {
                return;
            }
            AllowedAreaMode mode = (!pawn.RaceProps.Humanlike) ? AllowedAreaMode.Animal : AllowedAreaMode.Humanlike;

            AreaAllowedGUI.DoAllowedAreaSelectors(rect, pawn, mode);
        }
Beispiel #12
0
        public static Area DoAllowedAreaSelectors(Rect rect,
                                                  Area areaIn,
                                                  Map map,
                                                  AllowedAreaMode mode = AllowedAreaMode.Humanlike,
                                                  float lrMargin       = 0)
        {
            Area areaIO = areaIn;

            DoAllowedAreaSelectors(rect, ref areaIO, map, mode, lrMargin);
            return(areaIO);
        }
 public bool TryMakeNewAllowed(AllowedAreaMode mode, out Area_Allowed area)
 {
     if (!this.CanMakeNewAllowed(mode))
     {
         area = null;
         return(false);
     }
     area = new Area_Allowed(this, mode, null);
     this.areas.Add(area);
     this.SortAreas();
     return(true);
 }
Beispiel #14
0
        public static bool TryMakeNewStableArea(this AreaManager instance, AllowedAreaMode mode, out Area_Stable area)
        {
            /*
             * if (!instance.CanMakeNewAllowed(mode))
             * {
             *  area = null;
             *  return false;
             * }
             */
            area = new Area_Stable(instance);
            List <Area> areaManager_areas = Traverse.Create(instance).Field("areas").GetValue <List <Area> >();

            areaManager_areas.Add(area);
            return(true);
        }
Beispiel #15
0
        // RimWorld.AreaAllowedGUI
        public static void DoAllowedAreaSelectors(Rect rect,
                                                  ref Area area,
                                                  Map map,
                                                  AllowedAreaMode mode = AllowedAreaMode.Humanlike,
                                                  float lrMargin       = 0)
        {
            if (lrMargin > 0)
            {
                rect.xMin  += lrMargin;
                rect.width -= lrMargin * 2;
            }

            List <Area> allAreas  = map.areaManager.AllAreas;
            var         areaCount = 1;

            for (var i = 0; i < allAreas.Count; i++)
            {
                if (allAreas[i].AssignableAsAllowed(mode))
                {
                    areaCount++;
                }
            }

            float widthPerArea = rect.width / areaCount;

            Text.WordWrap = false;
            Text.Font     = GameFont.Tiny;
            var nullAreaRect = new Rect(rect.x, rect.y, widthPerArea, rect.height);

            DoAreaSelector(nullAreaRect, ref area, null);
            var areaIndex = 1;

            for (var j = 0; j < allAreas.Count; j++)
            {
                if (allAreas[j].AssignableAsAllowed(mode))
                {
                    float xOffset  = areaIndex * widthPerArea;
                    var   areaRect = new Rect(rect.x + xOffset, rect.y, widthPerArea, rect.height);
                    DoAreaSelector(areaRect, ref area, allAreas[j]);
                    areaIndex++;
                }
            }

            Text.WordWrap = true;
            Text.Font     = GameFont.Small;
        }
        // RimWorld.AreaAllowedGUI
        public static void DoAllowedAreaSelectors( Rect rect, 
                                                   ref Area area,
                                                   Map map,
                                                   AllowedAreaMode mode = AllowedAreaMode.Humanlike, 
                                                   float lrMargin = 0 )
        {
            if ( lrMargin > 0 )
            {
                rect.xMin += lrMargin;
                rect.width -= lrMargin * 2;
            }

            List<Area> allAreas = map.areaManager.AllAreas;
            var areaCount = 1;
            for ( var i = 0; i < allAreas.Count; i++ )
            {
                if ( allAreas[i].AssignableAsAllowed( mode ) )
                {
                    areaCount++;
                }
            }
            float widthPerArea = rect.width / areaCount;
            Text.WordWrap = false;
            Text.Font = GameFont.Tiny;
            var nullAreaRect = new Rect( rect.x, rect.y, widthPerArea, rect.height );
            DoAreaSelector( nullAreaRect, ref area, null );
            var areaIndex = 1;
            for ( var j = 0; j < allAreas.Count; j++ )
            {
                if ( allAreas[j].AssignableAsAllowed( mode ) )
                {
                    float xOffset = areaIndex * widthPerArea;
                    var areaRect = new Rect( rect.x + xOffset, rect.y, widthPerArea, rect.height );
                    DoAreaSelector( areaRect, ref area, allAreas[j] );
                    areaIndex++;
                }
            }
            Text.WordWrap = true;
            Text.Font = GameFont.Small;
        }
        private static void DrawAreaAllowed(WidgetRow row, Pawn pawn)
        {
            if (pawn.playerSettings == null || pawn.HostFaction != null)
            {
                return;
            }
            row.DoGap(6f);
            bool      flag = pawn.playerSettings != null && pawn.playerSettings.AreaRestriction != null;
            Texture2D fillTex;

            if (flag)
            {
                fillTex = pawn.playerSettings.AreaRestriction.ColorTexture;
            }
            else
            {
                fillTex = BaseContent.GreyTex;
            }
            Rect rect = row.DoBar(93f, 16f, 1f, AreaUtility.AreaAllowedLabel(pawn), fillTex, null);

            if (Mouse.IsOver(rect))
            {
                if (flag)
                {
                    pawn.playerSettings.AreaRestriction.MarkForDraw();
                }
                Rect drawRect = rect.ContractedBy(-1f);
                Widgets.DrawBox(drawRect, 1);
            }
            if (Widgets.InvisibleButton(rect))
            {
                AllowedAreaMode mode = pawn.RaceProps.Humanlike ? AllowedAreaMode.Humanlike : AllowedAreaMode.Animal;
                AreaUtility.MakeAllowedAreaListFloatMenu(delegate(Area a)
                {
                    pawn.playerSettings.AreaRestriction = a;
                }, mode, true, true);
            }
        }
Beispiel #18
0
 public override bool AssignableAsAllowed(AllowedAreaMode mode)
 {
     return(false);
 }
 public override bool AssignableAsAllowed(AllowedAreaMode mode)
 {
     // nothing may be assigned to this area
     return(false);
 }
Beispiel #20
0
 public virtual bool AssignableAsAllowed(AllowedAreaMode mode)
 {
     return(false);
 }
 private void DrawColumnHeader_Areas( Rect rect, AllowedAreaMode mode = AllowedAreaMode.Animal )
 {
     List<Area> allAreas = Find.AreaManager.AllAreas;
     var num = 1;
     foreach ( Area t in allAreas )
     {
         if ( t.AssignableAsAllowed( mode ) )
         {
             num++;
         }
     }
     float num2 = rect.width / num;
     Text.WordWrap = false;
     Text.Font = GameFont.Tiny;
     Text.Anchor = TextAnchor.LowerCenter;
     var rect2 = new Rect( rect.x, rect.y, num2, rect.height );
     Widgets.Label( rect2, "NoAreaAllowed".Translate() );
     if ( Widgets.ButtonInvisible( rect2 ) )
     {
         foreach ( Pawn t in Pawns )
         {
             SoundDefOf.DesignateDragStandardChanged.PlayOneShotOnCamera();
             t.playerSettings.AreaRestriction = null;
         }
     }
     if ( Mouse.IsOver( rect2 ) )
     {
         GUI.DrawTexture( rect2, TexUI.HighlightTex );
     }
     TooltipHandler.TipRegion( rect2, "NoAreaAllowed".Translate() );
     var num3 = 1;
     foreach ( Area area in allAreas )
     {
         if ( area.AssignableAsAllowed( mode ) )
         {
             float num4 = num3 * num2;
             var rect3 = new Rect( rect.x + num4, rect.y, num2, rect.height );
             Widgets.Label( rect3, area.Label );
             if ( Widgets.ButtonInvisible( rect3 ) )
             {
                 foreach ( Pawn p in Pawns )
                 {
                     SoundDefOf.DesignateDragStandardChanged.PlayOneShotOnCamera();
                     p.playerSettings.AreaRestriction = area;
                 }
             }
             TooltipHandler.TipRegion( rect3, "Fluffy.RestrictAllTo".Translate( area.Label ) );
             if ( Mouse.IsOver( rect3 ) )
             {
                 GUI.DrawTexture( rect3, TexUI.HighlightTex );
             }
             num3++;
         }
     }
     Text.WordWrap = true;
     Text.Font = GameFont.Small;
     Text.Anchor = TextAnchor.UpperLeft;
     GUI.color = Color.white;
 }
 public bool CanMakeNewAllowed(AllowedAreaMode mode)
 {
     return((from a in this.areas
             where a is Area_Allowed && ((Area_Allowed)a).mode == mode
             select a).Count() < 5);
 }
        public static void DoAllowedAreaSelectors(Rect rect, ref Area areaRestriction, AllowedAreaMode mode, IEnumerable <Pawn> pawns)
        {
            List <Area> allAreas = Find.AreaManager.AllAreas;
            int         num      = 1;

            for (int i = 0; i < allAreas.Count; i++)
            {
                if (allAreas[i].AssignableAsAllowed(mode))
                {
                    num++;
                }
            }
            float num2 = rect.width / (float)num;

            Text.WordWrap = false;
            Text.Font     = GameFont.Tiny;
            Rect rect2 = new Rect(rect.x, rect.y, num2, rect.height);

            AreaAllowedGUI.DoAreaSelector(rect2, ref areaRestriction, null, pawns);
            int num3 = 1;

            for (int j = 0; j < allAreas.Count; j++)
            {
                if (allAreas[j].AssignableAsAllowed(mode))
                {
                    float num4  = (float)num3 * num2;
                    Rect  rect3 = new Rect(rect.x + num4, rect.y, num2, rect.height);
                    AreaAllowedGUI.DoAreaSelector(rect3, ref areaRestriction, allAreas[j], pawns);
                    num3++;
                }
            }
            Text.WordWrap = true;
        }
 public override bool AssignableAsAllowed(AllowedAreaMode mode)
 {
     return((mode & AllowedAreaMode.Any) != (AllowedAreaMode)0);
 }
Beispiel #25
0
 public new bool CanMakeNewAllowed(AllowedAreaMode mode) => true;
Beispiel #26
0
 public override bool AssignableAsAllowed(AllowedAreaMode mode)
 {
     return((byte)(mode & this.mode) != 0);
 }
 public bool CanMakeNewAllowed( AreaManager _this, AllowedAreaMode mode )
 {
     return true;
 }