Example #1
0
        private static void SketchGen()
        {
            List <DebugMenuOption> list = new List <DebugMenuOption>();

            foreach (SketchResolverDef item in DefDatabase <SketchResolverDef> .AllDefs.Where((SketchResolverDef x) => x.isRoot))
            {
                SketchResolverDef localResolver = item;
                if (localResolver == SketchResolverDefOf.Monument || localResolver == SketchResolverDefOf.MonumentRuin)
                {
                    List <DebugMenuOption> sizeOpts = new List <DebugMenuOption>();
                    for (int i = 1; i <= 60; i++)
                    {
                        int localIndex = i;
                        sizeOpts.Add(new DebugMenuOption(localIndex.ToString(), DebugMenuOptionMode.Tool, delegate
                        {
                            RimWorld.SketchGen.ResolveParams parms2 = default(RimWorld.SketchGen.ResolveParams);
                            parms2.sketch       = new Sketch();
                            parms2.monumentSize = new IntVec2(localIndex, localIndex);
                            RimWorld.SketchGen.SketchGen.Generate(localResolver, parms2).Spawn(Find.CurrentMap, UI.MouseCell(), null, Sketch.SpawnPosType.Unchanged, Sketch.SpawnMode.Normal, wipeIfCollides: false, clearEdificeWhereFloor: false, null, dormant: false, buildRoofsInstantly: true);
                        }));
                    }
                    list.Add(new DebugMenuOption(item.defName, DebugMenuOptionMode.Action, delegate
                    {
                        Find.WindowStack.Add(new Dialog_DebugOptionListLister(sizeOpts));
                    }));
                }
                else
                {
                    list.Add(new DebugMenuOption(item.defName, DebugMenuOptionMode.Tool, delegate
                    {
                        RimWorld.SketchGen.ResolveParams parms = default(RimWorld.SketchGen.ResolveParams);
                        parms.sketch = new Sketch();
                        RimWorld.SketchGen.SketchGen.Generate(localResolver, parms).Spawn(Find.CurrentMap, UI.MouseCell(), null, Sketch.SpawnPosType.Unchanged, Sketch.SpawnMode.Normal, wipeIfCollides: false, clearEdificeWhereFloor: false, null, dormant: false, buildRoofsInstantly: true);
                    }));
                }
            }
            Find.WindowStack.Add(new Dialog_DebugOptionListLister(list));
        }
 public static Sketch Generate(SketchResolverDef root, ResolveParams parms)
 {
     if (working)
     {
         Log.Error("Cannot call Generate() while already generating. Nested calls are not allowed.");
         return(parms.sketch);
     }
     working = true;
     try
     {
         root.Resolve(parms);
         return(parms.sketch);
     }
     catch (Exception arg)
     {
         Log.Error("Error in SketchGen: " + arg);
         return(parms.sketch);
     }
     finally
     {
         working = false;
     }
 }