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; } }