public FloatMenuOption_Group(string label, Action action, Designator designator,
     MenuOptionPriority priority = MenuOptionPriority.Medium, Action mouseoverGuiAction = null,
     Thing revalidateClickTarget = null)
     : base(label, action, priority, mouseoverGuiAction, revalidateClickTarget)
 {
     this.designator = designator;
 }
        private static void SyncSurrogateToHackDesignator(SyncWorker sync, ref Designator designator)
        {
            if (sync.isWriting)
            {
                sync.Write((byte)surrogateToHackHackTypeField(designator));
                sync.Write(surrogateToHackTargetField(designator));
                var map = surrogateToHackMapField(designator);

                // Looks like the map and cell are set in only one method, which is never called
                // so we'll most likely end up never syncing them. I'm leaving it for safety, though.
                if (map == null)
                {
                    sync.Write(IntVec3.Invalid);
                }
                else
                {
                    sync.Write(surrogateToHackPosField(designator));
                    sync.Write(map);
                }
            }
            else
            {
                designator = (Designator)surrogateToHackConstructor.Invoke(new object[] { (int)sync.Read <byte>() });
                surrogateToHackTargetField(designator) = sync.Read <Pawn>();
                var pos = sync.Read <IntVec3>();

                if (pos.IsValid)
                {
                    surrogateToHackPosField(designator) = pos;
                    surrogateToHackMapField(designator) = sync.Read <Map>();
                }
            }
        }
Example #3
0
 public static void DrawInspectGizmoGridFor(IEnumerable <object> selectedObjects, out Gizmo mouseoverGizmo)
 {
     mouseoverGizmo = null;
     try
     {
         objList.Clear();
         objList.AddRange(selectedObjects);
         gizmoList.Clear();
         for (int i = 0; i < objList.Count; i++)
         {
             ISelectable selectable = objList[i] as ISelectable;
             if (selectable != null)
             {
                 gizmoList.AddRange(selectable.GetGizmos());
             }
         }
         for (int j = 0; j < objList.Count; j++)
         {
             Thing t = objList[j] as Thing;
             if (t == null)
             {
                 continue;
             }
             List <Designator> allDesignators = Find.ReverseDesignatorDatabase.AllDesignators;
             for (int k = 0; k < allDesignators.Count; k++)
             {
                 Designator des = allDesignators[k];
                 if (!des.CanDesignateThing(t).Accepted)
                 {
                     continue;
                 }
                 Command_Action command_Action = new Command_Action();
                 command_Action.defaultLabel = des.LabelCapReverseDesignating(t);
                 command_Action.icon         = des.IconReverseDesignating(t, out var angle, out var offset);
                 command_Action.iconAngle    = angle;
                 command_Action.iconOffset   = offset;
                 command_Action.defaultDesc  = des.DescReverseDesignating(t);
                 command_Action.order        = ((des is Designator_Uninstall) ? (-11f) : (-20f));
                 command_Action.action       = delegate
                 {
                     if (TutorSystem.AllowAction(des.TutorTagDesignate))
                     {
                         des.DesignateThing(t);
                         des.Finalize(somethingSucceeded: true);
                     }
                 };
                 command_Action.hotKey   = des.hotKey;
                 command_Action.groupKey = des.groupKey;
                 gizmoList.Add(command_Action);
             }
         }
         objList.Clear();
         GizmoGridDrawer.DrawGizmoGrid(gizmoList, InspectPaneUtility.PaneWidthFor(Find.WindowStack.WindowOfType <IInspectPane>()) + GizmoGridDrawer.GizmoSpacing.y, out mouseoverGizmo);
         gizmoList.Clear();
     }
     catch (Exception ex)
     {
         Log.ErrorOnce(ex.ToString(), 3427734);
     }
 }
 public static bool NeverChangeIcon(Designator __instance, out Texture2D __result, out float angle, out Vector2 offset)
 {
     __result = __instance.icon;
     offset   = default(Vector2);
     angle    = 0f;
     return(false);
 }
        private void RemoveSelectedDesignation(Designator designator, Map map)
        {
            // distinct designation defs on selected things
            var selectedObjects         = new HashSet <object>(Find.Selector.SelectedObjects);
            var selectedDesignationDefs = map.designationManager.allDesignations
                                          .Where(des => des.target.Thing != null && selectedObjects.Contains(des.target.Thing))
                                          .GroupBy(des => des.def).Select(grp => grp.Key).ToArray();
            var affectedThings = new HashSet <Thing>();

            foreach (var designation in map.designationManager.allDesignations.ToArray())
            {
                if (selectedDesignationDefs.Contains(designation.def))
                {
                    map.designationManager.RemoveDesignation(designation);
                    if (designation.target.Thing != null)
                    {
                        affectedThings.Add(designation.target.Thing);
                    }
                }
            }
            if (affectedThings.Count > 0)
            {
                Messages.Message((CancelSelectedDesignationTextKey + SuccessMessageStringIdSuffix).Translate(selectedDesignationDefs.Length, affectedThings.Count), MessageTypeDefOf.TaskCompletion);
            }
            else
            {
                Messages.Message((CancelSelectedDesignationTextKey + FailureMessageStringIdSuffix).Translate(), MessageTypeDefOf.RejectInput);
            }
        }
        public override ActivationResult Activate(Designator designator, Map map)
        {
            var playerFaction = Faction.OfPlayer;
            var hitCount      = DesignateAllThings(designator, map, t => t.Faction != playerFaction);

            return(ActivationResult.FromCount(hitCount, BaseTextKey));
        }
