private void BuildFKC(Designator_Build des)
 {
     SoundDefOf.SelectDesignator.PlayOneShotOnCamera();
     //des.SetStuffDef(stuff);
     des.ProcessInput(new UnityEngine.Event());
     Find.DesignatorManager.Select(des);
 }
 public override IEnumerable <Gizmo> GetGizmos()
 {
     foreach (Gizmo g in base.GetGizmos())
     {
         yield return(g);
     }
     if (Find.World.GetComponent <WorldComponent_Uvhash>().CurrentCrystalStage >= CrystalStage.BookCreated)
     {
         ThingDef         buildable = UvhashDefOf.Uvhash_BloodNexus;
         Designator_Build des       = FindDesignator(buildable);
         ThingDef         stuff     = ThingDefOf.WoodLog;
         if (des == null)
         {
             yield break;
         }
         if (!des.Visible)
         {
             yield break;
         }
         var commandAction = new Command_Action
         {
             action = delegate
             {
                 SoundDefOf.SelectDesignator.PlayOneShotOnCamera();
                 //des.SetStuffDef(stuff);
                 des.ProcessInput(new UnityEngine.Event());
                 Find.DesignatorManager.Select(des);
             },
             defaultLabel    = buildable.label,
             defaultDesc     = buildable.description,
             icon            = des.icon,
             iconProportions = des.iconProportions,
             iconDrawScale   = des.iconDrawScale,
             iconTexCoords   = des.iconTexCoords
         };
         if (stuff != null)
         {
             commandAction.defaultIconColor = stuff.stuffProps.color;
         }
         else
         {
             commandAction.defaultIconColor = buildable.IconDrawColor;
         }
         commandAction.hotKey = KeyBindingDefOf.Misc11;
         yield return(commandAction);
     }
     yield break;
 }
        public override IEnumerable <Gizmo> GetGizmos()
        {
            foreach (Gizmo g in base.GetGizmos())
            {
                yield return(g);
            }
            ThingDef         buildable = UvhashDefOf.Uvhash_CastingAltar;
            Designator_Build des       = FindDesignator(buildable);
            ThingDef         stuff     = ThingDefOf.WoodLog;

            if (des == null)
            {
                yield break;
            }
            if (!des.Visible)
            {
                yield break;
            }
            var commandAction = new Command_Action
            {
                action = delegate
                {
                    SoundDefOf.SelectDesignator.PlayOneShotOnCamera();
                    //des.SetStuffDef(stuff);
                    des.ProcessInput(new UnityEngine.Event());
                    Find.DesignatorManager.Select(des);
                },
                defaultLabel    = "BloodCommandBuildCastingAltar".Translate(),
                defaultDesc     = "BloodCommandBuildCastingAltarDesc".Translate(),
                icon            = des.icon,
                iconProportions = des.iconProportions,
                iconDrawScale   = des.iconDrawScale,
                iconTexCoords   = des.iconTexCoords
            };

            if (stuff != null)
            {
                commandAction.defaultIconColor = stuff.stuffProps.color;
            }
            else
            {
                commandAction.defaultIconColor = buildable.IconDrawColor;
            }
            commandAction.hotKey = KeyBindingDefOf.Misc11;
            yield return(commandAction);

            yield break;
        }