Example #7
0
        private static void CheckHotkey(string key, int orderNum)
        {
            //code from trying to add feature where hotkeys are allowed where their gizmos do not appear

            /*
             * if (Find.MainTabsRoot.OpenTab != null && Find.MainTabsRoot.OpenTab.defName.Equals("Inspect") && ((MainTabWindow_Inspect)Find.MainTabsRoot.OpenTab.TabWindow).ShouldShowPaneContents)
             * {
             *  foreach (Gizmo gizmo in ((ISelectable)Find.Selector.SingleSelectedObject).GetGizmos())
             *  {
             *      Log.Error(Convert.ToString(gizmo.GetType()));
             *  }
             * }
             */
            if (Input.GetKeyDown(key))
            {
                Designator designator = DefDatabase <DesignationCategoryDef> .AllDefsListForReading[0].AllResolvedDesignators[orderNum];
                if (Find.DesignatorManager.SelectedDesignator != designator)
                {
                    Find.DesignatorManager.Select(designator);
                    if (CheckSelectedDesignatorValid())
                    {
                        designator.activateSound.PlayOneShotOnCamera((Map)null);
                    }
                    return;
                }
                SoundDefOf.CancelMode.PlayOneShotOnCamera((Map)null);
                Find.DesignatorManager.Deselect();
            }
        }
 public static void DrawInspectGizmoGridFor(IEnumerable <object> selectedObjects, out Gizmo mouseoverGizmo)
 {
     mouseoverGizmo = null;
     try
     {
         InspectGizmoGrid.objList.Clear();
         InspectGizmoGrid.objList.AddRange(selectedObjects);
         InspectGizmoGrid.gizmoList.Clear();
         for (int i = 0; i < InspectGizmoGrid.objList.Count; i++)
         {
             ISelectable selectable = InspectGizmoGrid.objList[i] as ISelectable;
             if (selectable != null)
             {
                 InspectGizmoGrid.gizmoList.AddRange(selectable.GetGizmos());
             }
         }
         for (int j = 0; j < InspectGizmoGrid.objList.Count; j++)
         {
             Thing t = InspectGizmoGrid.objList[j] as Thing;
             if (t != null)
             {
                 List <Designator> allDesignators = Find.ReverseDesignatorDatabase.AllDesignators;
                 for (int k = 0; k < allDesignators.Count; k++)
                 {
                     Designator des = allDesignators[k];
                     if (des.CanDesignateThing(t).Accepted)
                     {
                         Command_Action command_Action = new Command_Action();
                         command_Action.defaultLabel = des.LabelCapReverseDesignating(t);
                         float   iconAngle;
                         Vector2 iconOffset;
                         command_Action.icon        = des.IconReverseDesignating(t, out iconAngle, out iconOffset);
                         command_Action.iconAngle   = iconAngle;
                         command_Action.iconOffset  = iconOffset;
                         command_Action.defaultDesc = des.DescReverseDesignating(t);
                         command_Action.order       = ((!(des is Designator_Uninstall)) ? -20f : -11f);
                         command_Action.action      = delegate()
                         {
                             if (TutorSystem.AllowAction(des.TutorTagDesignate))
                             {
                                 des.DesignateThing(t);
                                 des.Finalize(true);
                             }
                         };
                         command_Action.hotKey   = des.hotKey;
                         command_Action.groupKey = des.groupKey;
                         InspectGizmoGrid.gizmoList.Add(command_Action);
                     }
                 }
             }
         }
         InspectGizmoGrid.objList.Clear();
         GizmoGridDrawer.DrawGizmoGrid(InspectGizmoGrid.gizmoList, InspectPaneUtility.PaneWidthFor(Find.WindowStack.WindowOfType <IInspectPane>()) + 20f, out mouseoverGizmo);
         InspectGizmoGrid.gizmoList.Clear();
     }
     catch (Exception ex)
     {
         Log.ErrorOnce(ex.ToString(), 3427734, false);
     }
 }
 private void MakeMatchingGrowZone()
 {
     Designator designator = DesignatorUtility.FindAllowedDesignator<Designator_ZoneAdd_Growing>();
     designator.DesignateMultiCell(from tempCell in GrowableCells
                                   where designator.CanDesignateCell(tempCell).Accepted
                                   select tempCell);
 }
        // if designator has no custom context menu entries but has a stock context menu, still show a right click icon
        // detection is not fool-proof, but it's good enough- and better than calling RightClickFloatMenuOptions
        private static bool DesignatorShouldHaveFallbackContextMenuProvider(Designator designator)
        {
            try
            {
                if (designator.GetType() != typeof(Designator_Build))
                {
                    var hasDesignation = AllowToolController.Instance.Reflection.DesignatorGetDesignationMethod.Invoke(designator, new object[0]) != null;
                    if (hasDesignation)
                    {
                        return(true);
                    }
                    var hasDesignateAll = (bool)AllowToolController.Instance.Reflection.DesignatorHasDesignateAllFloatMenuOptionField.GetValue(designator);
                    if (hasDesignateAll)
                    {
                        return(true);
                    }
                    var getOptionsMethod = designator.GetType().GetMethod("get_RightClickFloatMenuOptions", HugsLibUtility.AllBindingFlags);
                    var hasOptionsMethod = getOptionsMethod != null && getOptionsMethod.DeclaringType != typeof(Designator);
                    if (hasOptionsMethod)
                    {
                        return(true);
                    }
                }
            }
            catch (Exception)
            {
                // no problem- the designator will just have no handler assigned
            }

            return(false);
        }
Example #11
0
 public static void CheckForMiningResearch(GameRules __instance, Designator d, ref bool __result)
 {
     if (d is Designator_Mine && !MiningTechMod.MiningResearchSetting.Value().IsFinished)
     {
         __result = false;
     }
 }
Example #12
0
        public PlacementReport CanPlace(IntVec3 origin)
        {
            // get rotated cell position
            var cell = origin + Position;

            // if the designator's check passes, we can safely assume it's OK to build here
            if (Designator.CanDesignateCell(cell).Accepted)
            {
                return(PlacementReport.CanPlace);
            }

            // otherwise, check if the same thing (or it's blueprint/frame stages) already exists here
            // terrain and thing both have bluePrint and frame in thinglist, as are things. Terrains are not a thing, and retrieved with GetTerrain().
            var cellDefs = cell.GetThingList(Find.VisibleMap).Select(thing => thing.def).ToList();

            if (cellDefs.Contains(BuildableDef as ThingDef) ||
                cell.GetTerrain(Find.VisibleMap) == BuildableDef as TerrainDef ||
                cellDefs.Contains(BuildableDef.blueprintDef) ||
                cellDefs.Contains(BuildableDef.frameDef))
            {
                return(PlacementReport.Alreadyplaced);
            }

            // finally, default to returning false.
            return(PlacementReport.CanNotPlace);
        }