コード例 #4
0
        public override IEnumerable <Gizmo> GetGizmos()
        {
            foreach (Gizmo g in base.GetGizmos())
            {
                yield return(g);
            }
            ThingDef         buildable = CultsDefOf.Cults_ForbiddenKnowledgeCenter; //ThingDef.Named("ForbiddenKnowledgeCenter");
            Designator_Build des       = FindDesignator(buildable);
            ThingDef         stuff     = ThingDefOf.WoodLog;

            if (des == null)
            {
                yield break;
            }
            if (!des.Visible)
            {
                yield break;
            }
            Command_Action command_Action = new Command_Action();

            command_Action.action = delegate
            {
                SoundDefOf.SelectDesignator.PlayOneShotOnCamera();
                //des.SetStuffDef(stuff);
                des.ProcessInput(new UnityEngine.Event());
                Find.DesignatorManager.Select(des);
            };
            command_Action.defaultLabel    = "CommandBuildFKC".Translate();
            command_Action.defaultDesc     = "CommandBuildFKCDesc".Translate();
            command_Action.icon            = des.icon;
            command_Action.iconProportions = des.iconProportions;
            command_Action.iconDrawScale   = des.iconDrawScale;
            command_Action.iconTexCoords   = des.iconTexCoords;
            if (stuff != null)
            {
                command_Action.defaultIconColor = stuff.stuffProps.color;
            }
            else
            {
                command_Action.defaultIconColor = buildable.uiIconColor;
            }
            command_Action.hotKey = KeyBindingDefOf.Misc11;
            yield return(command_Action);

            yield break;
        }
コード例 #5
0
        static bool Prefix(Designator_Build __instance, Event ev)
        {
            if (entDefFI == null)
            {
                entDefFI     = typeof(Designator_Build).GetField("entDef", BindingFlags.NonPublic | BindingFlags.Instance);
                stuffDefFI   = typeof(Designator_Build).GetField("stuffDef", BindingFlags.NonPublic | BindingFlags.Instance);
                writeStuffFI = typeof(Designator_Build).GetField("writeStuff", BindingFlags.NonPublic | BindingFlags.Instance);
            }

            Map map = Find.CurrentMap;

            ThingDef thingDef = entDefFI.GetValue(__instance) as ThingDef;

            if (thingDef == null || !thingDef.MadeFromStuff || !WorldComp.HasInfiniteStorages(map))
            {
                return(true);
            }

            List <FloatMenuOption> list = new List <FloatMenuOption>();

            foreach (ThingDef current in map.resourceCounter.AllCountedAmounts.Keys)
            {
                if (current.IsStuff && current.stuffProps.CanMake(thingDef) && (DebugSettings.godMode || map.listerThings.ThingsOfDef(current).Count > 0))
                {
                    ThingDef localStuffDef = current;
                    string   labelCap      = localStuffDef.LabelCap;
                    list.Add(new FloatMenuOption(labelCap, delegate
                    {
                        __instance.ProcessInput(ev);
                        Find.DesignatorManager.Select(__instance);
                        stuffDefFI.SetValue(__instance, current);
                        writeStuffFI.SetValue(__instance, true);
                    }, MenuOptionPriority.Default, null, null, 0f, null, null));
                }
            }

            foreach (Building_InfiniteStorage storage in WorldComp.GetInfiniteStorages(map))
            {
                if (storage.Spawned)
                {
                    foreach (Thing t in storage.StoredThings)
                    {
                        ThingDef current = t.def;
                        if (current.IsStuff &&
                            current.stuffProps.CanMake(thingDef) &&
                            (DebugSettings.godMode || t.stackCount > 0))
                        {
                            string labelCap = current.LabelCap;
                            list.Add(new FloatMenuOption(labelCap, delegate
                            {
                                __instance.ProcessInput(ev);
                                Find.DesignatorManager.Select(__instance);
                                stuffDefFI.SetValue(__instance, current);
                                writeStuffFI.SetValue(__instance, true);
                            }, MenuOptionPriority.Default, null, null, 0f, null, null));
                        }
                    }
                }
            }

            if (list.Count == 0)
            {
                Messages.Message("NoStuffsToBuildWith".Translate(), MessageTypeDefOf.RejectInput);
            }
            else
            {
                FloatMenu floatMenu = new FloatMenu(list);
                floatMenu.vanishIfMouseDistant = true;
                Find.WindowStack.Add(floatMenu);
                Find.DesignatorManager.Select(__instance);
            }
            return(false);
        }