Example #13
0
        private void DesignateWithPredicate(Designator designator, Map map, Func <Thing, bool> shouldDesignateThing = null, string successMessageKey = null)
        {
            int hitCount = 0;

            foreach (var thing in map.listerThings.ThingsInGroup(DesignatorRequestGroup))
            {
                if (ValidForDesignation(thing) &&
                    designator.CanDesignateThing(thing).Accepted&&
                    !thing.def.designateHaulable &&
                    (shouldDesignateThing == null || shouldDesignateThing(thing)))
                {
                    designator.DesignateThing(thing);
                    hitCount++;
                }
            }
            if (successMessageKey == null)
            {
                successMessageKey = EntryTextKey + SuccessMessageStringIdSuffix;
            }
            if (hitCount > 0)
            {
                Messages.Message(successMessageKey.Translate(hitCount), MessageTypeDefOf.TaskCompletion);
            }
            else
            {
                Messages.Message((EntryTextKey + FailureMessageStringIdSuffix).Translate(), MessageTypeDefOf.RejectInput);
            }
        }
        public override ActivationResult Activate(Designator designator, Map map)
        {
            var visibleRect = AllowToolUtility.GetVisibleMapRect();

            return(MenuEntry_SelectSimilarAll.SelectSimilarWithFilter(designator, map,
                                                                      BaseTextKey, BaseMessageKey, t => visibleRect.Contains(t.Position)));
        }
        public static void Postfix(DesignatorManager __instance, ref Designator __state)
        {
            if (!DesignatorShapes.ShowControls)
            {
                return;
            }
            var selectedDesignator = __instance.SelectedDesignator;

            if (selectedDesignator == null)
            {
                return;
            }
            if (__state == selectedDesignator)
            {
                return;
            }
            DesignatorShapeDef shape;
            var announce = true;

            if (DesignatorShapes.Settings.AutoSelectShape || DesignatorShapes.CachedTool == null)
            {
                shape = selectedDesignator.DraggableDimensions switch
                {
                    2 => DesignatorShapeDefOf.RectangleFilled,
                    _ => DesignatorShapeDefOf.Rectangle,
                }
            }
            ;
Example #16
0
        private static Designator_Build FindAllowedDesignatorRecursive(Designator designator, BuildableDef buildable, bool mustBeVisible)
        {
            if (!Current.Game.Rules.DesignatorAllowed(designator))
            {
                return(null);
            }
            if (mustBeVisible && !designator.Visible)
            {
                return(null);
            }
            Designator_Build designator_Build = designator as Designator_Build;

            if (designator_Build != null && designator_Build.PlacingDef == buildable)
            {
                return(designator_Build);
            }
            Designator_Dropdown designator_Dropdown = designator as Designator_Dropdown;

            if (designator_Dropdown != null)
            {
                for (int i = 0; i < designator_Dropdown.Elements.Count; i++)
                {
                    Designator_Build designator_Build2 = FindAllowedDesignatorRecursive(designator_Dropdown.Elements[i], buildable, mustBeVisible);
                    if (designator_Build2 != null)
                    {
                        return(designator_Build2);
                    }
                }
            }
            return(null);
        }
Example #17
0
        public static bool DesignateMultiCell(Designator __instance, IEnumerable <IntVec3> __0)
        {
            if (!Multiplayer.ShouldSync)
            {
                return(true);
            }

            // No cells implies Finalize(false), which currently doesn't cause side effects
            if (__0.Count() == 0)
            {
                return(true);
            }

            Designator designator = __instance;

            Map map = Find.CurrentMap;
            LoggingByteWriter writer = new LoggingByteWriter();

            writer.log.Node("Designate multi cell: " + designator.GetType());
            IntVec3[] cellArray = __0.ToArray();

            WriteData(writer, DesignatorMode.MultiCell, designator);
            Sync.WriteSync(writer, cellArray);

            Multiplayer.Client.SendCommand(CommandType.Designator, map.uniqueID, writer.ToArray());
            Multiplayer.WriterLog.nodes.Add(writer.log.current);

            return(false);
        }
Example #18
0
        private static void WriteData(ByteWriter data, DesignatorMode mode, Designator designator)
        {
            Type designatorType = designator.GetType();

            Sync.WriteSync(data, mode);
            Sync.WriteSync(data, (ushort)Array.IndexOf(Sync.designatorTypes, designatorType));
            Sync.WriteSyncObject(data, designator, designatorType);

            if (designator is Designator_AreaAllowed)
            {
                Sync.WriteSync(data, Designator_AreaAllowed.SelectedArea);
            }

            if (designator is Designator_Place place)
            {
                Sync.WriteSync(data, place.placingRot);
            }

            if (designator is Designator_Build build && build.PlacingDef.MadeFromStuff)
            {
                Sync.WriteSync(data, build.stuffDef);
            }

            if (designator is Designator_Install)
            {
                Sync.WriteSync(data, ThingToInstall());
            }

            if (designator is Designator_Zone)
            {
                Sync.WriteSync(data, Find.Selector.SelectedZone);
            }
        }
Example #19
0
        private static void WriteData(ByteWriter data, DesignatorMode mode, Designator designator)
        {
            Sync.WriteSync(data, mode);
            Sync.WriteSync(data, designator);

            if (designator is Designator_AreaAllowed)
            {
                Sync.WriteSync(data, Designator_AreaAllowed.SelectedArea);
            }

            if (designator is Designator_Place place)
            {
                Sync.WriteSync(data, place.placingRot);
            }

            if (designator is Designator_Build build && build.PlacingDef.MadeFromStuff)
            {
                Sync.WriteSync(data, build.stuffDef);
            }

            if (designator is Designator_Install)
            {
                Sync.WriteSync(data, ThingToInstall());
            }

            if (designator is Designator_Zone)
            {
                Sync.WriteSync(data, Find.Selector.SelectedZone);
            }
        }
Example #20
0
        protected void RemoveDesignationsAction(Designator designator, Map map)
        {
            int hitCountThings = 0;
            int hitCountTiles  = 0;
            var manager        = map.designationManager;

            foreach (var des in manager.allDesignations.ToArray())
            {
                // skip planning designation, as so does cancel
                if (des.def == null || !des.def.designateCancelable || des.def == DesignationDefOf.Plan)
                {
                    continue;
                }
                if (des.target.Thing != null)
                {
                    hitCountThings++;
                }
                else
                {
                    hitCountTiles++;
                }
                manager.RemoveDesignation(des);
            }
            Messages.Message("Designator_context_cancel_desig_msg".Translate(hitCountThings, hitCountTiles), MessageSound.Benefit);
        }
Example #21
0
        private void InjectDesignators()
        {
            var numDesignatorsInjected = 0;

            foreach (var designatorDef in DefDatabase <ThingDesignatorDef> .AllDefs)
            {
                if (designatorDef.Injected)
                {
                    continue;
                }
                var resolvedDesignators = designatorDef.Category.AllResolvedDesignators;
                var insertIndex         = -1;
                for (var i = 0; i < resolvedDesignators.Count; i++)
                {
                    if (resolvedDesignators[i].GetType() != designatorDef.insertAfter)
                    {
                        continue;
                    }
                    insertIndex = i;
                    break;
                }
                if (insertIndex >= 0)
                {
                    Designator replacedDesignator = null;
                    if (designatorDef.replaces != null)
                    {
                        // remove the designator to replace, if specified
                        var replacedIndex = resolvedDesignators.FindIndex(des => designatorDef.replaces.IsInstanceOfType(des));
                        if (replacedIndex >= 0)
                        {
                            replacedDesignator = resolvedDesignators[replacedIndex];
                            resolvedDesignators.RemoveAt(replacedIndex);
                            // adjust index to compensate for removed element
                            if (replacedIndex < insertIndex)
                            {
                                insertIndex--;
                            }
                        }
                        else
                        {
                            Logger.Warning($"{designatorDef.defName} could not find {designatorDef.replaces} for replacement");
                        }
                    }
                    var designator = InstantiateDesignator(designatorDef.designatorClass, designatorDef, replacedDesignator);
                    resolvedDesignators.Insert(insertIndex + 1, designator);
                    designator.SetVisible(IsDesignatorEnabledInSettings(designatorDef));
                    activeDesignators.Add(new DesignatorEntry(designator, designatorDef.hotkeyDef));
                    numDesignatorsInjected++;
                }
                else
                {
                    Logger.Error($"Failed to inject {designatorDef.defName} after {designatorDef.insertAfter.Name}");
                }
                designatorDef.Injected = true;
            }
            if (numDesignatorsInjected > 0)
            {
                Logger.Trace("Injected " + numDesignatorsInjected + " designators");
            }
        }
        public override ActivationResult Activate(Designator designator, Map map)
        {
            var hitCount = DesignateAllThings(designator, map,
                                              t => t is Plant p && p.Blighted && !p.HasDesignation(DesignationDefOf.CutPlant));

            return(ActivationResult.FromCount(hitCount, BaseTextKey));
        }
Example #23
0
 public void BeginListening(ThingIsRelevantFilter callback, Texture2D dragHighlightTex)
 {
     listening          = true;
     filterCallback     = callback;
     dragHighlightMat   = MaterialPool.MatFrom(dragHighlightTex, ShaderDatabase.MetaOverlay, Color.white);
     invokingDesignator = Find.MapUI.designatorManager.SelectedDesignator;
 }
        public override void ProcessInput(Event ev)
        {
            List <FloatMenuOption> list = new List <FloatMenuOption>();

            for (int i = 0; i < this.elements.Count; i++)
            {
                Designator des = this.elements[i];
                if (des.Visible)
                {
                    list.Add(new FloatMenuOption(des.LabelCap, delegate
                    {
                        base.ProcessInput(ev);
                        Find.DesignatorManager.Select(des);
                        this.SetActiveDesignator(des, true);
                    }, MenuOptionPriority.Default, null, null, 0f, null, null));
                }
            }
            FloatMenu floatMenu = new FloatMenu(list);

            floatMenu.vanishIfMouseDistant = true;
            floatMenu.onCloseCallback      = delegate
            {
                this.activeDesignatorSet = true;
            };
            Find.WindowStack.Add(floatMenu);
            Find.DesignatorManager.Select(this.activeDesignator);
        }
        public override ActivationResult Activate(Designator designator, Map map)
        {
            int hitCountThings = 0;
            int hitCountTiles  = 0;
            var manager        = map.designationManager;

            foreach (var des in manager.allDesignations.ToArray())
            {
                // skip planning designation, as so does cancel
                if (des.def == null || !des.def.designateCancelable || des.def == DesignationDefOf.Plan)
                {
                    continue;
                }
                if (des.target.Thing != null)
                {
                    hitCountThings++;
                }
                else
                {
                    hitCountTiles++;
                }
                manager.RemoveDesignation(des);
            }
            return(ActivationResult.SuccessMessage("Designator_context_cancel_desig_msg".Translate(hitCountThings, hitCountTiles)));
        }
Example #26
0
        public Designator ReplaceDesignator(Type searchingFor, Designator replacement)
        {
            DesignationCategoryDef designationCategoryDef = null;
            Designator             designator             = null;

            foreach (DesignationCategoryDef current in from dc in DefDatabase <DesignationCategoryDef> .AllDefs
                     orderby dc.order descending
                     select dc)
            {
                foreach (Designator current2 in current.resolvedDesignators)
                {
                    if (current2.GetType().Equals(searchingFor))
                    {
                        designator             = current2;
                        designationCategoryDef = current;
                        break;
                    }
                }
                if (designator != null)
                {
                    break;
                }
            }
            if (designator == null)
            {
                return(null);
            }
            int index = designationCategoryDef.resolvedDesignators.IndexOf(designator);

            designationCategoryDef.resolvedDesignators[index] = replacement;
            return(designator);
        }
 private static void AddIconReplacementSupport(Command_Toggle toggle, Designator standInDesignator)
 {
     if (AllowToolController.Instance.Handles.ReplaceIconsSetting.Value)
     {
         toggle.icon = standInDesignator.icon;
     }
 }
Example #28
0
 protected override void VisitDesignator(Designator designator)
 {
     if (!designator.IsPredefined())
     {
         ReplaceNonTerminal(designator, designator.Ref as ModelElement);
     }
 }
        public override ActivationResult Activate(Designator designator, Map map)
        {
            // distinct designation defs on selected things
            var selectedObjects = new HashSet <object>(Find.Selector.SelectedObjects);
            // also include designations on cells of selected things
            var selectedTilePositions = new HashSet <IntVec3>(
                selectedObjects.Where(t => t is Thing)
                .Select(t => ((Thing)t).Position)
                );
            var selectedDesignationDefs = map.designationManager.allDesignations
                                          .Where(des => des.target.HasThing ? selectedObjects.Contains(des.target.Thing) : selectedTilePositions.Contains(des.target.Cell))
                                          .Select(des => des.def)
                                          .Distinct()
                                          .ToArray();
            var affectedDesignations = new HashSet <LocalTargetInfo>();

            foreach (var designation in map.designationManager.allDesignations.ToArray())
            {
                if (selectedDesignationDefs.Contains(designation.def))
                {
                    map.designationManager.RemoveDesignation(designation);
                    affectedDesignations.Add(designation.target);
                }
            }
            return(affectedDesignations.Count > 0
                                ? ActivationResult.Success(BaseMessageKey, selectedDesignationDefs.Length, affectedDesignations.Count)
                                : ActivationResult.Failure(BaseMessageKey));
        }
        // catch right-clicks and shift-clicks on supported designators and reverse designators. Left clicks return false.
        public static bool TryProcessDesignatorInput(Designator designator)
        {
            try
            {
                if (Event.current.button == (int)MouseButtons.Left &&
                    HugsLibUtility.ShiftIsHeld &&
                    AllowToolController.Instance.Handles.ReverseDesignatorPickSetting)
                {
                    return(TryPickDesignatorFromReverseDesignator(designator));
                }
                if (Event.current.button == (int)MouseButtons.Right)
                {
                    if (designatorMenuProviders.TryGetValue(designator, out var provider))
                    {
                        provider.OpenContextMenu(designator);
                        return(true);
                    }
                }
            }
            catch (Exception e)
            {
                AllowToolController.Logger.ReportException(e);
            }

            return(false);
        }
Example #31
0
 public GPIO(Designator portExpander, byte pin, GPIOType input, CheckBox chk)
 {
     PortExpander = portExpander;
     Pin = pin;
     Input = input;
     PullUp = (input==GPIOType.Input || input==GPIOType.nInput); //in our circuit all inputs require pullups
     Chk = chk;
 }
Example #32
0
 public static void DesignatorAllowedPostfix(Designator d, ref bool __result)
 {
     if (!__result || !(d is Designator_Build build))
     {
         return;
     }
     __result = CanBuild(__result, build.PlacingDef.defName);
 }
 public static void Add( Designator designator )
 {
     if( DesList == null )
     {
         return;
     }
     DesList.Add( designator );
 }
 protected override void VisitDesignator(Designator designator)
 {
     if (!designator.IsPredefined())
     {
         ReplaceNonTerminal(designator, designator.Ref as ModelElement);
     }
 }
		public void BeginListening(ThingIsReleveantFilter callback, Texture2D dragHighlightTex) {
			listening = true;
			filterCallback = callback;
			dragHighlightMat = MaterialPool.MatFrom(dragHighlightTex, ShaderDatabase.MetaOverlay, Color.white);
			invokingDesignator = DesignatorManager.SelectedDesignator;
		}
 protected override void VisitDesignator(Designator designator)
 {
     ModelElement model = designator.Ref as ModelElement;
     if (model != null && !designator.IsPredefined())
     {
         ReplaceText(model.ReferenceName(BaseLocation), designator.Start, designator.End);
     }
 }