From e249ddf292084ba6cfe36ee4e80ad5a538953dde Mon Sep 17 00:00:00 2001 From: "ProjectKoi-Kalo\\Kalo" Date: Mon, 25 Aug 2025 12:02:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9A=82=E5=AD=982?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1.6/1.6/Assemblies/WulaFallenEmpire.dll | Bin 276992 -> 276992 bytes .../MapGenerator_WULA_PocketSpace_Small.xml | 2 +- .../Building_WULA_ArmedShuttleWithPocket.xml | 84 +- .../Keyed/WULA_PocketShuttle.xml | 8 - .../English/Keyed/WULA_PocketShuttle.xml | 8 - MCP/vector_cache/knowledge_cache.json | 3107 +++++++++++++++++ .../ArmedPocketShuttle_DesignDocument.md | 109 + .../3516260226.code-workspace | 3 + Source/WulaFallenEmpire/ThingDefOf_WULA.cs | 1 + .../Building_ArmedShuttleWithPocket.cs | 918 +++-- .../WULA_Shuttle/Building_PocketMapExit.cs | 173 + .../WULA_Shuttle/PocketMapProperties.cs | 12 + 12 files changed, 4136 insertions(+), 289 deletions(-) create mode 100644 Source/ProjectDocumentation/ArmedPocketShuttle_DesignDocument.md create mode 100644 Source/WulaFallenEmpire/WULA_Shuttle/PocketMapProperties.cs diff --git a/1.6/1.6/Assemblies/WulaFallenEmpire.dll b/1.6/1.6/Assemblies/WulaFallenEmpire.dll index cb8b7889b172eaa5a477a4a8298a4d01786b4a67..86af74e6d3ccf1623d0f16c4d14b5bfa4df67d3e 100644 GIT binary patch literal 276992 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

XnyDAtnn%T_ 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 dq^os33J!T6T*EUnyyrqT2_>1v^{TFs)bTY+I2 zK4AHWEgiE|LqpbBdRnQW>xWO--EUa>jHN;s9iV)DrScpbtL-sME#K&}yH!hjm4>gk zfHZ>Mq4hRs3M-h}>f|ha(rRwA)S!ju$crIJ`IBcUua(WShYN?z^TG7>_m^`McbAI& zkBqFu1>24l&0Br> z$%#U4>TYWKYLji=$x`>Ol(*|rqi?W|TxgTcty?p(Q?56ZV} z-(4ym$sg@6mrLczFOD8MwAu5%l=Awo2xsTSM6MhZ28xxSEW(wn{rJRPLFN8Zxp-Ip zkH$-r{f}45IfDdEJ{G0j)yYa}e7KlDRt@eCaucQEE!&4Cf{}c#5D#*wlB*a-y|;Vb zu9UaqiYN`{@?cZU6-R>orBMyX(76PaO?@H1MjH6tYfUK6P#q`jfx zqx-6(0ZjVkp1$C4_2|wKW7(;R;MVNU$;n{+aAB%@_t03bJaKC_VV>Te+k3X%ws~vM zZM}DFzWr997b?|qu%j4MnV-U~+5OeSh5X2ugQJui`*J+mPCB|9!%w3mWG23=8b%!1jQ zs}>HHJ`K(`-XW3lzW52~3>1$BlND9yF9zkKQZ>`^$j@<-w8z-y}~j z;{J;C**`foGL|24Qm8LDa!B3n%1ts!_f#t*rSahYT)CJp9(5CiKcV33mCxF>i zD2+SBcV4lVTV%QS3emck>Su?xyo2j-cu?M6dx^(z(=K` z4fdApDtII)y9)cq82l{VK=q0m0LAvT0GU+?4(%>i^OM0~esYqlTehQ;?#mVOqq~EG zV@>99dx}3*dns$~s^$x$5a!U%@^~;hG*+!t;`UC5NRw@4-Ud_N-e0cq{rSq+eyAO= zKtRLv;ax#-s1i&V;ib>6$OTtK+7-()P0KSEsyX0<;%3 zvKw0f6DAhMcY0nX<+c6n@21ax^M!Z6^N;Vm@*P+5&h($Y6Mlbg$@xG3vv>aC+dn%w z{j}Im$oHa-Jum!X%0qyRV~7<-d-jw{qYE?emizOCLVvEZn2Gp`8|MDpW5ugX-iI9I zgJY~rZ{bR#)@wU zS{Lw3Tt&V2e-!k>X`m4YdRJ)_jw)B~4KOiAuQKy2tne$&Wk#|7EkkT5MuOd#vPVl- z-Bw;eYhWRbvW0|wv?&P>;P_;Jv_Pa^$T2J=Z1lySrMyR*RBCRj-4?pJwH`1B(p6r3 zK5hdiNL_CzGw`W5RmQB_<0^N&diPi`@(A7SDF>*e*v-Eys5}+~MNoJ;<<)9Un&6JR z%lv}QXLHYyBW%F&QPF;$59ul+c^wK>{n9-sotQgI^R+r2CA^e~lZDv{FWr+bCJrMr zs*W@%BO^ra5!JZr28BQL$kY+s6~}vc|YF2s9EwK z%4eIG^D;l3QxDf34xPS2LEcu+^m-8Vj23uhD4$=f1IDG@%!BpobHSM*gYAMT=Z{%u zj-H1P@v?H&+spq49$w@<=voDrb)#MebANLw;)!E3g@GPwR?B#2EZ?RrKt4}ZQ z7v9+XufA7OU#~xNFMZRiO7-fz_{FWC+Gh{1kJIa}_1WwBz}iQjM-7T7GQoH?lB2vP zjYVx#nqQXnPO;#!y#8(@|2bjxJ`a?+aNNv|0#~nGEc5!qgt{JlB>eA*`_Rk@|Adyh zvKP?)ug0;<=EJ>YFL?>_EJc2~dDv|8FdxRHvvKKMY_&E!<5%bDg{lR6Df6eb6Ya0s T2RYdWutgkD{O0rPM}hwVB*cqf literal 276992 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 M^?(2T+oQn$1A6E#9RL6T diff --git a/1.6/1.6/Defs/MapGeneration/MapGenerator_WULA_PocketSpace_Small.xml b/1.6/1.6/Defs/MapGeneration/MapGenerator_WULA_PocketSpace_Small.xml index 5ac07594..a2472408 100644 --- a/1.6/1.6/Defs/MapGeneration/MapGenerator_WULA_PocketSpace_Small.xml +++ b/1.6/1.6/Defs/MapGeneration/MapGenerator_WULA_PocketSpace_Small.xml @@ -17,7 +17,7 @@

  • Underground_RocksFromGrid
  • Terrain
  • WULA_PocketSpace_Small
  • - +
  • Fog
  • diff --git a/1.6/1.6/Defs/ThingDefs_Buildings/Building_WULA_ArmedShuttleWithPocket.xml b/1.6/1.6/Defs/ThingDefs_Buildings/Building_WULA_ArmedShuttleWithPocket.xml index 21bb662d..4b77b3b7 100644 --- a/1.6/1.6/Defs/ThingDefs_Buildings/Building_WULA_ArmedShuttleWithPocket.xml +++ b/1.6/1.6/Defs/ThingDefs_Buildings/Building_WULA_ArmedShuttleWithPocket.xml @@ -1,9 +1,8 @@ - WULA_ArmedShuttleWithPocket - + An advanced chemfuel-powered shuttle with integrated pocket space technology. Equipped with a defensive turret and internal storage dimension that doesn't require hacking to access. Perfect for long-distance exploration and mobile operations. WulaFallenEmpire.Building_ArmedShuttleWithPocket true @@ -27,28 +26,30 @@ - 6000 - 0.5 - 40000 - 150 - 0.65 + 800 + 0.4 + 60000 + 200 + 0.75 Normal Odyssey - 8 + 10 - 300 - 200 - 8 - 2 + 400 + 300 + 12 + 4 1 + 1 true - 60 - 60 - 5 - 4 + 80 + 90 + 6 + 6 + 1 true true @@ -68,18 +69,30 @@ true
  • ShuttleEngine
  • +
  • VanometricPowerCore
  • - Gun_ChargeBlasterHeavyTurret - 5.5 - 1.75 - (0, 0.05) + Gun_ChargeBlasterAdvancedTurret + 4.5 + 1.0~1.5 + 1.9 + (0, 0.08) + + +
  • + WULA_PocketSpace_Small + WULA_PocketMapExit + (13, 13) + true +
  • +
  • ITab_ContentsTransporter
  • ITab_Shells
  • Shuttles
  • +
  • VoidStructure
  • @@ -121,27 +134,19 @@ true
  • - CompPowerPlant - -400 - true + CompPowerTrader + 200 + false
  • ShuttleIdle_Ambience
  • - -
  • - WULA_PocketSpace_Small - WULA_PocketMapExit - (13, 13) - true -
  • -
  • PlaceWorker_NotUnderRoof
  • PlaceWorker_TurretTop
  • - 2601 + 2602
    @@ -300,15 +305,13 @@ An exit portal that allows return from the pocket space to the main map. WulaFallenEmpire.Building_PocketMapExit - (3,3) + (1,1) MapMeshAndRealTime - Wula/Building/WULA_War_Machine_Recharger - Graphic_Multi - (3,3) + Graphic_Single + Things/Building/Misc/CaveExit/CaveExit + (1,1) - (0,0,0) - Standable 0 @@ -320,11 +323,6 @@
  • UndercaveMapExitLightshafts
  • -
  • - CompPowerPlant - -400 - true -
  • \ No newline at end of file diff --git a/1.6/1.6/Languages/ChineseSimplified/Keyed/WULA_PocketShuttle.xml b/1.6/1.6/Languages/ChineseSimplified/Keyed/WULA_PocketShuttle.xml index 23b9a7eb..0dfffac4 100644 --- a/1.6/1.6/Languages/ChineseSimplified/Keyed/WULA_PocketShuttle.xml +++ b/1.6/1.6/Languages/ChineseSimplified/Keyed/WULA_PocketShuttle.xml @@ -9,15 +9,7 @@ 进入内部空间 - 传送人员到内部空间 进入穿梭机的内部口袋空间。无需骇入即可直接访问。选中的殖民者将被传送到内部空间。 - 创建内部空间 - 创建穿梭机的内部口袋空间。首次使用时需要创建。 - 内部空间创建成功! - 取消进入 - 正在进入... - 查看地图 - 切换到口袋空间地图查看内部情况。 切换到内部空间 直接切换视角到内部口袋空间。适用于已经有殖民者在内部空间时的快速切换。 diff --git a/1.6/1.6/Languages/English/Keyed/WULA_PocketShuttle.xml b/1.6/1.6/Languages/English/Keyed/WULA_PocketShuttle.xml index 5165ca19..22372968 100644 --- a/1.6/1.6/Languages/English/Keyed/WULA_PocketShuttle.xml +++ b/1.6/1.6/Languages/English/Keyed/WULA_PocketShuttle.xml @@ -9,15 +9,7 @@ Enter pocket space - Transport people to pocket space Enter the shuttle's internal pocket space. Direct access without hacking required. Selected colonists will be transported to the internal space. - Create pocket space - Create the shuttle's internal pocket space. Required for first-time use. - Pocket space created successfully! - Cancel enter - Entering... - View map - Switch to pocket space map to view internal conditions. Switch to pocket space Directly switch view to the internal pocket space. Useful for quick switching when colonists are already inside. diff --git a/MCP/vector_cache/knowledge_cache.json b/MCP/vector_cache/knowledge_cache.json index 3a0d95b6..38282d29 100644 --- a/MCP/vector_cache/knowledge_cache.json +++ b/MCP/vector_cache/knowledge_cache.json @@ -2066,5 +2066,3112 @@ ], "result": "--- 结果 1 (相似度: 1.000) ---\n文件路径: C:\\Steam\\steamapps\\common\\RimWorld\\Data\\dll1.6\\Verse\\Verb.txt\n\npublic abstract class Verb : ITargetingSource, IExposable, ILoadReferenceable\n{\n\tpublic VerbProperties verbProps;\n\n\tpublic VerbTracker verbTracker;\n\n\tpublic ManeuverDef maneuver;\n\n\tpublic Tool tool;\n\n\tpublic Thing caster;\n\n\tpublic MechanitorControlGroup controlGroup;\n\n\tpublic string loadID;\n\n\tpublic VerbState state;\n\n\tprotected LocalTargetInfo currentTarget;\n\n\tprotected LocalTargetInfo currentDestination;\n\n\tprotected int burstShotsLeft;\n\n\tprotected int ticksToNextBurstShot;\n\n\tprotected int lastShotTick = -999999;\n\n\tprotected bool surpriseAttack;\n\n\tprotected bool canHitNonTargetPawnsNow = true;\n\n\tpublic bool preventFriendlyFire;\n\n\tprotected bool nonInterruptingSelfCast;\n\n\tpublic Action castCompleteCallback;\n\n\tprivate Texture2D commandIconCached;\n\n\tprivate readonly List> maintainedEffecters = new List>();\n\n\tprivate int? cachedTicksBetweenBurstShots;\n\n\tprivate int? cachedBurstShotCount;\n\n\tprivate static readonly List tempLeanShootSources = new List();\n\n\tprivate static readonly List tempDestList = new List();\n\n\tpublic IVerbOwner DirectOwner => verbTracker.directOwner;\n\n\tpublic ImplementOwnerTypeDef ImplementOwnerType => verbTracker.directOwner.ImplementOwnerTypeDef;\n\n\tpublic CompEquippable EquipmentCompSource => DirectOwner as CompEquippable;\n\n\tpublic CompApparelReloadable ReloadableCompSource => DirectOwner as CompApparelReloadable;\n\n\tpublic CompApparelVerbOwner_Charged VerbOwner_ChargedCompSource => DirectOwner as CompApparelVerbOwner_Charged;\n\n\tpublic ThingWithComps EquipmentSource\n\t{\n\t\tget\n\t\t{\n\t\t\tif (EquipmentCompSource != null)\n\t\t\t{\n\t\t\t\treturn EquipmentCompSource.parent;\n\t\t\t}\n\t\t\tif (ReloadableCompSource != null)\n\t\t\t{\n\t\t\t\treturn ReloadableCompSource.parent;\n\t\t\t}\n\t\t\tif (VerbOwner_ChargedCompSource != null)\n\t\t\t{\n\t\t\t\treturn VerbOwner_ChargedCompSource.parent;\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic HediffComp_VerbGiver HediffCompSource => DirectOwner as HediffComp_VerbGiver;\n\n\tpublic Hediff HediffSource\n\t{\n\t\tget\n\t\t{\n\t\t\tif (HediffCompSource == null)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn HediffCompSource.parent;\n\t\t}\n\t}\n\n\tpublic Pawn_MeleeVerbs_TerrainSource TerrainSource => DirectOwner as Pawn_MeleeVerbs_TerrainSource;\n\n\tpublic TerrainDef TerrainDefSource\n\t{\n\t\tget\n\t\t{\n\t\t\tif (TerrainSource == null)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn TerrainSource.def;\n\t\t}\n\t}\n\n\tpublic virtual Thing Caster => caster;\n\n\tpublic virtual Pawn CasterPawn => caster as Pawn;\n\n\tpublic virtual Verb GetVerb => this;\n\n\tpublic virtual bool CasterIsPawn => caster is Pawn;\n\n\tpublic virtual bool Targetable => verbProps.targetable;\n\n\tpublic virtual bool MultiSelect => false;\n\n\tpublic virtual bool HidePawnTooltips => false;\n\n\tpublic LocalTargetInfo CurrentTarget => currentTarget;\n\n\tpublic LocalTargetInfo CurrentDestination => currentDestination;\n\n\tpublic int LastShotTick => lastShotTick;\n\n\tpublic virtual TargetingParameters targetParams => verbProps.targetParams;\n\n\tpublic virtual ITargetingSource DestinationSelector => null;\n\n\tprotected virtual int ShotsPerBurst => 1;\n\n\tpublic virtual Texture2D UIIcon\n\t{\n\t\tget\n\t\t{\n\t\t\tif (verbProps.commandIcon != null)\n\t\t\t{\n\t\t\t\tif (commandIconCached == null)\n\t\t\t\t{\n\t\t\t\t\tcommandIconCached = ContentFinder.Get(verbProps.commandIcon);\n\t\t\t\t}\n\t\t\t\treturn commandIconCached;\n\t\t\t}\n\t\t\tif (EquipmentSource != null)\n\t\t\t{\n\t\t\t\treturn EquipmentSource.def.uiIcon;\n\t\t\t}\n\t\t\treturn BaseContent.BadTex;\n\t\t}\n\t}\n\n\tpublic bool Bursting => burstShotsLeft > 0;\n\n\tpublic virtual bool IsMeleeAttack => verbProps.IsMeleeAttack;\n\n\tpublic bool BuggedAfterLoading => verbProps == null;\n\n\tpublic bool WarmingUp => WarmupStance != null;\n\n\tpublic Stance_Warmup WarmupStance\n\t{\n\t\tget\n\t\t{\n\t\t\tif (CasterPawn == null || !CasterPawn.Spawned)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tif (!(CasterPawn.stances.curStance is Stance_Warmup stance_Warmup) || stance_Warmup.verb != this)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn stance_Warmup;\n\t\t}\n\t}\n\n\tpublic int WarmupTicksLeft\n\t{\n\t\tget\n\t\t{\n\t\t\tif (WarmupStance == null)\n\t\t\t{\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\treturn WarmupStance.ticksLeft;\n\t\t}\n\t}\n\n\tpublic float WarmupProgress => 1f - WarmupTicksLeft.TicksToSeconds() / verbProps.warmupTime;\n\n\tpublic virtual string ReportLabel => verbProps.label;\n\n\tpublic virtual float EffectiveRange => verbProps.AdjustedRange(this, Caster);\n\n\tpublic virtual float? AimAngleOverride => null;\n\n\tpublic bool NonInterruptingSelfCast\n\t{\n\t\tget\n\t\t{\n\t\t\tif (!verbProps.nonInterruptingSelfCast)\n\t\t\t{\n\t\t\t\treturn nonInterruptingSelfCast;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tpublic int TicksBetweenBurstShots\n\t{\n\t\tget\n\t\t{\n\t\t\tif (!cachedTicksBetweenBurstShots.HasValue)\n\t\t\t{\n\t\t\t\tfloat num = verbProps.ticksBetweenBurstShots;\n\t\t\t\tif (EquipmentSource != null && EquipmentSource.TryGetComp(out var comp))\n\t\t\t\t{\n\t\t\t\t\tforeach (WeaponTraitDef item in comp.TraitsListForReading)\n\t\t\t\t\t{\n\t\t\t\t\t\tnum /= item.burstShotSpeedMultiplier;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcachedTicksBetweenBurstShots = Mathf.RoundToInt(num);\n\t\t\t}\n\t\t\treturn cachedTicksBetweenBurstShots.Value;\n\t\t}\n\t}\n\n\tpublic int BurstShotCount\n\t{\n\t\tget\n\t\t{\n\t\t\tif (!cachedBurstShotCount.HasValue)\n\t\t\t{\n\t\t\t\tfloat num = verbProps.burstShotCount;\n\t\t\t\tif (EquipmentSource != null && EquipmentSource.TryGetComp(out var comp))\n\t\t\t\t{\n\t\t\t\t\tforeach (WeaponTraitDef item in comp.TraitsListForReading)\n\t\t\t\t\t{\n\t\t\t\t\t\tnum *= item.burstShotCountMultiplier;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcachedBurstShotCount = Mathf.CeilToInt(num);\n\t\t\t}\n\t\t\treturn cachedBurstShotCount.Value;\n\t\t}\n\t}\n\n\tpublic bool IsStillUsableBy(Pawn pawn)\n\t{\n\t\tif (!Available())\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t\tif (!DirectOwner.VerbsStillUsableBy(pawn))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t\tif (verbProps.GetDamageFactorFor(this, pawn) == 0f)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t\tif (pawn.IsSubhuman && verbProps.category == VerbCategory.Ignite)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\tpublic virtual bool IsUsableOn(Thing target)\n\t{\n\t\treturn true;\n\t}\n\n\tpublic virtual void ExposeData()\n\t{\n\t\tScribe_Values.Look(ref loadID, \"loadID\");\n\t\tScribe_Values.Look(ref state, \"state\", VerbState.Idle);\n\t\tScribe_TargetInfo.Look(ref currentTarget, \"currentTarget\");\n\t\tScribe_TargetInfo.Look(ref currentDestination, \"currentDestination\");\n\t\tScribe_Values.Look(ref burstShotsLeft, \"burstShotsLeft\", 0);\n\t\tScribe_Values.Look(ref ticksToNextBurstShot, \"ticksToNextBurstShot\", 0);\n\t\tScribe_Values.Look(ref lastShotTick, \"lastShotTick\", 0);\n\t\tScribe_Values.Look(ref surpriseAttack, \"surpriseAttack\", defaultValue: false);\n\t\tScribe_Values.Look(ref canHitNonTargetPawnsNow, \"canHitNonTargetPawnsNow\", defaultValue: false);\n\t\tScribe_Values.Look(ref preventFriendlyFire, \"preventFriendlyFire\", defaultValue: false);\n\t\tScribe_Values.Look(ref nonInterruptingSelfCast, \"nonInterruptingSelfCast\", defaultValue: false);\n\t}\n\n\tpublic string GetUniqueLoadID()\n\t{\n\t\treturn \"Verb_\" + loadID;\n\t}\n\n\tpublic static string CalculateUniqueLoadID(IVerbOwner owner, Tool tool, ManeuverDef maneuver)\n\t{\n\t\treturn string.Format(\"{0}_{1}_{2}\", owner.UniqueVerbOwnerID(), (tool != null) ? tool.id : \"NT\", (maneuver != null) ? maneuver.defName : \"NM\");\n\t}\n\n\tpublic static string CalculateUniqueLoadID(IVerbOwner owner, int index)\n\t{\n\t\treturn $\"{owner.UniqueVerbOwnerID()}_{index}\";\n\t}\n\n\tpublic bool TryStartCastOn(LocalTargetInfo castTarg, bool surpriseAttack = false, bool canHitNonTargetPawns = true, bool preventFriendlyFire = false, bool nonInterruptingSelfCast = false)\n\t{\n\t\treturn TryStartCastOn(castTarg, LocalTargetInfo.Invalid, surpriseAttack, canHitNonTargetPawns, preventFriendlyFire, nonInterruptingSelfCast);\n\t}\n\n\tpublic virtual bool TryStartCastOn(LocalTargetInfo castTarg, LocalTargetInfo destTarg, bool surpriseAttack = false, bool canHitNonTargetPawns = true, bool preventFriendlyFire = false, bool nonInterruptingSelfCast = false)\n\t{\n\t\tif (caster == null)\n\t\t{\n\t\t\tLog.Error(\"Verb \" + GetUniqueLoadID() + \" needs caster to work (possibly lost during saving/loading).\");\n\t\t\treturn false;\n\t\t}\n\t\tif (!caster.Spawned)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t\tif (state == VerbState.Bursting || !CanHitTarget(castTarg))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t\tif (CausesTimeSlowdown(castTarg))\n\t\t{\n\t\t\tFind.TickManager.slower.SignalForceNormalSpeed();\n\t\t}\n\t\tthis.surpriseAttack = surpriseAttack;\n\t\tcanHitNonTargetPawnsNow = canHitNonTargetPawns;\n\t\tthis.preventFriendlyFire = preventFriendlyFire;\n\t\tthis.nonInterruptingSelfCast = nonInterruptingSelfCast;\n\t\tcurrentTarget = castTarg;\n\t\tcurrentDestination = destTarg;\n\t\tif (CasterIsPawn && verbProps.warmupTime > 0f)\n\t\t{\n\t\t\tif (!TryFindShootLineFromTo(caster.Position, castTarg, out var resultingLine))\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tCasterPawn.Drawer.Notify_WarmingCastAlongLine(resultingLine, caster.Position);\n\t\t\tfloat statValue = CasterPawn.GetStatValue(StatDefOf.AimingDelayFactor);\n\t\t\tint ticks = (verbProps.warmupTime * statValue).SecondsToTicks();\n\t\t\tCasterPawn.stances.SetStance(new Stance_Warmup(ticks, castTarg, this));\n\t\t\tif (verbProps.stunTargetOnCastStart && castTarg.Pawn != null)\n\t\t\t{\n\t\t\t\tcastTarg.Pawn.stances.stunner.StunFor(ticks, null, addBattleLog: false);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (verbTracker.directOwner is Ability ability)\n\t\t\t{\n\t\t\t\tability.lastCastTick = Find.TickManager.TicksGame;\n\t\t\t}\n\t\t\tWarmupComplete();\n\t\t}\n\t\treturn true;\n\t}\n\n\tpublic virtual void WarmupComplete()\n\t{\n\t\tburstShotsLeft = ShotsPerBurst;\n\t\tstate = VerbState.Bursting;\n\t\tTryCastNextBurstShot();\n\t}\n\n\tpublic void VerbTick()\n\t{\n\t\tif (state == VerbState.Bursting)\n\t\t{\n\t\t\tif (!caster.Spawned || (caster is Pawn pawn && pawn.stances.stunner.Stunned))\n\t\t\t{\n\t\t\t\tReset();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tticksToNextBurstShot--;\n\t\t\t\tif (ticksToNextBurstShot <= 0)\n\t\t\t\t{\n\t\t\t\t\tTryCastNextBurstShot();\n\t\t\t\t}\n\t\t\t\tBurstingTick();\n\t\t\t}\n\t\t}\n\t\tfor (int num = maintainedEffecters.Count - 1; num >= 0; num--)\n\t\t{\n\t\t\tEffecter item = maintainedEffecters[num].Item1;\n\t\t\tif (item.ticksLeft > 0)\n\t\t\t{\n\t\t\t\tTargetInfo item2 = maintainedEffecters[num].Item2;\n\t\t\t\tTargetInfo item3 = maintainedEffecters[num].Item3;\n\t\t\t\titem.EffectTick(item2, item3);\n\t\t\t\titem.ticksLeft--;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\titem.Cleanup();\n\t\t\t\tmaintainedEffecters.RemoveAt(num);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic virtual void BurstingTick()\n\t{\n\t}\n\n\tpublic void AddEffecterToMaintain(Effecter eff, IntVec3 pos, int ticks, Map map = null)\n\t{\n\t\teff.ticksLeft = ticks;\n\t\tTargetInfo targetInfo = new TargetInfo(pos, map ?? caster.Map);\n\t\tmaintainedEffecters.Add(new Tuple(eff, targetInfo, targetInfo));\n\t}\n\n\tpublic void AddEffecterToMaintain(Effecter eff, IntVec3 posA, IntVec3 posB, int ticks, Map map = null)\n\t{\n\t\teff.ticksLeft = ticks;\n\t\tTargetInfo item = new TargetInfo(posA, map ?? caster.Map);\n\t\tTargetInfo item2 = new TargetInfo(posB, map ?? caster.Map);\n\t\tmaintainedEffecters.Add(new Tuple(eff, item, item2));\n\t}\n\n\tpublic virtual bool Available()\n\t{\n\t\tif (verbProps.consumeFuelPerShot > 0f)\n\t\t{\n\t\t\tCompRefuelable compRefuelable = caster.TryGetComp();\n\t\t\tif (compRefuelable != null && compRefuelable.Fuel < verbProps.consumeFuelPerShot)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\tCompApparelVerbOwner compApparelVerbOwner = EquipmentSource?.GetComp();\n\t\tif (compApparelVerbOwner != null && !compApparelVerbOwner.CanBeUsed(out var reason))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t\tif (CasterIsPawn && EquipmentSource != null && EquipmentUtility.RolePreventsFromUsing(CasterPawn, EquipmentSource, out reason))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\tprotected void TryCastNextBurstShot()\n\t{\n\t\tLocalTargetInfo localTargetInfo = currentTarget;\n\t\tif (Available() && TryCastShot())\n\t\t{\n\t\t\tif (verbProps.muzzleFlashScale > 0.01f)\n\t\t\t{\n\t\t\t\tFleckMaker.Static(caster.Position, caster.Map, FleckDefOf.ShotFlash, verbProps.muzzleFlashScale);\n\t\t\t}\n\t\t\tif (verbProps.soundCast != null)\n\t\t\t{\n\t\t\t\tverbProps.soundCast.PlayOneShot(new TargetInfo(caster.Position, caster.MapHeld));\n\t\t\t}\n\t\t\tif (verbProps.soundCastTail != null)\n\t\t\t{\n\t\t\t\tverbProps.soundCastTail.PlayOneShotOnCamera(caster.Map);\n\t\t\t}\n\t\t\tif (CasterIsPawn)\n\t\t\t{\n\t\t\t\tCasterPawn.Notify_UsedVerb(CasterPawn, this);\n\t\t\t\tif (CasterPawn.thinker != null && localTargetInfo == CasterPawn.mindState.enemyTarget)\n\t\t\t\t{\n\t\t\t\t\tCasterPawn.mindState.Notify_EngagedTarget();\n\t\t\t\t}\n\t\t\t\tif (CasterPawn.mindState != null)\n\t\t\t\t{\n\t\t\t\t\tCasterPawn.mindState.Notify_AttackedTarget(localTargetInfo);\n\t\t\t\t}\n\t\t\t\tif (CasterPawn.MentalState != null)\n\t\t\t\t{\n\t\t\t\t\tCasterPawn.MentalState.Notify_AttackedTarget(localTargetInfo);\n\t\t\t\t}\n\t\t\t\tif (TerrainDefSource != null)\n\t\t\t\t{\n\t\t\t\t\tCasterPawn.meleeVerbs.Notify_UsedTerrainBasedVerb();\n\t\t\t\t}\n\t\t\t\tif (CasterPawn.health != null)\n\t\t\t\t{\n\t\t\t\t\tCasterPawn.health.Notify_UsedVerb(this, localTargetInfo);\n\t\t\t\t}\n\t\t\t\tif (EquipmentSource != null)\n\t\t\t\t{\n\t\t\t\t\tEquipmentSource.Notify_UsedWeapon(CasterPawn);\n\t\t\t\t}\n\t\t\t\tif (!CasterPawn.Spawned)\n\t\t\t\t{\n\t\t\t\t\tReset();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (verbProps.consumeFuelPerShot > 0f)\n\t\t\t{\n\t\t\t\tcaster.TryGetComp()?.ConsumeFuel(verbProps.consumeFuelPerShot);\n\t\t\t}\n\t\t\tburstShotsLeft--;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tburstShotsLeft = 0;\n\t\t}\n\t\tif (burstShotsLeft > 0)\n\t\t{\n\t\t\tticksToNextBurstShot = TicksBetweenBurstShots;\n\t\t\tif (CasterIsPawn && !NonInterruptingSelfCast)\n\t\t\t{\n\t\t\t\tCasterPawn.stances.SetStance(new Stance_Cooldown(TicksBetweenBurstShots + 1, currentTarget, this));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tstate = VerbState.Idle;\n\t\tif (CasterIsPawn && !NonInterruptingSelfCast)\n\t\t{\n\t\t\tCasterPawn.stances.SetStance(new Stance_Cooldown(verbProps.AdjustedCooldownTicks(this, CasterPawn), currentTarget, this));\n\t\t}\n\t\tif (castCompleteCallback != null)\n\t\t{\n\t\t\tcastCompleteCallback();\n\t\t}\n\t\tif (verbProps.consumeFuelPerBurst > 0f)\n\t\t{\n\t\t\tcaster.TryGetComp()?.ConsumeFuel(verbProps.consumeFuelPerBurst);\n\t\t}\n\t}\n\n\tpublic virtual void OrderForceTarget(LocalTargetInfo target)\n\t{\n\t\tif (verbProps.IsMeleeAttack)\n\t\t{\n\t\t\tJob job = JobMaker.MakeJob(JobDefOf.AttackMelee, target);\n\t\t\tjob.playerForced = true;\n\t\t\tif (target.Thing is Pawn pawn)\n\t\t\t{\n\t\t\t\tjob.killIncappedTarget = pawn.Downed;\n\t\t\t}\n\t\t\tCasterPawn.jobs.TryTakeOrderedJob(job, JobTag.Misc);\n\t\t\treturn;\n\t\t}\n\t\tfloat num = verbProps.EffectiveMinRange(target, CasterPawn);\n\t\tif ((float)CasterPawn.Position.DistanceToSquared(target.Cell) < num * num && CasterPawn.Position.AdjacentTo8WayOrInside(target.Cell))\n\t\t{\n\t\t\tMessages.Message(\"MessageCantShootInMelee\".Translate(), CasterPawn, MessageTypeDefOf.RejectInput, historical: false);\n\t\t\treturn;\n\t\t}\n\t\tJob job2 = JobMaker.MakeJob(verbProps.ai_IsWeapon ? JobDefOf.AttackStatic : JobDefOf.UseVerbOnThing);\n\t\tjob2.verbToUse = this;\n\t\tjob2.targetA = target;\n\t\tjob2.endIfCantShootInMelee = true;\n\t\tCasterPawn.jobs.TryTakeOrderedJob(job2, JobTag.Misc);\n\t}\n\n\tprotected abstract bool TryCastShot();\n\n\tpublic void Notify_PickedUp()\n\t{\n\t\tReset();\n\t}\n\n\tpublic virtual void Reset()\n\t{\n\t\tstate = VerbState.Idle;\n\t\tcurrentTarget = null;\n\t\tcurrentDestination = null;\n\t\tburstShotsLeft = 0;\n\t\tticksToNextBurstShot = 0;\n\t\tcastCompleteCallback = null;\n\t\tsurpriseAttack = false;\n\t\tpreventFriendlyFire = false;\n\t}\n\n\tpublic virtual void Notify_EquipmentLost()\n\t{\n\t\tif (!CasterIsPawn)\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tPawn casterPawn = CasterPawn;\n\t\tif (casterPawn.Spawned)\n\t\t{\n\t\t\tif (casterPawn.stances.curStance is Stance_Warmup stance_Warmup && stance_Warmup.verb == this)\n\t\t\t{\n\t\t\t\tcasterPawn.stances.CancelBusyStanceSoft();\n\t\t\t}\n\t\t\tif (casterPawn.CurJob != null && casterPawn.CurJob.def == JobDefOf.AttackStatic)\n\t\t\t{\n\t\t\t\tcasterPawn.jobs.EndCurrentJob(JobCondition.Incompletable);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic virtual float HighlightFieldRadiusAroundTarget(out bool needLOSToCenter)\n\t{\n\t\tneedLOSToCenter = false;\n\t\treturn 0f;\n\t}\n\n\tprivate bool CausesTimeSlowdown(LocalTargetInfo castTarg)\n\t{\n\t\tif (!verbProps.CausesTimeSlowdown)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t\tif (!castTarg.HasThing)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t\tThing thing = castTarg.Thing;\n\t\tif (thing.def.category != ThingCategory.Pawn && (thing.def.building == null || !thing.def.building.IsTurret))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t\tPawn pawn = thing as Pawn;\n\t\tbool flag = pawn?.Downed ?? false;\n\t\tif ((CasterPawn != null && CasterPawn.Faction == Faction.OfPlayer && CasterPawn.IsShambler) || (pawn != null && pawn.Faction == Faction.OfPlayer && pawn.IsShambler))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t\tif (thing.Faction != Faction.OfPlayer || !caster.HostileTo(Faction.OfPlayer))\n\t\t{\n\t\t\tif (caster.Faction == Faction.OfPlayer && thing.HostileTo(Faction.OfPlayer))\n\t\t\t{\n\t\t\t\treturn !flag;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\tpublic virtual bool CanHitTarget(LocalTargetInfo targ)\n\t{\n\t\tif (caster == null || !caster.Spawned)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t\tif (targ == caster)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t\treturn CanHitTargetFrom(caster.Position, targ);\n\t}\n\n\tpublic virtual bool ValidateTarget(LocalTargetInfo target, bool showMessages = true)\n\t{\n\t\tif (CasterIsPawn && target.Thing is Pawn p && (p.InSameExtraFaction(caster as Pawn, ExtraFactionType.HomeFaction) || p.InSameExtraFaction(caster as Pawn, ExtraFactionType.MiniFaction)))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t\tif (CasterIsPawn && target.Thing is Pawn victim && HistoryEventUtility.IsKillingInnocentAnimal(CasterPawn, victim) && !new HistoryEvent(HistoryEventDefOf.KilledInnocentAnimal, CasterPawn.Named(HistoryEventArgsNames.Doer)).Notify_PawnAboutToDo())\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t\tif (CasterIsPawn && target.Thing is Pawn pawn && CasterPawn.Ideo != null && CasterPawn.Ideo.IsVeneratedAnimal(pawn) && !new HistoryEvent(HistoryEventDefOf.HuntedVeneratedAnimal, CasterPawn.Named(HistoryEventArgsNames.Doer)).Notify_PawnAboutToDo())\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\tpublic virtual void DrawHighlight(LocalTargetInfo target)\n\t{\n\t\tverbProps.DrawRadiusRing(caster.Position, this);\n\t\tif (target.IsValid)\n\t\t{\n\t\t\tGenDraw.DrawTargetHighlight(target);\n\t\t\tDrawHighlightFieldRadiusAroundTarget(target);\n\t\t}\n\t}\n\n\tprotected void DrawHighlightFieldRadiusAroundTarget(LocalTargetInfo target)\n\t{\n\t\tbool needLOSToCenter;\n\t\tfloat num = HighlightFieldRadiusAroundTarget(out needLOSToCenter);\n\t\tif (!(num > 0.2f) || !TryFindShootLineFromTo(caster.Position, target, out var resultingLine))\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tif (needLOSToCenter)\n\t\t{\n\t\t\tGenExplosion.RenderPredictedAreaOfEffect(resultingLine.Dest, num, verbProps.explosionRadiusRingColor);\n\t\t\treturn;\n\t\t}\n\t\tGenDraw.DrawFieldEdges((from x in GenRadial.RadialCellsAround(resultingLine.Dest, num, useCenter: true)\n\t\t\twhere x.InBounds(Find.CurrentMap)\n\t\t\tselect x).ToList(), verbProps.explosionRadiusRingColor);\n\t}\n\n\tpublic virtual void OnGUI(LocalTargetInfo target)\n\t{\n\t\tTexture2D icon = ((!target.IsValid) ? TexCommand.CannotShoot : ((!(UIIcon != BaseContent.BadTex)) ? TexCommand.Attack : UIIcon));\n\t\tGenUI.DrawMouseAttachment(icon);\n\t}\n\n\tpublic virtual bool CanHitTargetFrom(IntVec3 root, LocalTargetInfo targ)\n\t{\n\t\tif (targ.Thing != null && targ.Thing == caster)\n\t\t{\n\t\t\treturn targetParams.canTargetSelf;\n\t\t}\n\t\tif (targ.Pawn != null && targ.Pawn.IsPsychologicallyInvisible() && caster.HostileTo(targ.Pawn))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t\tif (ApparelPreventsShooting())\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t\tShootLine resultingLine;\n\t\treturn TryFindShootLineFromTo(root, targ, out resultingLine);\n\t}\n\n\tpublic bool ApparelPreventsShooting()\n\t{\n\t\treturn FirstApparelPreventingShooting() != null;\n\t}\n\n\tpublic Apparel FirstApparelPreventingShooting()\n\t{\n\t\tif (CasterIsPawn && CasterPawn.apparel != null)\n\t\t{\n\t\t\tList wornApparel = CasterPawn.apparel.WornApparel;\n\t\t\tfor (int i = 0; i < wornApparel.Count; i++)\n\t\t\t{\n\t\t\t\tif (!wornApparel[i].AllowVerbCast(this))\n\t\t\t\t{\n\t\t\t\t\treturn wornApparel[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic bool TryFindShootLineFromTo(IntVec3 root, LocalTargetInfo targ, out ShootLine resultingLine, bool ignoreRange = false)\n\t{\n\t\tif (targ.HasThing && targ.Thing.Map != caster.Map)\n\t\t{\n\t\t\tresultingLine = default(ShootLine);\n\t\t\treturn false;\n\t\t}\n\t\tif (verbProps.IsMeleeAttack || EffectiveRange <= 1.42f)\n\t\t{\n\t\t\tresultingLine = new ShootLine(root, targ.Cell);\n\t\t\treturn ReachabilityImmediate.CanReachImmediate(root, targ, caster.Map, PathEndMode.Touch, null);\n\t\t}\n\t\tCellRect occupiedRect = (targ.HasThing ? targ.Thing.OccupiedRect() : CellRect.SingleCell(targ.Cell));\n\t\tif (!ignoreRange && OutOfRange(root, targ, occupiedRect))\n\t\t{\n\t\t\tresultingLine = new ShootLine(root, targ.Cell);\n\t\t\treturn false;\n\t\t}\n\t\tif (!verbProps.requireLineOfSight)\n\t\t{\n\t\t\tresultingLine = new ShootLine(root, targ.Cell);\n\t\t\treturn true;\n\t\t}\n\t\tIntVec3 goodDest;\n\t\tif (CasterIsPawn)\n\t\t{\n\t\t\tif (CanHitFromCellIgnoringRange(root, targ, out goodDest))\n\t\t\t{\n\t\t\t\tresultingLine = new ShootLine(root, goodDest);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tShootLeanUtility.LeanShootingSourcesFromTo(root, occupiedRect.ClosestCellTo(root), caster.Map, tempLeanShootSources);\n\t\t\tfor (int i = 0; i < tempLeanShootSources.Count; i++)\n\t\t\t{\n\t\t\t\tIntVec3 intVec = tempLeanShootSources[i];\n\t\t\t\tif (CanHitFromCellIgnoringRange(intVec, targ, out goodDest))\n\t\t\t\t{\n\t\t\t\t\tresultingLine = new ShootLine(intVec, goodDest);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tforeach (IntVec3 item in caster.OccupiedRect())\n\t\t\t{\n\t\t\t\tif (CanHitFromCellIgnoringRange(item, targ, out goodDest))\n\t\t\t\t{\n\t\t\t\t\tresultingLine = new ShootLine(item, goodDest);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tresultingLine = new ShootLine(root, targ.Cell);\n\t\treturn false;\n\t}\n\n\tpublic bool OutOfRange(IntVec3 root, LocalTargetInfo targ, CellRect occupiedRect)\n\t{\n\t\tfloat num = verbProps.EffectiveMinRange(targ, caster);\n\t\tfloat num2 = occupiedRect.ClosestDistSquaredTo(root);\n\t\tif (num2 > EffectiveRange * EffectiveRange || num2 < num * num)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tprivate bool CanHitFromCellIgnoringRange(IntVec3 sourceCell, LocalTargetInfo targ, out IntVec3 goodDest)\n\t{\n\t\tif (targ.Thing != null)\n\t\t{\n\t\t\tif (targ.Thing.Map != caster.Map)\n\t\t\t{\n\t\t\t\tgoodDest = IntVec3.Invalid;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tShootLeanUtility.CalcShootableCellsOf(tempDestList, targ.Thing, sourceCell);\n\t\t\tfor (int i = 0; i < tempDestList.Count; i++)\n\t\t\t{\n\t\t\t\tif (CanHitCellFromCellIgnoringRange(sourceCell, tempDestList[i], targ.Thing.def.Fillage == FillCategory.Full))\n\t\t\t\t{\n\t\t\t\t\tgoodDest = tempDestList[i];\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse if (CanHitCellFromCellIgnoringRange(sourceCell, targ.Cell))\n\t\t{\n\t\t\tgoodDest = targ.Cell;\n\t\t\treturn true;\n\t\t}\n\t\tgoodDest = IntVec3.Invalid;\n\t\treturn false;\n\t}\n\n\tprivate bool CanHitCellFromCellIgnoringRange(IntVec3 sourceSq, IntVec3 targetLoc, bool includeCorners = false)\n\t{\n\t\tif (verbProps.mustCastOnOpenGround && (!targetLoc.Standable(caster.Map) || caster.Map.thingGrid.CellContains(targetLoc, ThingCategory.Pawn)))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t\tif (verbProps.requireLineOfSight)\n\t\t{\n\t\t\tif (!includeCorners)\n\t\t\t{\n\t\t\t\tif (!GenSight.LineOfSight(sourceSq, targetLoc, caster.Map, skipFirstCell: true))\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (!GenSight.LineOfSightToEdges(sourceSq, targetLoc, caster.Map, skipFirstCell: true))\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\tpublic override string ToString()\n\t{\n\t\tstring text = ((verbProps == null) ? \"null\" : ((!verbProps.label.NullOrEmpty()) ? verbProps.label : ((HediffCompSource != null) ? HediffCompSource.Def.label : ((EquipmentSource != null) ? EquipmentSource.def.label : ((verbProps.AdjustedLinkedBodyPartsGroup(tool) == null) ? \"unknown\" : verbProps.AdjustedLinkedBodyPartsGroup(tool).defName)))));\n\t\tif (tool != null)\n\t\t{\n\t\t\ttext = text + \"/\" + loadID;\n\t\t}\n\t\treturn $\"{GetType()}({text})\";\n\t}\n}\n\n", "timestamp": "2025-08-22 19:48:28,843" + }, + "Game-deactivate-map-remove": { + "keywords": [ + "Game", + "remove", + "deactivate", + "map" + ], + "question": "Game method to remove or deactivate map", + "embedding": [ + 0.01010276097804308, + 0.04111691564321518, + 0.04461685195565224, + -0.02886713296175003, + 0.013801224529743195, + 0.0027187014929950237, + 0.035852301865816116, + 0.004981528967618942, + 0.02548483945429325, + 0.07429279386997223, + -0.010308640077710152, + -0.02255842089653015, + -0.0016626542201265693, + -0.044087450951337814, + -0.014007103629410267, + 0.07705745100975037, + -0.02239665947854519, + -0.09217482805252075, + -0.04320511221885681, + 0.030264167115092278, + -0.0046690343879163265, + 0.00877190288156271, + 0.0016488677356392145, + -0.016955580562353134, + -0.05417550727725029, + -0.044440384954214096, + 0.04485214129090309, + 0.0741751492023468, + -0.02404368855059147, + 0.0012398676481097937, + 0.03938165307044983, + -0.015926187857985497, + 0.03323470056056976, + -0.03444056212902069, + 0.05488137528300285, + 0.039881642907857895, + -0.047557976096868515, + 0.0025440724566578865, + 0.0316464938223362, + 0.028573021292686462, + -0.04741092026233673, + 0.00025367195485159755, + -0.010043938644230366, + 0.024146629497408867, + 0.017014402896165848, + 0.02604365348815918, + 0.03352881595492363, + -0.07782214134931564, + -0.038793426007032394, + -0.00936012715101242, + 0.003926400560885668, + 0.030675923451781273, + 0.0277642123401165, + -0.015867363661527634, + 0.01356593519449234, + 0.040352221578359604, + 0.011220388114452362, + -0.01238213200122118, + -0.04288158938288689, + 0.005411668214946985, + 0.020058466121554375, + 0.019396713003516197, + -0.014970321208238602, + -0.002266503870487213, + 0.029822997748851776, + -0.032764121890068054, + -0.026278944686055183, + -0.03664640709757805, + -0.008720433339476585, + -0.02264665625989437, + 0.021705495193600655, + -0.00044783210614696145, + 0.015735013410449028, + -0.014676209539175034, + -0.020131994038820267, + -0.0227643009275198, + -0.027734799310564995, + -0.011985080316662788, + 0.011521853506565094, + -0.015661485493183136, + -0.01872025430202484, + 0.015146789140999317, + -0.014985027723014355, + 0.03655817359685898, + -0.009124837815761566, + 0.035205256193876266, + 0.03655817359685898, + 0.0032683240715414286, + -0.02539660595357418, + 0.06717527657747269, + -0.006963111460208893, + -0.0019595238845795393, + -0.005496225785464048, + -0.014029162004590034, + -0.003867578227072954, + -0.03544054552912712, + -0.026440706104040146, + -0.008014563471078873, + 0.00831602793186903, + 0.020396696403622627, + 0.0045771244913339615, + -0.039234597235918045, + 0.000669105735141784, + 0.05849895998835564, + -0.005992540158331394, + 0.03846990317106247, + -0.030175933614373207, + 0.012411544099450111, + -0.008499848656356335, + -0.006010922137647867, + -0.013779166154563427, + -0.04249924421310425, + -0.017117341980338097, + 0.020881980657577515, + -0.005371227860450745, + 0.028367141261696815, + 0.04129338264465332, + -0.0033492050133645535, + -0.03938165307044983, + 0.010404226370155811, + 0.048646192997694016, + -0.03699934110045433, + -0.02702893130481243, + -0.0349111445248127, + 0.013418878428637981, + -0.02138197235763073, + 0.028705371543765068, + -0.0007242517895065248, + -0.024426035583019257, + -0.01616147719323635, + -0.00188967224676162, + -0.0023731195833534002, + -0.028940660879015923, + 0.010058644227683544, + -0.07723391801118851, + -0.006213124841451645, + -0.005422697402536869, + -0.03670522943139076, + -0.04429332911968231, + 0.046910930424928665, + -0.0006314225611276925, + -0.00188967224676162, + -0.013367408886551857, + -0.0191908348351717, + 0.08382203429937363, + -0.01022775936871767, + -0.07399868220090866, + 0.014455624856054783, + -0.015926187857985497, + -0.004738886374980211, + 0.01973494328558445, + -0.023881927132606506, + -0.019749648869037628, + 0.03070533648133278, + -0.016955580562353134, + -0.004209483973681927, + -0.0048932950012385845, + -0.06805761158466339, + 0.013286528177559376, + -0.026102475821971893, + -0.009249835275113583, + -0.0033436904195696115, + -0.043705105781555176, + -0.00917630735784769, + 0.03670522943139076, + 0.010293934494256973, + -0.019249657168984413, + 0.03799932450056076, + -0.035028789192438126, + -0.03429350629448891, + -0.008139560930430889, + 0.03358763828873634, + -0.041705138981342316, + 0.04623446986079216, + 0.04835208132863045, + -0.027881857007741928, + 0.011661557480692863, + 0.05776367709040642, + -0.02045551873743534, + -0.05988128483295441, + 0.0754692479968071, + 0.021499617025256157, + 0.09599828720092773, + -0.01745557226240635, + -0.011190976947546005, + -0.03161708265542984, + 0.013293880969285965, + 0.10029233247041702, + -0.0032867062836885452, + 0.019337890669703484, + -0.03188178688287735, + 0.04979323223233223, + 0.029720058664679527, + 0.006705762818455696, + -0.028117146342992783, + -0.04094044864177704, + -0.0035367016680538654, + 0.005356522276997566, + -0.015293844975531101, + 0.007349133957177401, + 0.008793961256742477, + 0.03185237571597099, + 0.039616942405700684, + -0.02511719986796379, + -0.0016001553740352392, + -0.023587815463542938, + -0.009014545008540154, + -0.03079356998205185, + 0.028925955295562744, + -0.015146789140999317, + 0.07617511600255966, + 0.009198365733027458, + 0.005014616530388594, + -0.015396784991025925, + -0.011279210448265076, + -0.013940928503870964, + -0.019690826535224915, + -0.018661431968212128, + -0.01357328798621893, + 0.006341798696666956, + 0.005150643642991781, + 0.022043725475668907, + 0.026470117270946503, + 0.006091803312301636, + 0.03899930417537689, + -0.03826402500271797, + 0.044999197125434875, + 0.008205736055970192, + 0.021073153242468834, + 0.07052815705537796, + 0.011227740906178951, + -0.0010716720717027783, + 0.0227643009275198, + -0.02367604896426201, + -0.012088020332157612, + -0.0035017759073525667, + -0.022779006510972977, + -0.004834472667425871, + -0.008896900340914726, + 0.048646192997694016, + 0.010110113769769669, + 0.04955793917179108, + -0.016382060945034027, + 0.04732268676161766, + -0.01972023770213127, + -0.061704784631729126, + -0.025631897151470184, + -0.002301429631188512, + 0.026543645188212395, + -0.0016415149439126253, + 0.025014260783791542, + 0.0334111712872982, + 0.0022922386415302753, + -0.05035204440355301, + 0.018205558881163597, + 0.005238877143710852, + 0.005106526892632246, + -0.014426213689148426, + 0.044646263122558594, + -0.046175647526979446, + -0.0033933219965547323, + 0.015132083557546139, + -0.040616922080516815, + 0.05305787920951843, + -0.05994011089205742, + 0.022617245092988014, + -0.008301322348415852, + 0.026249531656503677, + -0.048734426498413086, + -0.08358674496412277, + 0.004459479358047247, + 0.0045771244913339615, + 0.017205575481057167, + -0.011485089547932148, + -0.017058519646525383, + 0.012999768368899822, + 0.01635264977812767, + 0.0372934527695179, + 0.0010330697987228632, + -0.03664640709757805, + -0.029278891161084175, + 0.010676280595362186, + 0.0239554550498724, + -0.016955580562353134, + 0.037616975605487823, + 0.04985205456614494, + 0.04264630004763603, + -0.013176236301660538, + -0.004768297541886568, + 0.02476426400244236, + -0.0028124498203396797, + 0.015514429658651352, + -0.004110220819711685, + 0.02111727185547352, + -0.00584548432379961, + -0.007801331579685211, + -0.06323416531085968, + 0.052763767540454865, + -0.0237495768815279, + -0.012499777600169182, + -0.024970144033432007, + -0.00959541741758585, + 0.01636735536158085, + 0.011948316358029842, + 0.06917523592710495, + -0.04446979612112045, + -0.025970125570893288, + -0.08552788943052292, + 0.036499351263046265, + -0.07235164940357208, + 0.025293666869401932, + 0.014815912581980228, + -0.043352168053388596, + 0.0015606340020895004, + -0.018617315217852592, + 0.019132012501358986, + -0.04141102731227875, + 0.006396945100277662, + 1.3176178072171751e-05, + 0.0420580729842186, + -0.011749790981411934, + -0.04523449018597603, + -0.0466168187558651, + 0.0050072637386620045, + 0.008918958716094494, + -0.03826402500271797, + 0.02247018739581108, + 0.017984973266720772, + -0.003608391620218754, + -0.032764121890068054, + 0.0008487900486215949, + 0.014815912581980228, + -0.04011693224310875, + -0.014962968416512012, + -0.055528424680233, + 0.0007311450899578631, + 0.01023511216044426, + -0.03352881595492363, + 0.02074963040649891, + -0.007062374148517847, + -0.007316046394407749, + -0.028278907760977745, + -0.031293559819459915, + 0.020352579653263092, + 0.019411418586969376, + 0.02613188698887825, + 0.006069744937121868, + 0.01901436783373356, + 0.04785208776593208, + 0.013874753378331661, + -0.030999448150396347, + 0.014521799981594086, + 0.005275641568005085, + 0.01644088327884674, + 0.02294076792895794, + -0.06905759125947952, + -0.01598501019179821, + -0.005349169485270977, + -0.0602930448949337, + 0.009382185526192188, + -0.006981493439525366, + 0.03191119804978371, + -0.006301358342170715, + 0.0557343028485775, + 0.05852837115526199, + -0.005555048119276762, + 0.01599971577525139, + 0.04082280397415161, + 0.025558369234204292, + 0.008433673530817032, + 0.0033933219965547323, + -0.04820502549409866, + 0.06276358664035797, + 0.027014225721359253, + -0.04649917036294937, + 0.08605729043483734, + 0.032205309718847275, + -0.016014421358704567, + -0.0035128050949424505, + 0.006080774124711752, + 0.015279139392077923, + 0.03044063411653042, + -0.03496996685862541, + -0.09611593186855316, + -0.010014527477324009, + -0.017779095098376274, + -0.01964670978486538, + 0.0026856139302253723, + 0.02704363688826561, + -0.058793071657419205, + 0.05555783584713936, + 0.005374904256314039, + -0.01745557226240635, + -0.011602734215557575, + -0.03829343616962433, + 0.0063638570718467236, + -0.01891142874956131, + 0.06911641359329224, + -0.01342623122036457, + -0.01717616431415081, + -0.02420545183122158, + -0.006444738246500492, + 0.005492549389600754, + -0.02648482285439968, + 0.03299941122531891, + 0.013786518946290016, + 0.053851980715990067, + -0.04732268676161766, + -0.025631897151470184, + -0.02238195389509201, + -0.02467603050172329, + -0.013462995178997517, + -0.0059153358452022076, + 0.06970464438199997, + -0.051204971969127655, + -0.01617618277668953, + 0.005466814618557692, + -0.002145182341337204, + 0.015161494724452496, + 0.058146022260189056, + 0.0031543555669486523, + 0.01608794927597046, + -0.06364592909812927, + -0.004698445554822683, + -0.03355822712182999, + 0.03185237571597099, + 0.07558689266443253, + 0.0034080275800079107, + -0.0016727643087506294, + 0.05964599549770355, + 0.012654186226427555, + -0.00876455008983612, + -0.02476426400244236, + 0.07205753773450851, + -0.001085458556190133, + -0.04067574441432953, + 0.0037058163434267044, + -0.04202866181731224, + -0.025440722703933716, + 0.004345510620623827, + -0.017382042482495308, + -0.00714693171903491, + -0.03464644029736519, + -0.010477754287421703, + -0.030175933614373207, + -0.021676084026694298, + 0.04441097378730774, + -0.010065997019410133, + 0.04146984964609146, + 0.0368816964328289, + 0.009352774359285831, + -0.004007281735539436, + 0.010985098779201508, + 0.012396838515996933, + -0.012977709993720055, + 0.032675888389348984, + -0.00735648674890399, + -0.0732928141951561, + -0.08088091015815735, + -0.005128585267812014, + 0.08029268682003021, + 0.01772027276456356, + -0.018926134333014488, + 0.022411365061998367, + 0.005768279545009136, + 0.018661431968212128, + -0.03982282057404518, + -0.017749683931469917, + -0.013029179535806179, + -0.04211689531803131, + -0.02127903327345848, + 0.037146396934986115, + 0.048381492495536804, + -0.06264594197273254, + 0.05726368725299835, + -0.052057895809412, + -0.026426000520586967, + 0.07176342606544495, + 0.008720433339476585, + 0.0243966244161129, + -0.008418967947363853, + 0.0008648742805235088, + -0.025249550119042397, + -0.0498814657330513, + -0.05938129499554634, + -0.05855778232216835, + 0.007926329039037228, + -0.014418860897421837, + 0.035969946533441544, + 0.003178252140060067, + -0.029175950214266777, + -0.03626406192779541, + 0.006180036813020706, + -0.013315939344465733, + -0.022440776228904724, + 0.037852268666028976, + 0.0019668766763061285, + -0.07752802968025208, + -0.012911534868180752, + -0.02157314494252205, + -0.0007853720453567803, + 0.03855813667178154, + -0.03864637017250061, + -0.02074963040649891, + 0.046734463423490524, + -0.006349151488393545, + -0.04670505225658417, + -0.0169114638119936, + -0.03952870890498161, + -0.01624971069395542, + 0.0030128140933811665, + -0.041528671979904175, + 0.0004354242410045117, + 0.037234630435705185, + -0.0033179556485265493, + 0.008617493323981762, + -0.0004774731060024351, + 0.09376303851604462, + -0.00909542664885521, + 0.003885960206389427, + 0.008080738596618176, + -0.019352596253156662, + -0.013587993569672108, + -2.6539049940765835e-05, + -0.04685210809111595, + -0.020808452740311623, + -0.003340014023706317, + 0.010161583311855793, + -0.010911569930613041, + -0.029073011130094528, + -0.030381811782717705, + 0.015007086098194122, + -0.01292624045163393, + 0.01238948479294777, + -0.0005666259676218033, + 0.01764674484729767, + 0.007632216904312372, + -0.007771920412778854, + 0.03779344633221626, + -0.024455446749925613, + -0.019220246002078056, + -0.004588153678923845, + -0.01406592596322298, + -0.012676244601607323, + 0.02467603050172329, + 0.045087430626153946, + 0.01847025938332081, + 0.026734817773103714, + -0.01470562070608139, + -0.0841161459684372, + 0.027470098808407784, + 0.001457694685086608, + 0.02392604388296604, + -0.0589989498257637, + 0.002397016156464815, + -0.004676387179642916, + 0.018411437049508095, + 0.02438191883265972, + 0.029175950214266777, + 0.0219113752245903, + 0.005547695327550173, + -0.014676209539175034, + -0.0162644162774086, + -0.03052886761724949, + -0.020514341071248055, + -0.02876419387757778, + -0.029999466612935066, + -0.0003568410756997764, + -0.029646530747413635, + -0.017587922513484955, + -0.07688098400831223, + 0.0219113752245903, + -0.019793765619397163, + -0.0032389129046350718, + 0.021779023110866547, + 0.030175933614373207, + 0.03079356998205185, + 0.01502914447337389, + 0.05405786260962486, + 0.03214648738503456, + 0.014080631546676159, + 0.03944047540426254, + -0.024617208167910576, + -0.05841072276234627, + -0.02492602728307247, + -0.01708793081343174, + 0.03188178688287735, + 0.016043832525610924, + 0.0006916237180121243, + 0.0024981172755360603, + 0.06182242929935455, + -0.020440813153982162, + -0.05776367709040642, + -0.02367604896426201, + -0.033028822392225266, + 0.048646192997694016, + 0.018426142632961273, + 0.02467603050172329, + 0.0002961803984362632, + 0.07682216167449951, + -0.030117111280560493, + -0.04405803978443146, + -0.0107351029291749, + -0.008838078007102013, + -0.010499812662601471, + 0.01863202080130577, + 0.017705567181110382, + -0.009220424108207226, + 0.028175968676805496, + 0.012896829284727573, + -0.037764035165309906, + 0.042616888880729675, + -0.017220281064510345, + -0.011918905191123486, + -0.0169114638119936, + -0.02301429584622383, + 0.01219831220805645, + 0.00894836988300085, + -0.009926293976604939, + 0.005110203288495541, + -8.375310426345095e-05, + -0.016470294445753098, + -0.01964670978486538, + -0.024014277383685112, + -0.014837970957159996, + 0.011911552399396896, + -0.0011810451978817582, + -0.010654222220182419, + 0.041705138981342316, + -0.01063951663672924, + 0.043175701051950455, + -0.011088037863373756, + -0.019852587953209877, + 0.038322847336530685, + 0.04870501533150673, + -0.025911303237080574, + -0.0016865507932379842, + 0.00014475845091510564, + 0.007992505095899105, + -0.01238213200122118, + 0.0006553191924467683, + 0.005404315423220396, + -0.009963057935237885, + 0.005341816693544388, + 0.009448361583054066, + -0.0044080098159611225, + -0.001861180062405765, + 0.0023345171939581633, + 0.010705691762268543, + 0.013382114470005035, + 0.003930076956748962, + 0.06752821058034897, + 0.002564292633906007, + 0.015661485493183136, + -0.027293631806969643, + 0.0016470295377075672, + -0.024014277383685112, + -0.03629347309470177, + 0.013374761678278446, + -0.041263971477746964, + -0.054969608783721924, + -0.08052797615528107, + -0.011257152073085308, + -0.01097039319574833, + -0.03135238215327263, + 0.011757143773138523, + 0.0041837492026388645, + 0.014904146082699299, + 0.006735173985362053, + 0.025190727785229683, + -0.03999928757548332, + -0.011418914422392845, + -0.023602521046996117, + 0.0028731105849146843, + 0.033940572291612625, + 0.012985062785446644, + -0.026058359071612358, + -0.05191083997488022, + 0.032675888389348984, + 0.0022793712560087442, + 0.03638170659542084, + 0.049381472170352936, + -0.025264255702495575, + -0.01929377391934395, + -0.04896971583366394, + -0.00609547970816493, + 0.018867311999201775, + -0.005782985128462315, + -0.0013896811287850142, + 0.03882283717393875, + 0.008051327429711819, + -0.029984761029481888, + 0.045175667852163315, + -0.0019668766763061285, + -0.01782321184873581, + -0.02694069594144821, + 0.003591847838833928, + -0.043087467551231384, + 0.052028484642505646, + 0.039499297738075256, + -0.019220246002078056, + -0.04555801302194595, + -0.06676352024078369, + -0.016734996810555458, + 0.02392604388296604, + -0.007882212288677692, + -0.0021764319390058517, + -0.013668874278664589, + -0.0015275463229045272, + 0.008205736055970192, + 0.010632163845002651, + -0.016882052645087242, + -0.013315939344465733, + -0.005768279545009136, + -0.004264629911631346, + 0.008551318198442459, + 0.040058109909296036, + -0.01479385420680046, + -0.024190746247768402, + -0.012183606624603271, + 0.001329939579591155, + 0.009713062085211277, + -0.009933646768331528, + 0.02238195389509201, + -0.021779023110866547, + 0.025734836235642433, + 0.001751807052642107, + -0.012249781750142574, + -0.02411721833050251, + 0.04291100054979324, + -0.03444056212902069, + -0.012360073626041412, + -0.04123456031084061, + -0.0020992273930460215, + 0.019426124170422554, + -0.012477719224989414, + 0.03317587822675705, + -0.02777891792356968, + 0.007617511320859194, + -0.06399886310100555, + -0.07876330614089966, + -0.03258765488862991, + 0.06711645424365997, + -0.00370213994756341, + 0.09829236567020416, + -0.02958770841360092, + -0.018617315217852592, + 0.028528904542326927, + 0.004834472667425871, + -0.00751089584082365, + 0.006018275395035744, + 0.0035642748698592186, + 0.07452808320522308, + -0.017249692231416702, + 0.007154284510761499, + 0.016220299527049065, + 0.055528424680233, + 0.05817543342709541, + 0.013058590702712536, + -0.012845359742641449, + 0.009286599233746529, + 0.01607324369251728, + 0.004360216669738293, + 0.01682323031127453, + -0.04761679843068123, + 0.05949893966317177, + 0.03635229542851448, + 0.03917577117681503, + -0.054763730615377426, + -0.0064226798713207245, + -0.02492602728307247, + -0.009566006250679493, + 0.03867578133940697, + 0.03455820679664612, + -0.01663205586373806, + 0.05108732730150223, + 0.008720433339476585, + 0.0016589778242632747, + 0.04732268676161766, + -0.004474184941500425, + 0.05932247266173363, + 0.02001434937119484, + 0.0498814657330513, + 0.02045551873743534, + 0.013860046863555908, + 0.01462473999708891, + 0.0072645763866603374, + -0.012786537408828735, + -0.013051237910985947, + -0.01791144534945488, + -0.004816090688109398, + -0.005187407601624727, + 0.09141013771295547, + -0.01844084821641445, + -0.02658776193857193, + -0.015852658078074455, + 0.025073083117604256, + 0.09705709666013718, + -0.011602734215557575, + -0.014212981797754765, + -0.024073101580142975, + -0.08082208782434464, + 0.01041893195360899, + 0.00377934449352324, + -0.007617511320859194, + 0.033852338790893555, + -0.015573251992464066, + 0.03894048184156418, + -0.00040417478885501623, + -0.032205309718847275, + -0.031940609216690063, + 0.022411365061998367, + 0.04058751091361046, + 0.024161335080862045, + -0.02813185192644596, + -0.023984866216778755, + -0.052469652146101, + 0.005838131532073021, + -0.02969064749777317, + 0.0005179135478101671, + -0.0027977442368865013, + -0.0015247890260070562, + 0.012801242992281914, + 0.005782985128462315, + 0.009955705143511295, + -0.02064669132232666, + -0.006091803312301636, + 0.026087770238518715, + 0.015014438889920712, + -0.032940588891506195, + 0.03588171303272247, + -0.0063087111338973045, + -0.015051202848553658, + 0.025455428287386894, + 0.030028877779841423, + 0.03488173335790634, + -0.027323042973876, + -0.02019081637263298, + -0.045734480023384094, + 0.020220227539539337, + -0.012948298826813698, + -0.05588135868310928, + 0.012132137082517147, + -0.039793409407138824, + 0.0070219337940216064, + -0.015426196157932281, + 0.025705425068736076, + -0.03323470056056976, + 0.0015073261456564069, + 0.018690843135118484, + -0.04094044864177704, + -0.019440829753875732, + 0.019205540418624878, + -0.01680852472782135, + -0.009316010400652885, + 0.0698222890496254, + 0.03170531615614891, + 0.017690861597657204, + 0.0027995824348181486, + 0.04158749431371689, + -0.00895572267472744, + -0.037058163434267044, + -0.02322017401456833, + 0.02522013895213604, + 0.021234916523098946, + -0.0231025293469429, + 0.04961676523089409, + -0.0007063293596729636, + 0.0030514162499457598, + 0.019337890669703484, + 0.009573359042406082, + 0.00021897588158026338, + -0.0002449404855724424, + 0.03391116112470627, + 0.022087842226028442, + -0.04394039511680603, + -0.027117164805531502, + 0.016146771609783173, + 0.01064686942845583, + -0.010624811053276062, + 0.0008400585502386093, + -0.022587833926081657, + -0.0035955242346972227, + -0.004926383029669523, + 0.024176040664315224, + 0.01219095941632986, + 0.008845430798828602, + 0.009668945334851742, + -0.02641129493713379, + 0.022043725475668907, + 0.04211689531803131, + -0.0338229276239872, + 0.014470330439507961, + -0.011124801822006702, + 0.005959452595561743, + 0.011639498174190521, + -0.031470026820898056, + -0.001660816022194922, + 0.013235058635473251, + -0.01147038396447897, + 0.015396784991025925, + -0.054675497114658356, + 0.04485214129090309, + -0.010360109619796276, + 0.010889511555433273, + -0.07323399186134338, + 0.019161423668265343, + -0.007580747362226248, + 0.00041014893213286996, + -0.026381883770227432, + 0.01197037473320961, + 0.02248489297926426, + 0.0036139062140136957, + 0.0033124410547316074, + 0.022146664559841156, + -0.06394004076719284, + -0.017117341980338097, + 0.04585212469100952, + 0.021823139861226082, + 0.001150714815594256, + 0.029822997748851776, + -0.014146806672215462, + 0.008588082157075405, + 0.023528993129730225, + 0.01311741303652525, + -0.0156173687428236, + -0.036234647035598755, + -0.03279353305697441, + 0.028278907760977745, + -0.026720112189650536, + -0.019779060035943985, + 0.044263917952775955, + 0.021308444440364838, + -0.033028822392225266, + -0.008926311507821083, + 0.03655817359685898, + -0.03994046524167061, + -0.04220513254404068, + -0.04679328575730324, + -0.031028859317302704, + 0.002766494872048497, + -0.03399939462542534, + 0.03435232862830162, + 0.0071138436906039715, + 0.00781603716313839, + 0.019073190167546272, + 0.001996288076043129, + 0.012779184617102146, + 0.018396731466054916, + -0.02347017079591751, + -0.02411721833050251, + 0.009713062085211277, + 0.049293238669633865, + -0.07141049206256866, + 0.012970357201993465, + 0.032028842717409134, + 0.008668962866067886, + 0.035969946533441544, + -0.012146842665970325, + -0.030117111280560493, + 0.035587601363658905, + 0.03602876886725426, + 0.025278961285948753, + -0.04761679843068123, + 0.009124837815761566, + -0.009646886959671974, + 0.028367141261696815, + 0.01416151225566864, + -0.007771920412778854, + 0.0392640084028244, + 0.01563207432627678, + 0.0015257081249728799, + 0.00803662184625864, + -0.05482255294919014, + -0.011485089547932148, + -0.022690773010253906, + -0.031293559819459915, + -0.04008752107620239, + -0.07988093048334122, + -0.07470455020666122, + -0.004584477283060551, + 0.004779326729476452, + -0.0015367373125627637, + -0.004003605339676142, + 0.01717616431415081, + -0.07811625301837921, + -0.022602539509534836, + -0.015323256142437458, + 0.033293526619672775, + 0.002064301399514079, + 0.009551300667226315, + -0.03132297098636627, + 0.03702875226736069, + 0.03464644029736519, + 0.03052886761724949, + -0.03999928757548332, + -0.032293543219566345, + -0.01964670978486538, + 0.01889672316610813, + 0.013808577321469784, + 0.011073332279920578, + 0.030293578281998634, + -0.001751807052642107, + -0.036969929933547974, + 0.00525358272716403, + 0.03217589855194092, + -0.025720130652189255, + 0.002490764483809471, + -0.027073048055171967, + -0.029955347999930382, + 0.0641753301024437, + 0.008705727756023407, + 0.04064633324742317, + 0.013712991029024124, + 0.03496996685862541, + 0.027558332309126854, + -0.041058093309402466, + 0.005260935518890619, + 0.0010431800037622452, + -0.03517584502696991, + 0.022176075726747513, + 0.0041837492026388645, + 0.03179354965686798, + -0.0016644924180582166 + ], + "result": "--- 结果 1 (相似度: 1.000) ---\n文件路径: C:\\Steam\\steamapps\\common\\RimWorld\\Data\\dll1.6\\Verse\\Game.txt\n\npublic class Game : IExposable, IDisposable\n{\n\tprivate GameInitData initData;\n\n\tprivate Gravship gravshipInt;\n\n\tpublic sbyte currentMapIndex = -1;\n\n\tprivate GameInfo info = new GameInfo();\n\n\tpublic List components = new List();\n\n\tprivate GameRules rules = new GameRules();\n\n\tprivate Scenario scenarioInt;\n\n\tprivate World worldInt;\n\n\tprivate List maps = new List();\n\n\tpublic PlaySettings playSettings = new PlaySettings();\n\n\tpublic StoryWatcher storyWatcher = new StoryWatcher();\n\n\tpublic LetterStack letterStack = new LetterStack();\n\n\tpublic ResearchManager researchManager = new ResearchManager();\n\n\tpublic AnalysisManager analysisManager = new AnalysisManager();\n\n\tpublic GameEnder gameEnder = new GameEnder();\n\n\tpublic Storyteller storyteller = new Storyteller();\n\n\tpublic History history = new History();\n\n\tpublic TaleManager taleManager = new TaleManager();\n\n\tpublic PlayLog playLog = new PlayLog();\n\n\tpublic BattleLog battleLog = new BattleLog();\n\n\tpublic OutfitDatabase outfitDatabase = new OutfitDatabase();\n\n\tpublic DrugPolicyDatabase drugPolicyDatabase = new DrugPolicyDatabase();\n\n\tpublic ReadingPolicyDatabase readingPolicyDatabase = new ReadingPolicyDatabase();\n\n\tpublic FoodRestrictionDatabase foodRestrictionDatabase = new FoodRestrictionDatabase();\n\n\tpublic TickManager tickManager = new TickManager();\n\n\tpublic Tutor tutor = new Tutor();\n\n\tpublic Autosaver autosaver = new Autosaver();\n\n\tpublic DateNotifier dateNotifier = new DateNotifier();\n\n\tpublic SignalManager signalManager = new SignalManager();\n\n\tpublic UniqueIDsManager uniqueIDsManager = new UniqueIDsManager();\n\n\tpublic QuestManager questManager = new QuestManager();\n\n\tpublic TransportShipManager transportShipManager = new TransportShipManager();\n\n\tpublic StudyManager studyManager = new StudyManager();\n\n\tpublic CustomXenogermDatabase customXenogermDatabase = new CustomXenogermDatabase();\n\n\tpublic CustomXenotypeDatabase customXenotypeDatabase = new CustomXenotypeDatabase();\n\n\tpublic RelationshipRecords relationshipRecords = new RelationshipRecords();\n\n\tpublic HiddenItemsManager hiddenItemsManager = new HiddenItemsManager();\n\n\tpublic EntityCodex entityCodex = new EntityCodex();\n\n\tprivate static readonly List tmpPlayerHomeMaps = new List();\n\n\tpublic Scenario Scenario\n\t{\n\t\tget\n\t\t{\n\t\t\treturn scenarioInt;\n\t\t}\n\t\tset\n\t\t{\n\t\t\tscenarioInt = value;\n\t\t}\n\t}\n\n\tpublic World World\n\t{\n\t\tget\n\t\t{\n\t\t\treturn worldInt;\n\t\t}\n\t\tset\n\t\t{\n\t\t\tif (worldInt != value)\n\t\t\t{\n\t\t\t\tworldInt = value;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic Map CurrentMap\n\t{\n\t\tget\n\t\t{\n\t\t\tif (currentMapIndex < 0)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn maps[currentMapIndex];\n\t\t}\n\t\tset\n\t\t{\n\t\t\tint num;\n\t\t\tif (value == null)\n\t\t\t{\n\t\t\t\tnum = -1;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tnum = maps.IndexOf(value);\n\t\t\t\tif (num < 0)\n\t\t\t\t{\n\t\t\t\t\tLog.Error(\"Could not set current map because it does not exist.\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (currentMapIndex != num)\n\t\t\t{\n\t\t\t\tcurrentMapIndex = (sbyte)num;\n\t\t\t\tFind.MapUI.Notify_SwitchedMap();\n\t\t\t\tAmbientSoundManager.Notify_SwitchedMap();\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic Map AnyPlayerHomeMap\n\t{\n\t\tget\n\t\t{\n\t\t\tif (Faction.OfPlayerSilentFail == null)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tfor (int i = 0; i < maps.Count; i++)\n\t\t\t{\n\t\t\t\tif (maps[i].IsPlayerHome)\n\t\t\t\t{\n\t\t\t\t\treturn maps[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (ModsConfig.OdysseyActive)\n\t\t\t{\n\t\t\t\tfor (int j = 0; j < maps.Count; j++)\n\t\t\t\t{\n\t\t\t\t\tif (GravshipUtility.PlayerHasGravEngine(maps[j]))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn maps[j];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic bool PlayerHasControl\n\t{\n\t\tget\n\t\t{\n\t\t\tif (ScreenFader.IsFading())\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (WorldComponent_GravshipController.CutsceneInProgress && !Find.CameraDriver.config.gravshipFreeCam)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tpublic IReadOnlyList PlayerHomeMaps\n\t{\n\t\tget\n\t\t{\n\t\t\tif (Faction.OfPlayerSilentFail == null)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\ttmpPlayerHomeMaps.Clear();\n\t\t\tfor (int i = 0; i < maps.Count; i++)\n\t\t\t{\n\t\t\t\tMap map = maps[i];\n\t\t\t\tif (map.IsPlayerHome)\n\t\t\t\t{\n\t\t\t\t\ttmpPlayerHomeMaps.Add(map);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn tmpPlayerHomeMaps;\n\t\t}\n\t}\n\n\tpublic Map RandomPlayerHomeMap\n\t{\n\t\tget\n\t\t{\n\t\t\tif (Faction.OfPlayerSilentFail == null)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\ttmpPlayerHomeMaps.Clear();\n\t\t\tfor (int i = 0; i < maps.Count; i++)\n\t\t\t{\n\t\t\t\tMap map = maps[i];\n\t\t\t\tif (map.IsPlayerHome)\n\t\t\t\t{\n\t\t\t\t\ttmpPlayerHomeMaps.Add(map);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (tmpPlayerHomeMaps.Any())\n\t\t\t{\n\t\t\t\tMap result = tmpPlayerHomeMaps.RandomElement();\n\t\t\t\ttmpPlayerHomeMaps.Clear();\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic Map RandomRootSurfacePlayerHomeMap\n\t{\n\t\tget\n\t\t{\n\t\t\tif (Faction.OfPlayerSilentFail == null)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\ttmpPlayerHomeMaps.Clear();\n\t\t\tfor (int i = 0; i < maps.Count; i++)\n\t\t\t{\n\t\t\t\tMap map = maps[i];\n\t\t\t\tif (map.IsPlayerHome && map.Tile.Layer.IsRootSurface)\n\t\t\t\t{\n\t\t\t\t\ttmpPlayerHomeMaps.Add(map);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (tmpPlayerHomeMaps.Any())\n\t\t\t{\n\t\t\t\tMap result = tmpPlayerHomeMaps.RandomElement();\n\t\t\t\ttmpPlayerHomeMaps.Clear();\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic Map RandomSurfacePlayerHomeMap\n\t{\n\t\tget\n\t\t{\n\t\t\tif (Faction.OfPlayerSilentFail == null)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\ttmpPlayerHomeMaps.Clear();\n\t\t\tfor (int i = 0; i < maps.Count; i++)\n\t\t\t{\n\t\t\t\tMap map = maps[i];\n\t\t\t\tif (map.IsPlayerHome && map.Tile.LayerDef.SurfaceTiles)\n\t\t\t\t{\n\t\t\t\t\ttmpPlayerHomeMaps.Add(map);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (tmpPlayerHomeMaps.Any())\n\t\t\t{\n\t\t\t\tMap result = tmpPlayerHomeMaps.RandomElement();\n\t\t\t\ttmpPlayerHomeMaps.Clear();\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic List Maps => maps;\n\n\tpublic GameInitData InitData\n\t{\n\t\tget\n\t\t{\n\t\t\treturn initData;\n\t\t}\n\t\tset\n\t\t{\n\t\t\tinitData = value;\n\t\t}\n\t}\n\n\tpublic GameInfo Info => info;\n\n\tpublic GameRules Rules => rules;\n\n\tpublic Gravship Gravship\n\t{\n\t\tget\n\t\t{\n\t\t\treturn gravshipInt;\n\t\t}\n\t\tset\n\t\t{\n\t\t\tgravshipInt = value;\n\t\t}\n\t}\n\n\tpublic bool IsPlayerTile(PlanetTile tile)\n\t{\n\t\tfor (int i = 0; i < maps.Count; i++)\n\t\t{\n\t\t\tMap map = maps[i];\n\t\t\tif (map.Tile == tile && map.IsPlayerHome)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic Game()\n\t{\n\t\tFillComponents();\n\t}\n\n\tpublic void AddMap(Map map)\n\t{\n\t\tif (map == null)\n\t\t{\n\t\t\tLog.Error(\"Tried to add null map.\");\n\t\t\treturn;\n\t\t}\n\t\tif (maps.Contains(map))\n\t\t{\n\t\t\tLog.Error(\"Tried to add map but it's already here.\");\n\t\t\treturn;\n\t\t}\n\t\tif (maps.Count > 127)\n\t\t{\n\t\t\tLog.Error(\"Can't add map. Reached maps count limit (\" + sbyte.MaxValue + \").\");\n\t\t\treturn;\n\t\t}\n\t\tmaps.Add(map);\n\t\tFind.ColonistBar.MarkColonistsDirty();\n\t}\n\n\tpublic Map FindMap(MapParent mapParent)\n\t{\n\t\tfor (int i = 0; i < maps.Count; i++)\n\t\t{\n\t\t\tif (maps[i].info.parent == mapParent)\n\t\t\t{\n\t\t\t\treturn maps[i];\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic Map FindMap(PlanetTile tile)\n\t{\n\t\tfor (int i = 0; i < maps.Count; i++)\n\t\t{\n\t\t\tif (maps[i].Tile == tile)\n\t\t\t{\n\t\t\t\treturn maps[i];\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic void ExposeData()\n\t{\n\t\tif (Scribe.mode == LoadSaveMode.LoadingVars)\n\t\t{\n\t\t\tLog.Error(\"You must use special LoadData method to load Game.\");\n\t\t\treturn;\n\t\t}\n\t\tScribe_Values.Look(ref currentMapIndex, \"currentMapIndex\", -1);\n\t\tExposeSmallComponents();\n\t\tScribe_Deep.Look(ref worldInt, \"world\");\n\t\tScribe_Collections.Look(ref maps, \"maps\", LookMode.Deep);\n\t\tFind.CameraDriver.Expose();\n\t}\n\n\tprivate void ExposeSmallComponents()\n\t{\n\t\tScribe_Deep.Look(ref info, \"info\");\n\t\tScribe_Deep.Look(ref rules, \"rules\");\n\t\tScribe_Deep.Look(ref scenarioInt, \"scenario\");\n\t\tScribe_Deep.Look(ref tickManager, \"tickManager\");\n\t\tScribe_Deep.Look(ref playSettings, \"playSettings\");\n\t\tScribe_Deep.Look(ref storyWatcher, \"storyWatcher\");\n\t\tScribe_Deep.Look(ref gameEnder, \"gameEnder\");\n\t\tScribe_Deep.Look(ref letterStack, \"letterStack\");\n\t\tScribe_Deep.Look(ref researchManager, \"researchManager\");\n\t\tScribe_Deep.Look(ref analysisManager, \"analysisManager\");\n\t\tif (Scribe.mode == LoadSaveMode.LoadingVars && analysisManager == null)\n\t\t{\n\t\t\tanalysisManager = new AnalysisManager();\n\t\t}\n\t\tScribe_Deep.Look(ref storyteller, \"storyteller\");\n\t\tScribe_Deep.Look(ref history, \"history\");\n\t\tScribe_Deep.Look(ref taleManager, \"taleManager\");\n\t\tScribe_Deep.Look(ref playLog, \"playLog\");\n\t\tScribe_Deep.Look(ref battleLog, \"battleLog\");\n\t\tScribe_Deep.Look(ref outfitDatabase, \"outfitDatabase\");\n\t\tScribe_Deep.Look(ref drugPolicyDatabase, \"drugPolicyDatabase\");\n\t\tScribe_Deep.Look(ref foodRestrictionDatabase, \"foodRestrictionDatabase\");\n\t\tScribe_Deep.Look(ref readingPolicyDatabase, \"readingPolicyDatabase\");\n\t\tScribe_Deep.Look(ref tutor, \"tutor\");\n\t\tScribe_Deep.Look(ref dateNotifier, \"dateNotifier\");\n\t\tScribe_Deep.Look(ref uniqueIDsManager, \"uniqueIDsManager\");\n\t\tScribe_Deep.Look(ref questManager, \"questManager\");\n\t\tScribe_Deep.Look(ref transportShipManager, \"transportShipManager\");\n\t\tScribe_Deep.Look(ref studyManager, \"studyManager\");\n\t\tScribe_Deep.Look(ref customXenogermDatabase, \"customXenogermDatabase\");\n\t\tScribe_Deep.Look(ref customXenotypeDatabase, \"customXenotypeDatabase\");\n\t\tScribe_Deep.Look(ref relationshipRecords, \"relationshipRecords\");\n\t\tScribe_Deep.Look(ref hiddenItemsManager, \"hiddenItemsManager\");\n\t\tScribe_Deep.Look(ref entityCodex, \"entityCodex\");\n\t\tScribe_Collections.Look(ref components, \"components\", LookMode.Deep, this);\n\t\tif (Scribe.mode == LoadSaveMode.LoadingVars)\n\t\t{\n\t\t\tFillComponents();\n\t\t\tif (rules == null)\n\t\t\t{\n\t\t\t\tLog.Warning(\"Save game was missing rules. Replacing with a blank GameRules.\");\n\t\t\t\trules = new GameRules();\n\t\t\t}\n\t\t\tif (relationshipRecords == null)\n\t\t\t{\n\t\t\t\trelationshipRecords = new RelationshipRecords();\n\t\t\t}\n\t\t\tif (readingPolicyDatabase == null)\n\t\t\t{\n\t\t\t\treadingPolicyDatabase = new ReadingPolicyDatabase();\n\t\t\t}\n\t\t\tif (hiddenItemsManager == null)\n\t\t\t{\n\t\t\t\thiddenItemsManager = new HiddenItemsManager();\n\t\t\t}\n\t\t\tif (entityCodex == null)\n\t\t\t{\n\t\t\t\tentityCodex = new EntityCodex();\n\t\t\t}\n\t\t}\n\t\tBackCompatibility.PostExposeData(this);\n\t}\n\n\tprivate void FillComponents()\n\t{\n\t\tcomponents.RemoveAll((GameComponent component) => component == null);\n\t\tforeach (Type item2 in typeof(GameComponent).AllSubclassesNonAbstract())\n\t\t{\n\t\t\tif (GetComponent(item2) == null)\n\t\t\t{\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tGameComponent item = (GameComponent)Activator.CreateInstance(item2, this);\n\t\t\t\t\tcomponents.Add(item);\n\t\t\t\t}\n\t\t\t\tcatch (Exception ex)\n\t\t\t\t{\n\t\t\t\t\tLog.Error(\"Could not instantiate a GameComponent of type \" + item2?.ToString() + \": \" + ex);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic void InitNewGame()\n\t{\n\t\tstring text = LoadedModManager.RunningMods.Select((ModContentPack mod) => mod.PackageIdPlayerFacing + ((!mod.ModMetaData.VersionCompatible) ? \" (incompatible version)\" : \"\")).ToLineList(\" - \");\n\t\tLog.Message(\"Initializing new game with mods:\\n\" + text);\n\t\tif (maps.Any())\n\t\t{\n\t\t\tLog.Error(\"Called InitNewGame() but there already is a map. There should be 0 maps...\");\n\t\t\treturn;\n\t\t}\n\t\tif (initData == null)\n\t\t{\n\t\t\tLog.Error(\"Called InitNewGame() but init data is null. Create it first.\");\n\t\t\treturn;\n\t\t}\n\t\tClearCaches();\n\t\tMemoryUtility.UnloadUnusedUnityAssets();\n\t\ttry\n\t\t{\n\t\t\tCurrent.ProgramState = ProgramState.MapInitializing;\n\t\t\tIntVec3 intVec = new IntVec3(initData.mapSize, 1, initData.mapSize);\n\t\t\tSettlement settlement = null;\n\t\t\tList settlements = Find.WorldObjects.Settlements;\n\t\t\tfor (int i = 0; i < settlements.Count; i++)\n\t\t\t{\n\t\t\t\tif (settlements[i].Faction == Faction.OfPlayer)\n\t\t\t\t{\n\t\t\t\t\tsettlement = settlements[i];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (settlement == null)\n\t\t\t{\n\t\t\t\tLog.Error(\"Could not generate starting map because there is no any player faction base.\");\n\t\t\t}\n\t\t\ttickManager.gameStartAbsTick = GenTicks.ConfiguredTicksAbsAtGameStart;\n\t\t\tinfo.startingTile = initData.startingTile;\n\t\t\tinfo.startingAndOptionalPawns = initData.startingAndOptionalPawns;\n\t\t\tMap currentMap = MapGenerator.GenerateMap(intVec, settlement, initData.mapGeneratorDef ?? settlement.MapGeneratorDef, settlement.ExtraGenStepDefs);\n\t\t\tworldInt.info.initialMapSize = intVec;\n\t\t\tif (initData.permadeath)\n\t\t\t{\n\t\t\t\tinfo.permadeathMode = true;\n\t\t\t\tinfo.permadeathModeUniqueName = PermadeathModeUtility.GeneratePermadeathSaveName();\n\t\t\t}\n\t\t\tPawnUtility.GiveAllStartingPlayerPawnsThought(ThoughtDefOf.NewColonyOptimism);\n\t\t\tFinalizeInit();\n\t\t\tCurrent.Game.CurrentMap = currentMap;\n\t\t\tFind.CameraDriver.JumpToCurrentMapLoc(MapGenerator.PlayerStartSpot);\n\t\t\tFind.CameraDriver.ResetSize();\n\t\t\tif (Prefs.PauseOnLoad && initData.startedFromEntry)\n\t\t\t{\n\t\t\t\tLongEventHandler.ExecuteWhenFinished(delegate\n\t\t\t\t{\n\t\t\t\t\ttickManager.DoSingleTick();\n\t\t\t\t\ttickManager.CurTimeSpeed = TimeSpeed.Paused;\n\t\t\t\t});\n\t\t\t}\n\t\t\tFind.Scenario.PostGameStart();\n\t\t\thistory.FinalizeInit();\n\t\t\tResearchUtility.ApplyPlayerStartingResearch();\n\t\t\tGameComponentUtility.StartedNewGame();\n\t\t\tinitData = null;\n\t\t}\n\t\tfinally\n\t\t{\n\t\t}\n\t}\n\n\tpublic void LoadGame()\n\t{\n\t\tif (maps.Any())\n\t\t{\n\t\t\tLog.Error(\"Called LoadGame() but there already is a map. There should be 0 maps...\");\n\t\t\treturn;\n\t\t}\n\t\tClearCaches();\n\t\tMemoryUtility.UnloadUnusedUnityAssets();\n\t\tBackCompatibility.PreLoadSavegame(ScribeMetaHeaderUtility.loadedGameVersion);\n\t\tCurrent.ProgramState = ProgramState.MapInitializing;\n\t\tExposeSmallComponents();\n\t\tLongEventHandler.SetCurrentEventText(\"LoadingWorld\".Translate());\n\t\tif (Scribe.EnterNode(\"world\"))\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tWorld = new World();\n\t\t\t\tWorld.ExposeData();\n\t\t\t}\n\t\t\tfinally\n\t\t\t{\n\t\t\t\tScribe.ExitNode();\n\t\t\t}\n\t\t\tDeepProfiler.Start(\"World.FinalizeInit\");\n\t\t\tWorld.FinalizeInit(fromLoad: true);\n\t\t\tDeepProfiler.End();\n\t\t\tLongEventHandler.SetCurrentEventText(\"LoadingMap\".Translate());\n\t\t\tScribe_Collections.Look(ref maps, \"maps\", LookMode.Deep);\n\t\t\tif (maps.RemoveAll((Map x) => x == null) != 0)\n\t\t\t{\n\t\t\t\tLog.Warning(\"Some maps were null after loading.\");\n\t\t\t}\n\t\t\tint value = -1;\n\t\t\tScribe_Values.Look(ref value, \"currentMapIndex\", -1);\n\t\t\tif (value < 0 && maps.Any())\n\t\t\t{\n\t\t\t\tLog.Error(\"Current map is null after loading but there are maps available. Setting current map to [0].\");\n\t\t\t\tvalue = 0;\n\t\t\t}\n\t\t\tif (value >= maps.Count)\n\t\t\t{\n\t\t\t\tLog.Error(\"Current map index out of bounds after loading.\");\n\t\t\t\tvalue = ((!maps.Any()) ? (-1) : 0);\n\t\t\t}\n\t\t\tcurrentMapIndex = sbyte.MinValue;\n\t\t\tCurrentMap = ((value >= 0) ? maps[value] : null);\n\t\t\tLongEventHandler.SetCurrentEventText(\"InitializingGame\".Translate());\n\t\t\tFind.CameraDriver.Expose();\n\t\t\tDeepProfiler.Start(\"Scribe.loader.FinalizeLoading\");\n\t\t\tScribe.loader.FinalizeLoading();\n\t\t\tDeepProfiler.End();\n\t\t\tLongEventHandler.SetCurrentEventText(\"SpawningAllThings\".Translate());\n\t\t\tDeepProfiler.Start(\"maps.FinalizeLoading\");\n\t\t\tfor (int i = 0; i < maps.Count; i++)\n\t\t\t{\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tmaps[i].FinalizeLoading();\n\t\t\t\t}\n\t\t\t\tcatch (Exception ex)\n\t\t\t\t{\n\t\t\t\t\tLog.Error(\"Error in Map.FinalizeLoading(): \" + ex);\n\t\t\t\t}\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tmaps[i].Parent?.FinalizeLoading();\n\t\t\t\t}\n\t\t\t\tcatch (Exception ex2)\n\t\t\t\t{\n\t\t\t\t\tLog.Error(\"Error in MapParent.FinalizeLoading(): \" + ex2);\n\t\t\t\t}\n\t\t\t}\n\t\t\tDeepProfiler.End();\n\t\t\tDeepProfiler.Start(\"Game.FinalizeInit\");\n\t\t\tFinalizeInit();\n\t\t\tDeepProfiler.End();\n\t\t\tif (Prefs.PauseOnLoad)\n\t\t\t{\n\t\t\t\tLongEventHandler.ExecuteWhenFinished(delegate\n\t\t\t\t{\n\t\t\t\t\tFind.TickManager.DoSingleTick();\n\t\t\t\t\tFind.TickManager.CurTimeSpeed = TimeSpeed.Paused;\n\t\t\t\t});\n\t\t\t}\n\t\t\tGameComponentUtility.LoadedGame();\n\t\t\tBackCompatibility.PostLoadSavegame(ScribeMetaHeaderUtility.loadedGameVersion);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tLog.Error(\"Could not find world XML node.\");\n\t\t}\n\t}\n\n\tpublic void UpdateEntry()\n\t{\n\t\tGameComponentUtility.GameComponentUpdate();\n\t}\n\n\tpublic void UpdatePlay()\n\t{\n\t\ttry\n\t\t{\n\t\t\tFind.LetterStack.OpenAutomaticLetters();\n\t\t}\n\t\tcatch (Exception ex)\n\t\t{\n\t\t\tLog.Error(ex.ToString());\n\t\t}\n\t\ttickManager.TickManagerUpdate();\n\t\tletterStack.LetterStackUpdate();\n\t\tWorld.WorldUpdate();\n\t\tfor (int i = 0; i < maps.Count; i++)\n\t\t{\n\t\t\tmaps[i].MapUpdate();\n\t\t}\n\t\tInfo.GameInfoUpdate();\n\t\tGameComponentUtility.GameComponentUpdate();\n\t\tsignalManager.SignalManagerUpdate();\n\t\tGlobalTextureAtlasManager.GlobalTextureAtlasManagerUpdate();\n\t}\n\n\tpublic T GetComponent() where T : GameComponent\n\t{\n\t\tfor (int i = 0; i < components.Count; i++)\n\t\t{\n\t\t\tif (components[i] is T result)\n\t\t\t{\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic GameComponent GetComponent(Type type)\n\t{\n\t\tfor (int i = 0; i < components.Count; i++)\n\t\t{\n\t\t\tif (type.IsInstanceOfType(components[i]))\n\t\t\t{\n\t\t\t\treturn components[i];\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic void FinalizeInit()\n\t{\n\t\tLogSimple.FlushToFileAndOpen();\n\t\tresearchManager.ReapplyAllMods();\n\t\tMessagesRepeatAvoider.Reset();\n\t\tGameComponentUtility.FinalizeInit();\n\t\tCurrent.ProgramState = ProgramState.Playing;\n\t\tCurrent.Game.World.ideoManager.Notify_GameStarted();\n\t\tRecipeDefGenerator.ResetRecipeIngredientsForDifficulty();\n\t\tLongEventHandler.ExecuteWhenFinished(delegate\n\t\t{\n\t\t\tDebugSettings.devPalette = Prefs.StartDevPaletteOn;\n\t\t\tFind.UIRoot.debugWindowOpener.TryOpenOrClosePalette();\n\t\t});\n\t}\n\n\tpublic void DeinitAndRemoveMap(Map map, bool notifyPlayer)\n\t{\n\t\tif (map == null)\n\t\t{\n\t\t\tLog.Error(\"Tried to remove null map.\");\n\t\t\treturn;\n\t\t}\n\t\tif (!maps.Contains(map))\n\t\t{\n\t\t\tLog.Error(\"Tried to remove map \" + map?.ToString() + \" but it's not here.\");\n\t\t\treturn;\n\t\t}\n\t\tif (map.Parent != null)\n\t\t{\n\t\t\tmap.Parent.Notify_MyMapAboutToBeRemoved();\n\t\t}\n\t\tMap currentMap = CurrentMap;\n\t\tMapDeiniter.Deinit(map, notifyPlayer);\n\t\tmaps.Remove(map);\n\t\tif (currentMap != null)\n\t\t{\n\t\t\tsbyte b = (sbyte)maps.IndexOf(currentMap);\n\t\t\tif (b < 0)\n\t\t\t{\n\t\t\t\tif (maps.Any())\n\t\t\t\t{\n\t\t\t\t\tCurrentMap = maps[0];\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tCurrentMap = null;\n\t\t\t\t}\n\t\t\t\tFind.World.renderer.wantedMode = WorldRenderMode.Planet;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tcurrentMapIndex = b;\n\t\t\t}\n\t\t}\n\t\tif (Current.ProgramState == ProgramState.Playing)\n\t\t{\n\t\t\tFind.ColonistBar.MarkColonistsDirty();\n\t\t}\n\t\tMapComponentUtility.MapRemoved(map);\n\t\tFind.Scenario.MapRemoved(map);\n\t\tif (map.Parent != null)\n\t\t{\n\t\t\tmap.Parent.Notify_MyMapRemoved(map);\n\t\t}\n\t\tforeach (PocketMapParent item in Find.World.pocketMaps.ToList())\n\t\t{\n\t\t\tif (item.sourceMap == map && item.Map.generatorDef.pocketMapProperties.destroyOnParentMapAbandoned)\n\t\t\t{\n\t\t\t\tPocketMapUtility.DestroyPocketMap(item.Map);\n\t\t\t}\n\t\t}\n\t\tmap.Dispose();\n\t}\n\n\tpublic string DebugString()\n\t{\n\t\tStringBuilder stringBuilder = new StringBuilder();\n\t\tstringBuilder.AppendLine(\"Game debug data:\");\n\t\tstringBuilder.AppendLine(\"initData:\");\n\t\tif (initData == null)\n\t\t{\n\t\t\tstringBuilder.AppendLine(\" null\");\n\t\t}\n\t\telse\n\t\t{\n\t\t\tstringBuilder.AppendLine(initData.ToString());\n\t\t}\n\t\tstringBuilder.AppendLine(\"Scenario:\");\n\t\tif (scenarioInt == null)\n\t\t{\n\t\t\tstringBuilder.AppendLine(\" null\");\n\t\t}\n\t\telse\n\t\t{\n\t\t\tstringBuilder.AppendLine(\" \" + scenarioInt);\n\t\t}\n\t\tstringBuilder.AppendLine(\"World:\");\n\t\tif (worldInt == null)\n\t\t{\n\t\t\tstringBuilder.AppendLine(\" null\");\n\t\t}\n\t\telse\n\t\t{\n\t\t\tstringBuilder.AppendLine(\" name: \" + worldInt.info.name);\n\t\t}\n\t\tstringBuilder.AppendLine(\"Maps count: \" + maps.Count);\n\t\tfor (int i = 0; i < maps.Count; i++)\n\t\t{\n\t\t\tstringBuilder.AppendLine(\" Map \" + maps[i].Index + \":\");\n\t\t\tstringBuilder.AppendLine(\" tile: \" + maps[i].TileInfo);\n\t\t}\n\t\tstringBuilder.AppendLine(\"Game components:\");\n\t\tfor (int j = 0; j < components.Count; j++)\n\t\t{\n\t\t\tcomponents[j].AppendDebugString(stringBuilder);\n\t\t}\n\t\treturn stringBuilder.ToString();\n\t}\n\n\tpublic void Dispose()\n\t{\n\t\tfor (int i = 0; i < maps.Count; i++)\n\t\t{\n\t\t\tmaps[i].Dispose();\n\t\t}\n\t\tworldInt?.Dispose();\n\t\tSteadyEnvironmentEffects.Reset();\n\t\tUnityData.DisposeStaticResources();\n\t}\n\n\tpublic static void ClearCaches()\n\t{\n\t\tFind.ClearCache();\n\t\tChildcareUtility.ClearCache();\n\t\tSlaveRebellionUtility.ClearCache();\n\t\tAlert_NeedMeditationSpot.ClearCache();\n\t\tBuildCopyCommandUtility.ClearCache();\n\t\tMechanitorUtility.ClearCache();\n\t\tSocialCardUtility.ClearCaches();\n\t\tforeach (StatDef item in DefDatabase.AllDefsListForReading)\n\t\t{\n\t\t\titem.Worker.TryClearCache();\n\t\t}\n\t}\n}\n\n--- 结果 2 (相似度: 1.000) ---\n文件路径: C:\\Steam\\steamapps\\common\\RimWorld\\Data\\dll1.6\\Verse\\Map.txt\n\npublic sealed class Map : IIncidentTarget, ILoadReferenceable, IThingHolder, IExposable, IDisposable\n{\n\tpublic MapFileCompressor compressor;\n\n\tprivate List loadedFullThings;\n\n\tpublic MapGeneratorDef generatorDef;\n\n\tpublic int uniqueID = -1;\n\n\tpublic int generationTick;\n\n\tpublic bool wasSpawnedViaGravShipLanding;\n\n\tprivate Color? fogOfWarColor;\n\n\tprivate OrbitalDebrisDef orbitalDebris;\n\n\tprivate int generatedId;\n\n\tpublic MapInfo info = new MapInfo();\n\n\tpublic MapEvents events;\n\n\tpublic List components = new List();\n\n\tpublic ThingOwner spawnedThings;\n\n\tpublic CellIndices cellIndices;\n\n\tpublic ListerThings listerThings;\n\n\tpublic ListerBuildings listerBuildings;\n\n\tpublic MapPawns mapPawns;\n\n\tpublic DynamicDrawManager dynamicDrawManager;\n\n\tpublic MapDrawer mapDrawer;\n\n\tpublic PawnDestinationReservationManager pawnDestinationReservationManager;\n\n\tpublic TooltipGiverList tooltipGiverList;\n\n\tpublic ReservationManager reservationManager;\n\n\tpublic EnrouteManager enrouteManager;\n\n\tpublic PhysicalInteractionReservationManager physicalInteractionReservationManager;\n\n\tpublic DesignationManager designationManager;\n\n\tpublic LordManager lordManager;\n\n\tpublic PassingShipManager passingShipManager;\n\n\tpublic HaulDestinationManager haulDestinationManager;\n\n\tpublic DebugCellDrawer debugDrawer;\n\n\tpublic GameConditionManager gameConditionManager;\n\n\tpublic WeatherManager weatherManager;\n\n\tpublic ZoneManager zoneManager;\n\n\tpublic PlanManager planManager;\n\n\tpublic ResourceCounter resourceCounter;\n\n\tpublic MapTemperature mapTemperature;\n\n\tpublic TemperatureVacuumCache TemperatureVacuumCache;\n\n\tpublic AreaManager areaManager;\n\n\tpublic AttackTargetsCache attackTargetsCache;\n\n\tpublic AttackTargetReservationManager attackTargetReservationManager;\n\n\tpublic VoluntarilyJoinableLordsStarter lordsStarter;\n\n\tpublic FleckManager flecks;\n\n\tpublic DeferredSpawner deferredSpawner;\n\n\tpublic ThingGrid thingGrid;\n\n\tpublic CoverGrid coverGrid;\n\n\tpublic EdificeGrid edificeGrid;\n\n\tpublic BlueprintGrid blueprintGrid;\n\n\tpublic FogGrid fogGrid;\n\n\tpublic RegionGrid regionGrid;\n\n\tpublic GlowGrid glowGrid;\n\n\tpublic TerrainGrid terrainGrid;\n\n\tpublic Pathing pathing;\n\n\tpublic RoofGrid roofGrid;\n\n\tpublic FertilityGrid fertilityGrid;\n\n\tpublic SnowGrid snowGrid;\n\n\tpublic DeepResourceGrid deepResourceGrid;\n\n\tpublic ExitMapGrid exitMapGrid;\n\n\tpublic AvoidGrid avoidGrid;\n\n\tpublic GasGrid gasGrid;\n\n\tpublic PollutionGrid pollutionGrid;\n\n\tpublic SubstructureGrid substructureGrid;\n\n\tpublic WaterBodyTracker waterBodyTracker;\n\n\tpublic SandGrid sandGrid;\n\n\tpublic LinkGrid linkGrid;\n\n\tpublic PowerNetManager powerNetManager;\n\n\tpublic PowerNetGrid powerNetGrid;\n\n\tpublic RegionMaker regionMaker;\n\n\tpublic PathFinder pathFinder;\n\n\tpublic PawnPathPool pawnPathPool;\n\n\tpublic RegionAndRoomUpdater regionAndRoomUpdater;\n\n\tpublic RegionLinkDatabase regionLinkDatabase;\n\n\tpublic MoteCounter moteCounter;\n\n\tpublic GatherSpotLister gatherSpotLister;\n\n\tpublic WindManager windManager;\n\n\tpublic ListerBuildingsRepairable listerBuildingsRepairable;\n\n\tpublic ListerHaulables listerHaulables;\n\n\tpublic ListerMergeables listerMergeables;\n\n\tpublic ListerArtificialBuildingsForMeditation listerArtificialBuildingsForMeditation;\n\n\tpublic ListerBuldingOfDefInProximity listerBuldingOfDefInProximity;\n\n\tpublic ListerBuildingWithTagInProximity listerBuildingWithTagInProximity;\n\n\tpublic ListerFilthInHomeArea listerFilthInHomeArea;\n\n\tpublic Reachability reachability;\n\n\tpublic ItemAvailability itemAvailability;\n\n\tpublic AutoBuildRoofAreaSetter autoBuildRoofAreaSetter;\n\n\tpublic RoofCollapseBufferResolver roofCollapseBufferResolver;\n\n\tpublic RoofCollapseBuffer roofCollapseBuffer;\n\n\tpublic WildAnimalSpawner wildAnimalSpawner;\n\n\tpublic WildPlantSpawner wildPlantSpawner;\n\n\tpublic SteadyEnvironmentEffects steadyEnvironmentEffects;\n\n\tpublic TempTerrainManager tempTerrain;\n\n\tpublic FreezeManager freezeManager;\n\n\tpublic SkyManager skyManager;\n\n\tpublic OverlayDrawer overlayDrawer;\n\n\tpublic FloodFiller floodFiller;\n\n\tpublic WeatherDecider weatherDecider;\n\n\tpublic FireWatcher fireWatcher;\n\n\tpublic DangerWatcher dangerWatcher;\n\n\tpublic DamageWatcher damageWatcher;\n\n\tpublic StrengthWatcher strengthWatcher;\n\n\tpublic WealthWatcher wealthWatcher;\n\n\tpublic RegionDirtyer regionDirtyer;\n\n\tpublic MapCellsInRandomOrder cellsInRandomOrder;\n\n\tpublic RememberedCameraPos rememberedCameraPos;\n\n\tpublic MineStrikeManager mineStrikeManager;\n\n\tpublic StoryState storyState;\n\n\tpublic RoadInfo roadInfo;\n\n\tpublic WaterInfo waterInfo;\n\n\tpublic RetainedCaravanData retainedCaravanData;\n\n\tpublic TemporaryThingDrawer temporaryThingDrawer;\n\n\tpublic AnimalPenManager animalPenManager;\n\n\tpublic MapPlantGrowthRateCalculator plantGrowthRateCalculator;\n\n\tpublic AutoSlaughterManager autoSlaughterManager;\n\n\tpublic TreeDestructionTracker treeDestructionTracker;\n\n\tpublic StorageGroupManager storageGroups;\n\n\tpublic EffecterMaintainer effecterMaintainer;\n\n\tpublic PostTickVisuals postTickVisuals;\n\n\tpublic List layoutStructureSketches = new List();\n\n\tpublic ThingListChangedCallbacks thingListChangedCallbacks = new ThingListChangedCallbacks();\n\n\tpublic List landingBlockers = new List();\n\n\tpublic Tile pocketTileInfo;\n\n\tpublic const string ThingSaveKey = \"thing\";\n\n\t[TweakValue(\"Graphics_Shadow\", 0f, 100f)]\n\tprivate static bool AlwaysRedrawShadows;\n\n\tprivate MixedBiomeMapComponent mixedBiomeComp;\n\n\tpublic int Index => Find.Maps.IndexOf(this);\n\n\tpublic IntVec3 Size => info.Size;\n\n\tpublic IntVec3 Center => new IntVec3(Size.x / 2, 0, Size.z / 2);\n\n\tpublic Faction ParentFaction => info.parent?.Faction;\n\n\tpublic int Area => Size.x * Size.z;\n\n\tpublic IThingHolder ParentHolder => info.parent;\n\n\tpublic bool DrawMapClippers => !generatorDef.disableMapClippers;\n\n\tpublic bool CanEverExit\n\t{\n\t\tget\n\t\t{\n\t\t\tif (!info.isPocketMap)\n\t\t\t{\n\t\t\t\treturn Biome.canExitMap;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tpublic Color? FogOfWarColor\n\t{\n\t\tget\n\t\t{\n\t\t\treturn fogOfWarColor ?? Biome.fogOfWarColor;\n\t\t}\n\t\tset\n\t\t{\n\t\t\tfogOfWarColor = value;\n\t\t}\n\t}\n\n\tpublic OrbitalDebrisDef OrbitalDebris\n\t{\n\t\tget\n\t\t{\n\t\t\treturn orbitalDebris ?? Biome.orbitalDebris;\n\t\t}\n\t\tset\n\t\t{\n\t\t\torbitalDebris = value;\n\t\t}\n\t}\n\n\tpublic Material MapEdgeMaterial\n\t{\n\t\tget\n\t\t{\n\t\t\tif (ModsConfig.AnomalyActive && generatorDef == MapGeneratorDefOf.MetalHell)\n\t\t\t{\n\t\t\t\treturn MapEdgeClipDrawer.ClipMatMetalhell;\n\t\t\t}\n\t\t\tWorldObject parent = Parent;\n\t\t\tif (parent != null && parent.def.MapEdgeMaterial != null)\n\t\t\t{\n\t\t\t\treturn parent.def.MapEdgeMaterial;\n\t\t\t}\n\t\t\treturn MapEdgeClipDrawer.ClipMat;\n\t\t}\n\t}\n\n\tpublic bool Disposed { get; private set; }\n\n\tpublic IEnumerable AllCells\n\t{\n\t\tget\n\t\t{\n\t\t\tfor (int z = 0; z < Size.z; z++)\n\t\t\t{\n\t\t\t\tfor (int y = 0; y < Size.y; y++)\n\t\t\t\t{\n\t\t\t\t\tfor (int x = 0; x < Size.x; x++)\n\t\t\t\t\t{\n\t\t\t\t\t\tyield return new IntVec3(x, y, z);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic bool IsPlayerHome\n\t{\n\t\tget\n\t\t{\n\t\t\tif (!wasSpawnedViaGravShipLanding)\n\t\t\t{\n\t\t\t\tif (info?.parent != null && info.parent.Faction == Faction.OfPlayer)\n\t\t\t\t{\n\t\t\t\t\treturn info.parent.def.canBePlayerHome;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tpublic bool TreatAsPlayerHomeForThreatPoints\n\t{\n\t\tget\n\t\t{\n\t\t\tif (IsPlayerHome)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (info.parent != null && info.parent.def.treatAsPlayerHome)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tpublic bool IsTempIncidentMap => info.parent.def.isTempIncidentMapOwner;\n\n\tpublic PlanetTile Tile => info.Tile;\n\n\tpublic Tile TileInfo\n\t{\n\t\tget\n\t\t{\n\t\t\tif (!IsPocketMap)\n\t\t\t{\n\t\t\t\treturn Find.WorldGrid[Tile];\n\t\t\t}\n\t\t\treturn pocketTileInfo;\n\t\t}\n\t}\n\n\tpublic BiomeDef Biome => TileInfo.PrimaryBiome;\n\n\tpublic IEnumerable Biomes => TileInfo.Biomes;\n\n\tpublic MixedBiomeMapComponent MixedBiomeComp => mixedBiomeComp ?? (mixedBiomeComp = GetComponent());\n\n\tpublic bool IsStartingMap => Find.GameInfo.startingTile == Tile;\n\n\tpublic bool IsPocketMap => info.isPocketMap;\n\n\tpublic StoryState StoryState => storyState;\n\n\tpublic GameConditionManager GameConditionManager => gameConditionManager;\n\n\tpublic float PlayerWealthForStoryteller\n\t{\n\t\tget\n\t\t{\n\t\t\tif (TreatAsPlayerHomeForThreatPoints)\n\t\t\t{\n\t\t\t\tif (Find.Storyteller.difficulty.fixedWealthMode)\n\t\t\t\t{\n\t\t\t\t\treturn StorytellerUtility.FixedWealthModeMapWealthFromTimeCurve.Evaluate(AgeInDays * Find.Storyteller.difficulty.fixedWealthTimeFactor);\n\t\t\t\t}\n\t\t\t\treturn wealthWatcher.WealthItems + wealthWatcher.WealthBuildings * 0.5f + wealthWatcher.WealthPawns;\n\t\t\t}\n\t\t\tfloat num = 0f;\n\t\t\tforeach (Pawn item in mapPawns.PawnsInFaction(Faction.OfPlayer))\n\t\t\t{\n\t\t\t\tif (item.IsFreeColonist)\n\t\t\t\t{\n\t\t\t\t\tnum += WealthWatcher.GetEquipmentApparelAndInventoryWealth(item);\n\t\t\t\t}\n\t\t\t\tif (item.IsAnimal)\n\t\t\t\t{\n\t\t\t\t\tnum += item.MarketValue;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn num;\n\t\t}\n\t}\n\n\tpublic IEnumerable PlayerPawnsForStoryteller => mapPawns.PawnsInFaction(Faction.OfPlayer);\n\n\tpublic FloatRange IncidentPointsRandomFactorRange => FloatRange.One;\n\n\tpublic MapParent Parent => info.parent;\n\n\tpublic PocketMapParent PocketMapParent\n\t{\n\t\tget\n\t\t{\n\t\t\tif (!IsPocketMap)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn Parent as PocketMapParent;\n\t\t}\n\t}\n\n\tpublic IEnumerable ChildPocketMaps\n\t{\n\t\tget\n\t\t{\n\t\t\tforeach (PocketMapParent pocketMap in Find.World.pocketMaps)\n\t\t\t{\n\t\t\t\tif (pocketMap.sourceMap == this)\n\t\t\t\t{\n\t\t\t\t\tyield return pocketMap.Map;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic float AgeInDays => (float)(Find.TickManager.TicksGame - generationTick) / 60000f;\n\n\tpublic int NextGenSeed => HashCode.Combine(TileInfo.tile.Valid ? TileInfo.tile.GetHashCode() : uniqueID, generatedId++, Find.World.info.Seed);\n\n\tpublic int ConstantRandSeed => uniqueID ^ 0xFDA252;\n\n\tpublic IEnumerator GetEnumerator()\n\t{\n\t\tforeach (IntVec3 allCell in AllCells)\n\t\t{\n\t\t\tyield return allCell;\n\t\t}\n\t}\n\n\tpublic IEnumerable IncidentTargetTags()\n\t{\n\t\treturn info.parent?.IncidentTargetTags() ?? Enumerable.Empty();\n\t}\n\n\tpublic void ConstructComponents()\n\t{\n\t\tspawnedThings = new ThingOwner(this);\n\t\tcellIndices = new CellIndices(this);\n\t\tlisterThings = new ListerThings(ListerThingsUse.Global, thingListChangedCallbacks);\n\t\tlisterBuildings = new ListerBuildings();\n\t\tmapPawns = new MapPawns(this);\n\t\tdynamicDrawManager = new DynamicDrawManager(this);\n\t\tmapDrawer = new MapDrawer(this);\n\t\ttooltipGiverList = new TooltipGiverList();\n\t\tpawnDestinationReservationManager = new PawnDestinationReservationManager();\n\t\treservationManager = new ReservationManager(this);\n\t\tenrouteManager = new EnrouteManager(this);\n\t\tphysicalInteractionReservationManager = new PhysicalInteractionReservationManager();\n\t\tdesignationManager = new DesignationManager(this);\n\t\tlordManager = new LordManager(this);\n\t\tdebugDrawer = new DebugCellDrawer();\n\t\tpassingShipManager = new PassingShipManager(this);\n\t\thaulDestinationManager = new HaulDestinationManager(this);\n\t\tgameConditionManager = new GameConditionManager(this);\n\t\tweatherManager = new WeatherManager(this);\n\t\tzoneManager = new ZoneManager(this);\n\t\tplanManager = new PlanManager(this);\n\t\tresourceCounter = new ResourceCounter(this);\n\t\tmapTemperature = new MapTemperature(this);\n\t\tTemperatureVacuumCache = new TemperatureVacuumCache(this);\n\t\tareaManager = new AreaManager(this);\n\t\tattackTargetsCache = new AttackTargetsCache(this);\n\t\tattackTargetReservationManager = new AttackTargetReservationManager(this);\n\t\tlordsStarter = new VoluntarilyJoinableLordsStarter(this);\n\t\tflecks = new FleckManager(this);\n\t\tdeferredSpawner = new DeferredSpawner(this);\n\t\tthingGrid = new ThingGrid(this);\n\t\tcoverGrid = new CoverGrid(this);\n\t\tedificeGrid = new EdificeGrid(this);\n\t\tblueprintGrid = new BlueprintGrid(this);\n\t\tfogGrid = new FogGrid(this);\n\t\tglowGrid = new GlowGrid(this);\n\t\tregionGrid = new RegionGrid(this);\n\t\tterrainGrid = new TerrainGrid(this);\n\t\tpathing = new Pathing(this);\n\t\troofGrid = new RoofGrid(this);\n\t\tfertilityGrid = new FertilityGrid(this);\n\t\tsnowGrid = new SnowGrid(this);\n\t\tgasGrid = new GasGrid(this);\n\t\tpollutionGrid = new PollutionGrid(this);\n\t\tdeepResourceGrid = new DeepResourceGrid(this);\n\t\texitMapGrid = new ExitMapGrid(this);\n\t\tavoidGrid = new AvoidGrid(this);\n\t\tlinkGrid = new LinkGrid(this);\n\t\tpowerNetManager = new PowerNetManager(this);\n\t\tpowerNetGrid = new PowerNetGrid(this);\n\t\tregionMaker = new RegionMaker(this);\n\t\tpathFinder = new PathFinder(this);\n\t\tpawnPathPool = new PawnPathPool(this);\n\t\tregionAndRoomUpdater = new RegionAndRoomUpdater(this);\n\t\tregionLinkDatabase = new RegionLinkDatabase();\n\t\tmoteCounter = new MoteCounter();\n\t\tgatherSpotLister = new GatherSpotLister();\n\t\twindManager = new WindManager(this);\n\t\tlisterBuildingsRepairable = new ListerBuildingsRepairable();\n\t\tlisterHaulables = new ListerHaulables(this);\n\t\tlisterMergeables = new ListerMergeables(this);\n\t\tlisterFilthInHomeArea = new ListerFilthInHomeArea(this);\n\t\tlisterArtificialBuildingsForMeditation = new ListerArtificialBuildingsForMeditation(this);\n\t\tlisterBuldingOfDefInProximity = new ListerBuldingOfDefInProximity(this);\n\t\tlisterBuildingWithTagInProximity = new ListerBuildingWithTagInProximity(this);\n\t\treachability = new Reachability(this);\n\t\titemAvailability = new ItemAvailability(this);\n\t\tautoBuildRoofAreaSetter = new AutoBuildRoofAreaSetter(this);\n\t\troofCollapseBufferResolver = new RoofCollapseBufferResolver(this);\n\t\troofCollapseBuffer = new RoofCollapseBuffer();\n\t\twildAnimalSpawner = new WildAnimalSpawner(this);\n\t\twildPlantSpawner = new WildPlantSpawner(this);\n\t\tsteadyEnvironmentEffects = new SteadyEnvironmentEffects(this);\n\t\ttempTerrain = new TempTerrainManager(this);\n\t\tskyManager = new SkyManager(this);\n\t\toverlayDrawer = new OverlayDrawer();\n\t\tfloodFiller = new FloodFiller(this);\n\t\tweatherDecider = new WeatherDecider(this);\n\t\tfireWatcher = new FireWatcher(this);\n\t\tdangerWatcher = new DangerWatcher(this);\n\t\tdamageWatcher = new DamageWatcher();\n\t\tstrengthWatcher = new StrengthWatcher(this);\n\t\twealthWatcher = new WealthWatcher(this);\n\t\tregionDirtyer = new RegionDirtyer(this);\n\t\tcellsInRandomOrder = new MapCellsInRandomOrder(this);\n\t\trememberedCameraPos = new RememberedCameraPos(this);\n\t\tmineStrikeManager = new MineStrikeManager();\n\t\tstoryState = new StoryState(this);\n\t\tretainedCaravanData = new RetainedCaravanData(this);\n\t\ttemporaryThingDrawer = new TemporaryThingDrawer();\n\t\tanimalPenManager = new AnimalPenManager(this);\n\t\tplantGrowthRateCalculator = new MapPlantGrowthRateCalculator();\n\t\tautoSlaughterManager = new AutoSlaughterManager(this);\n\t\ttreeDestructionTracker = new TreeDestructionTracker(this);\n\t\tstorageGroups = new StorageGroupManager(this);\n\t\teffecterMaintainer = new EffecterMaintainer(this);\n\t\tpostTickVisuals = new PostTickVisuals(this);\n\t\tif (ModsConfig.OdysseyActive)\n\t\t{\n\t\t\tsubstructureGrid = new SubstructureGrid(this);\n\t\t\twaterBodyTracker = new WaterBodyTracker(this);\n\t\t\tfreezeManager = new FreezeManager(this);\n\t\t\tsandGrid = new SandGrid(this);\n\t\t}\n\t\tcomponents.Clear();\n\t\tFillComponents();\n\t}\n\n\tpublic void ExposeData()\n\t{\n\t\tif (Scribe.mode == LoadSaveMode.LoadingVars)\n\t\t{\n\t\t\tevents = new MapEvents(this);\n\t\t}\n\t\tScribe_Values.Look(ref uniqueID, \"uniqueID\", -1);\n\t\tScribe_Values.Look(ref generationTick, \"generationTick\", 0);\n\t\tScribe_Values.Look(ref wasSpawnedViaGravShipLanding, \"wasSpawnedViaGravShipLanding\", defaultValue: false);\n\t\tScribe_Values.Look(ref fogOfWarColor, \"fogOfWarColor\");\n\t\tScribe_Values.Look(ref generatedId, \"generatedId\", 0);\n\t\tScribe_Defs.Look(ref orbitalDebris, \"orbitalDebris\");\n\t\tScribe_Defs.Look(ref generatorDef, \"generatorDef\");\n\t\tScribe_Deep.Look(ref pocketTileInfo, \"pocketTileInfo\");\n\t\tScribe_Deep.Look(ref info, \"mapInfo\");\n\t\tScribe_Collections.Look(ref layoutStructureSketches, \"layoutStructureSketches\", LookMode.Deep);\n\t\tScribe_Collections.Look(ref landingBlockers, \"landingBlockers\", LookMode.Undefined);\n\t\tif (Scribe.mode == LoadSaveMode.Saving)\n\t\t{\n\t\t\tcompressor = new MapFileCompressor(this);\n\t\t\tcompressor.BuildCompressedString();\n\t\t\tExposeComponents();\n\t\t\tcompressor.ExposeData();\n\t\t\tHashSet hashSet = new HashSet();\n\t\t\tif (Scribe.EnterNode(\"things\"))\n\t\t\t{\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tforeach (Thing allThing in listerThings.AllThings)\n\t\t\t\t\t{\n\t\t\t\t\t\ttry\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (allThing.def.isSaveable && !allThing.IsSaveCompressible())\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (!hashSet.Add(allThing.ThingID))\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tLog.Error(\"Saving Thing with already-used ID \" + allThing.ThingID);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\thashSet.Add(allThing.ThingID);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tThing target = allThing;\n\t\t\t\t\t\t\t\tScribe_Deep.Look(ref target, \"thing\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (OutOfMemoryException)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthrow;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (Exception arg)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tLog.Error($\"Exception saving {allThing}: {arg}\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfinally\n\t\t\t\t{\n\t\t\t\t\tScribe.ExitNode();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tLog.Error(\"Could not enter the things node while saving.\");\n\t\t\t}\n\t\t\tcompressor = null;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (Scribe.mode == LoadSaveMode.LoadingVars)\n\t\t\t{\n\t\t\t\tConstructComponents();\n\t\t\t\tregionAndRoomUpdater.Enabled = false;\n\t\t\t\tcompressor = new MapFileCompressor(this);\n\t\t\t}\n\t\t\telse if (Scribe.mode == LoadSaveMode.PostLoadInit && landingBlockers == null)\n\t\t\t{\n\t\t\t\tlandingBlockers = new List();\n\t\t\t}\n\t\t\tExposeComponents();\n\t\t\tDeepProfiler.Start(\"Load compressed things\");\n\t\t\tcompressor.ExposeData();\n\t\t\tDeepProfiler.End();\n\t\t\tDeepProfiler.Start(\"Load non-compressed things\");\n\t\t\tScribe_Collections.Look(ref loadedFullThings, \"things\", LookMode.Deep);\n\t\t\tDeepProfiler.End();\n\t\t}\n\t\tBackCompatibility.PostExposeData(this);\n\t}\n\n\tprivate void FillComponents()\n\t{\n\t\tcomponents.RemoveAll((MapComponent component) => component == null);\n\t\tforeach (Type item3 in typeof(MapComponent).AllSubclassesNonAbstract())\n\t\t{\n\t\t\tif (!typeof(CustomMapComponent).IsAssignableFrom(item3) && GetComponent(item3) == null)\n\t\t\t{\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tMapComponent item = (MapComponent)Activator.CreateInstance(item3, this);\n\t\t\t\t\tcomponents.Add(item);\n\t\t\t\t}\n\t\t\t\tcatch (Exception ex)\n\t\t\t\t{\n\t\t\t\t\tLog.Error(\"Could not instantiate a MapComponent of type \" + item3?.ToString() + \": \" + ex);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (generatorDef?.customMapComponents != null)\n\t\t{\n\t\t\tforeach (Type customMapComponent in generatorDef.customMapComponents)\n\t\t\t{\n\t\t\t\tif (GetComponent(customMapComponent) == null)\n\t\t\t\t{\n\t\t\t\t\ttry\n\t\t\t\t\t{\n\t\t\t\t\t\tMapComponent item2 = (MapComponent)Activator.CreateInstance(customMapComponent, this);\n\t\t\t\t\t\tcomponents.Add(item2);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (Exception ex2)\n\t\t\t\t\t{\n\t\t\t\t\t\tLog.Error(\"Could not instantiate a MapComponent of type \" + customMapComponent?.ToString() + \": \" + ex2);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\troadInfo = GetComponent();\n\t\twaterInfo = GetComponent();\n\t}\n\n\tpublic void FinalizeLoading()\n\t{\n\t\tregionAndRoomUpdater.Enabled = true;\n\t\tList list = compressor.ThingsToSpawnAfterLoad().ToList();\n\t\tcompressor = null;\n\t\tDeepProfiler.Start(\"Merge compressed and non-compressed thing lists\");\n\t\tList list2 = new List(loadedFullThings.Count + list.Count);\n\t\tforeach (Thing item in loadedFullThings.Concat(list))\n\t\t{\n\t\t\tlist2.Add(item);\n\t\t}\n\t\tloadedFullThings.Clear();\n\t\tDeepProfiler.End();\n\t\tDeepProfiler.Start(\"Spawn everything into the map\");\n\t\tBackCompatibility.PreCheckSpawnBackCompatibleThingAfterLoading(this);\n\t\tforeach (Thing item2 in list2)\n\t\t{\n\t\t\tif (item2 is Building)\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\ttry\n\t\t\t{\n\t\t\t\tif (!BackCompatibility.CheckSpawnBackCompatibleThingAfterLoading(item2, this))\n\t\t\t\t{\n\t\t\t\t\tGenSpawn.Spawn(item2, item2.Position, this, item2.Rotation, WipeMode.FullRefund, respawningAfterLoad: true);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (Exception ex)\n\t\t\t{\n\t\t\t\tLog.Error(\"Exception spawning loaded thing \" + item2.ToStringSafe() + \": \" + ex);\n\t\t\t}\n\t\t}\n\t\tforeach (Building item3 in from t in list2.OfType()\n\t\t\torderby t.def.size.Magnitude\n\t\t\tselect t)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tGenSpawn.SpawnBuildingAsPossible(item3, this, respawningAfterLoad: true);\n\t\t\t}\n\t\t\tcatch (Exception ex2)\n\t\t\t{\n\t\t\t\tLog.Error(\"Exception spawning loaded thing \" + item3.ToStringSafe() + \": \" + ex2);\n\t\t\t}\n\t\t}\n\t\tBackCompatibility.PostCheckSpawnBackCompatibleThingAfterLoading(this);\n\t\tDeepProfiler.End();\n\t\tFinalizeInit();\n\t}\n\n\tpublic void FinalizeInit()\n\t{\n\t\tDeepProfiler.Start(\"Finalize geometry\");\n\t\tpathing.RecalculateAllPerceivedPathCosts();\n\t\tregionAndRoomUpdater.Enabled = true;\n\t\tregionAndRoomUpdater.RebuildAllRegionsAndRooms();\n\t\tpowerNetManager.UpdatePowerNetsAndConnections_First();\n\t\tTemperatureVacuumCache.TemperatureVacuumSaveLoad.ApplyLoadedDataToRegions();\n\t\tavoidGrid.Regenerate();\n\t\tanimalPenManager.RebuildAllPens();\n\t\tplantGrowthRateCalculator.BuildFor(this);\n\t\tgasGrid.RecalculateEverHadGas();\n\t\tDeepProfiler.End();\n\t\tDeepProfiler.Start(\"Thing.PostMapInit()\");\n\t\tforeach (Thing item in listerThings.AllThings.ToList())\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\titem.PostMapInit();\n\t\t\t}\n\t\t\tcatch (Exception ex)\n\t\t\t{\n\t\t\t\tLog.Error(\"Error in PostMapInit() for \" + item.ToStringSafe() + \": \" + ex);\n\t\t\t}\n\t\t}\n\t\tDeepProfiler.End();\n\t\tDeepProfiler.Start(\"listerFilthInHomeArea.RebuildAll()\");\n\t\tlisterFilthInHomeArea.RebuildAll();\n\t\tDeepProfiler.End();\n\t\tif (ModsConfig.OdysseyActive)\n\t\t{\n\t\t\tGetComponent().SetDrawerDirty();\n\t\t}\n\t\tLongEventHandler.ExecuteWhenFinished(delegate\n\t\t{\n\t\t\tmapDrawer.RegenerateEverythingNow();\n\t\t});\n\t\tDeepProfiler.Start(\"resourceCounter.UpdateResourceCounts()\");\n\t\tresourceCounter.UpdateResourceCounts();\n\t\tDeepProfiler.End();\n\t\tDeepProfiler.Start(\"wealthWatcher.ForceRecount()\");\n\t\twealthWatcher.ForceRecount(allowDuringInit: true);\n\t\tDeepProfiler.End();\n\t\tif (ModsConfig.OdysseyActive)\n\t\t{\n\t\t\tusing (new ProfilerBlock(\"WaterBodyTracker.ConstructBodies()\"))\n\t\t\t{\n\t\t\t\twaterBodyTracker?.ConstructBodies();\n\t\t\t}\n\t\t}\n\t\tMapComponentUtility.FinalizeInit(this);\n\t\tLongEventHandler.ExecuteWhenFinished(delegate\n\t\t{\n\t\t\tFind.MusicManagerPlay.CheckTransitions();\n\t\t});\n\t}\n\n\tprivate void ExposeComponents()\n\t{\n\t\tScribe_Deep.Look(ref weatherManager, \"weatherManager\", this);\n\t\tScribe_Deep.Look(ref reservationManager, \"reservationManager\", this);\n\t\tScribe_Deep.Look(ref enrouteManager, \"enrouteManager\", this);\n\t\tScribe_Deep.Look(ref physicalInteractionReservationManager, \"physicalInteractionReservationManager\");\n\t\tScribe_Deep.Look(ref planManager, \"planManager\", this);\n\t\tScribe_Deep.Look(ref designationManager, \"designationManager\", this);\n\t\tScribe_Deep.Look(ref pawnDestinationReservationManager, \"pawnDestinationReservationManager\");\n\t\tScribe_Deep.Look(ref lordManager, \"lordManager\", this);\n\t\tScribe_Deep.Look(ref passingShipManager, \"visitorManager\", this);\n\t\tScribe_Deep.Look(ref gameConditionManager, \"gameConditionManager\", this);\n\t\tScribe_Deep.Look(ref fogGrid, \"fogGrid\", this);\n\t\tScribe_Deep.Look(ref roofGrid, \"roofGrid\", this);\n\t\tScribe_Deep.Look(ref terrainGrid, \"terrainGrid\", this);\n\t\tScribe_Deep.Look(ref zoneManager, \"zoneManager\", this);\n\t\tScribe_Deep.Look(ref TemperatureVacuumCache, \"temperatureCache\", this);\n\t\tScribe_Deep.Look(ref snowGrid, \"snowGrid\", this);\n\t\tScribe_Deep.Look(ref gasGrid, \"gasGrid\", this);\n\t\tScribe_Deep.Look(ref pollutionGrid, \"pollutionGrid\", this);\n\t\tScribe_Deep.Look(ref waterBodyTracker, \"waterBodyTracker\", this);\n\t\tScribe_Deep.Look(ref areaManager, \"areaManager\", this);\n\t\tScribe_Deep.Look(ref lordsStarter, \"lordsStarter\", this);\n\t\tScribe_Deep.Look(ref attackTargetReservationManager, \"attackTargetReservationManager\", this);\n\t\tScribe_Deep.Look(ref deepResourceGrid, \"deepResourceGrid\", this);\n\t\tScribe_Deep.Look(ref weatherDecider, \"weatherDecider\", this);\n\t\tScribe_Deep.Look(ref damageWatcher, \"damageWatcher\");\n\t\tScribe_Deep.Look(ref rememberedCameraPos, \"rememberedCameraPos\", this);\n\t\tScribe_Deep.Look(ref mineStrikeManager, \"mineStrikeManager\");\n\t\tScribe_Deep.Look(ref retainedCaravanData, \"retainedCaravanData\", this);\n\t\tScribe_Deep.Look(ref storyState, \"storyState\", this);\n\t\tScribe_Deep.Look(ref tempTerrain, \"tempTerrain\", this);\n\t\tScribe_Deep.Look(ref wildPlantSpawner, \"wildPlantSpawner\", this);\n\t\tScribe_Deep.Look(ref temporaryThingDrawer, \"temporaryThingDrawer\");\n\t\tScribe_Deep.Look(ref flecks, \"flecks\", this);\n\t\tScribe_Deep.Look(ref deferredSpawner, \"deferredSpawner\", this);\n\t\tScribe_Deep.Look(ref autoSlaughterManager, \"autoSlaughterManager\", this);\n\t\tScribe_Deep.Look(ref treeDestructionTracker, \"treeDestructionTracker\", this);\n\t\tScribe_Deep.Look(ref storageGroups, \"storageGroups\", this);\n\t\tScribe_Deep.Look(ref sandGrid, \"sandGrid\", this);\n\t\tScribe_Collections.Look(ref components, \"components\", LookMode.Deep, this);\n\t\tif (Scribe.mode == LoadSaveMode.PostLoadInit)\n\t\t{\n\t\t\tif (planManager == null)\n\t\t\t{\n\t\t\t\tplanManager = new PlanManager(this);\n\t\t\t}\n\t\t\tif (ModsConfig.BiotechActive && pollutionGrid == null)\n\t\t\t{\n\t\t\t\tpollutionGrid = new PollutionGrid(this);\n\t\t\t}\n\t\t\tif (ModsConfig.OdysseyActive)\n\t\t\t{\n\t\t\t\tif (sandGrid == null)\n\t\t\t\t{\n\t\t\t\t\tsandGrid = new SandGrid(this);\n\t\t\t\t}\n\t\t\t\tif (substructureGrid == null)\n\t\t\t\t{\n\t\t\t\t\tsubstructureGrid = new SubstructureGrid(this);\n\t\t\t\t}\n\t\t\t\tif (waterBodyTracker == null)\n\t\t\t\t{\n\t\t\t\t\twaterBodyTracker = new WaterBodyTracker(this);\n\t\t\t\t}\n\t\t\t\tif (freezeManager == null)\n\t\t\t\t{\n\t\t\t\t\tfreezeManager = new FreezeManager(this);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tFillComponents();\n\t\tBackCompatibility.PostExposeData(this);\n\t}\n\n\tpublic void MapPreTick()\n\t{\n\t\titemAvailability.Tick();\n\t\tlisterHaulables.ListerHaulablesTick();\n\t\ttry\n\t\t{\n\t\t\tautoBuildRoofAreaSetter.AutoBuildRoofAreaSetterTick_First();\n\t\t}\n\t\tcatch (Exception ex)\n\t\t{\n\t\t\tLog.Error(ex.ToString());\n\t\t}\n\t\troofCollapseBufferResolver.CollapseRoofsMarkedToCollapse();\n\t\twindManager.WindManagerTick();\n\t\ttry\n\t\t{\n\t\t\tmapTemperature.MapTemperatureTick();\n\t\t}\n\t\tcatch (Exception ex2)\n\t\t{\n\t\t\tLog.Error(ex2.ToString());\n\t\t}\n\t\ttemporaryThingDrawer.Tick();\n\t\ttry\n\t\t{\n\t\t\tpathFinder.PathFinderTick();\n\t\t}\n\t\tcatch (Exception ex3)\n\t\t{\n\t\t\tLog.Error(ex3.ToString());\n\t\t}\n\t}\n\n\tpublic void MapPostTick()\n\t{\n\t\ttry\n\t\t{\n\t\t\twildAnimalSpawner.WildAnimalSpawnerTick();\n\t\t}\n\t\tcatch (Exception ex)\n\t\t{\n\t\t\tLog.Error(ex.ToString());\n\t\t}\n\t\ttry\n\t\t{\n\t\t\twildPlantSpawner.WildPlantSpawnerTick();\n\t\t}\n\t\tcatch (Exception ex2)\n\t\t{\n\t\t\tLog.Error(ex2.ToString());\n\t\t}\n\t\ttry\n\t\t{\n\t\t\tpowerNetManager.PowerNetsTick();\n\t\t}\n\t\tcatch (Exception ex3)\n\t\t{\n\t\t\tLog.Error(ex3.ToString());\n\t\t}\n\t\ttry\n\t\t{\n\t\t\tsteadyEnvironmentEffects.SteadyEnvironmentEffectsTick();\n\t\t}\n\t\tcatch (Exception ex4)\n\t\t{\n\t\t\tLog.Error(ex4.ToString());\n\t\t}\n\t\ttry\n\t\t{\n\t\t\ttempTerrain.Tick();\n\t\t}\n\t\tcatch (Exception ex5)\n\t\t{\n\t\t\tLog.Error(ex5.ToString());\n\t\t}\n\t\ttry\n\t\t{\n\t\t\tgasGrid.Tick();\n\t\t}\n\t\tcatch (Exception ex6)\n\t\t{\n\t\t\tLog.Error(ex6.ToString());\n\t\t}\n\t\tif (ModsConfig.BiotechActive)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tpollutionGrid.PollutionTick();\n\t\t\t}\n\t\t\tcatch (Exception ex7)\n\t\t\t{\n\t\t\t\tLog.Error(ex7.ToString());\n\t\t\t}\n\t\t}\n\t\ttry\n\t\t{\n\t\t\tdeferredSpawner.DeferredSpawnerTick();\n\t\t}\n\t\tcatch (Exception ex8)\n\t\t{\n\t\t\tLog.Error(ex8.ToString());\n\t\t}\n\t\ttry\n\t\t{\n\t\t\tlordManager.LordManagerTick();\n\t\t}\n\t\tcatch (Exception ex9)\n\t\t{\n\t\t\tLog.Error(ex9.ToString());\n\t\t}\n\t\ttry\n\t\t{\n\t\t\tpassingShipManager.PassingShipManagerTick();\n\t\t}\n\t\tcatch (Exception ex10)\n\t\t{\n\t\t\tLog.Error(ex10.ToString());\n\t\t}\n\t\ttry\n\t\t{\n\t\t\tdebugDrawer.DebugDrawerTick();\n\t\t}\n\t\tcatch (Exception ex11)\n\t\t{\n\t\t\tLog.Error(ex11.ToString());\n\t\t}\n\t\ttry\n\t\t{\n\t\t\tlordsStarter.VoluntarilyJoinableLordsStarterTick();\n\t\t}\n\t\tcatch (Exception ex12)\n\t\t{\n\t\t\tLog.Error(ex12.ToString());\n\t\t}\n\t\ttry\n\t\t{\n\t\t\tgameConditionManager.GameConditionManagerTick();\n\t\t}\n\t\tcatch (Exception ex13)\n\t\t{\n\t\t\tLog.Error(ex13.ToString());\n\t\t}\n\t\ttry\n\t\t{\n\t\t\tweatherManager.WeatherManagerTick();\n\t\t}\n\t\tcatch (Exception ex14)\n\t\t{\n\t\t\tLog.Error(ex14.ToString());\n\t\t}\n\t\ttry\n\t\t{\n\t\t\tresourceCounter.ResourceCounterTick();\n\t\t}\n\t\tcatch (Exception ex15)\n\t\t{\n\t\t\tLog.Error(ex15.ToString());\n\t\t}\n\t\ttry\n\t\t{\n\t\t\tweatherDecider.WeatherDeciderTick();\n\t\t}\n\t\tcatch (Exception ex16)\n\t\t{\n\t\t\tLog.Error(ex16.ToString());\n\t\t}\n\t\ttry\n\t\t{\n\t\t\tfireWatcher.FireWatcherTick();\n\t\t}\n\t\tcatch (Exception ex17)\n\t\t{\n\t\t\tLog.Error(ex17.ToString());\n\t\t}\n\t\tif (ModsConfig.OdysseyActive)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\twaterBodyTracker?.Tick();\n\t\t\t}\n\t\t\tcatch (Exception ex18)\n\t\t\t{\n\t\t\t\tLog.Error(ex18.ToString());\n\t\t\t}\n\t\t}\n\t\ttry\n\t\t{\n\t\t\tflecks.FleckManagerTick();\n\t\t}\n\t\tcatch (Exception ex19)\n\t\t{\n\t\t\tLog.Error(ex19.ToString());\n\t\t}\n\t\ttry\n\t\t{\n\t\t\teffecterMaintainer.EffecterMaintainerTick();\n\t\t}\n\t\tcatch (Exception ex20)\n\t\t{\n\t\t\tLog.Error(ex20.ToString());\n\t\t}\n\t\tMapComponentUtility.MapComponentTick(this);\n\t\ttry\n\t\t{\n\t\t\tforeach (TileMutatorDef mutator in TileInfo.Mutators)\n\t\t\t{\n\t\t\t\tmutator.Worker?.Tick(this);\n\t\t\t}\n\t\t}\n\t\tcatch (Exception ex21)\n\t\t{\n\t\t\tLog.Error(ex21.ToString());\n\t\t}\n\t}\n\n\tpublic void MapUpdate()\n\t{\n\t\tif (Disposed)\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tbool drawingMap = WorldRendererUtility.DrawingMap;\n\t\tskyManager.SkyManagerUpdate();\n\t\tpowerNetManager.UpdatePowerNetsAndConnections_First();\n\t\tregionGrid.UpdateClean();\n\t\tregionAndRoomUpdater.TryRebuildDirtyRegionsAndRooms();\n\t\tglowGrid.GlowGridUpdate_First();\n\t\tlordManager.LordManagerUpdate();\n\t\tpostTickVisuals.ProcessPostTickVisuals();\n\t\tif (drawingMap && Find.CurrentMap == this)\n\t\t{\n\t\t\tif (AlwaysRedrawShadows)\n\t\t\t{\n\t\t\t\tmapDrawer.WholeMapChanged(MapMeshFlagDefOf.Things);\n\t\t\t}\n\t\t\tGlobalRendererUtility.UpdateGlobalShadersParams();\n\t\t\tPlantFallColors.SetFallShaderGlobals(this);\n\t\t\twaterInfo.SetTextures();\n\t\t\tavoidGrid.DebugDrawOnMap();\n\t\t\tBreachingGridDebug.DebugDrawAllOnMap(this);\n\t\t\tmapDrawer.MapMeshDrawerUpdate_First();\n\t\t\tpowerNetGrid.DrawDebugPowerNetGrid();\n\t\t\tDoorsDebugDrawer.DrawDebug();\n\t\t\tmapDrawer.DrawMapMesh();\n\t\t\tdynamicDrawManager.DrawDynamicThings();\n\t\t\tgameConditionManager.GameConditionManagerDraw(this);\n\t\t\tMapEdgeClipDrawer.DrawClippers(this);\n\t\t\tdesignationManager.DrawDesignations();\n\t\t\toverlayDrawer.DrawAllOverlays();\n\t\t\ttemporaryThingDrawer.Draw();\n\t\t\tflecks.FleckManagerDraw();\n\t\t}\n\t\ttry\n\t\t{\n\t\t\tareaManager.AreaManagerUpdate();\n\t\t}\n\t\tcatch (Exception ex)\n\t\t{\n\t\t\tLog.Error(ex.ToString());\n\t\t}\n\t\tweatherManager.WeatherManagerUpdate();\n\t\ttry\n\t\t{\n\t\t\tflecks.FleckManagerUpdate();\n\t\t}\n\t\tcatch (Exception ex2)\n\t\t{\n\t\t\tLog.Error(ex2.ToString());\n\t\t}\n\t\tMapComponentUtility.MapComponentUpdate(this);\n\t}\n\n\tpublic T GetComponent() where T : MapComponent\n\t{\n\t\tfor (int i = 0; i < components.Count; i++)\n\t\t{\n\t\t\tif (components[i] is T result)\n\t\t\t{\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic MapComponent GetComponent(Type type)\n\t{\n\t\tfor (int i = 0; i < components.Count; i++)\n\t\t{\n\t\t\tif (type.IsInstanceOfType(components[i]))\n\t\t\t{\n\t\t\t\treturn components[i];\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic void MapOnGUI()\n\t{\n\t\tDevGUISketches();\n\t\tDevRoadPaths();\n\t\tpathFinder.OnGUI();\n\t}\n\n\tprivate static void DevRoadPaths()\n\t{\n\t\tif (!DebugViewSettings.drawRoadPaths)\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tfor (int i = 0; i < GenStep_Roads.paths.Count; i++)\n\t\t{\n\t\t\tforeach (IntVec3 item in GenStep_Roads.paths[i])\n\t\t\t{\n\t\t\t\tVector2 vector = item.ToVector3Shifted().MapToUIPosition();\n\t\t\t\tDevGUI.DrawRect(new Rect(vector.x, vector.y, 5f, 5f), (i % 2 == 0) ? Color.yellow : Color.blue);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void DevGUISketches()\n\t{\n\t\tif ((!DebugViewSettings.drawMapGraphs && !DebugViewSettings.drawMapRooms) || layoutStructureSketches.NullOrEmpty())\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tforeach (LayoutStructureSketch layoutStructureSketch in layoutStructureSketches)\n\t\t{\n\t\t\tDebugGUILayoutStructure(layoutStructureSketch);\n\t\t}\n\t}\n\n\tprivate void DebugGUILayoutStructure(LayoutStructureSketch layoutStructureSketch)\n\t{\n\t\tDevDrawOutline(layoutStructureSketch.structureLayout.container, Color.yellow);\n\t\tVector2 pos = (layoutStructureSketch.structureLayout.container.Min - IntVec3.South).ToVector3().MapToUIPosition();\n\t\tDevDrawLabel(layoutStructureSketch.layoutDef.defName, pos);\n\t\tif (DebugViewSettings.drawMapGraphs && layoutStructureSketch.structureLayout?.neighbours != null)\n\t\t{\n\t\t\tforeach (KeyValuePair> connection in layoutStructureSketch.structureLayout.neighbours.connections)\n\t\t\t{\n\t\t\t\tforeach (Vector2 item in connection.Value)\n\t\t\t\t{\n\t\t\t\t\tVector2 vector = layoutStructureSketch.center.ToVector2();\n\t\t\t\t\tVector2 vector2 = vector + connection.Key;\n\t\t\t\t\tVector2 vector3 = vector + item;\n\t\t\t\t\tVector2 start = new Vector3(vector2.x, 0f, vector2.y).MapToUIPosition();\n\t\t\t\t\tVector2 end = new Vector3(vector3.x, 0f, vector3.y).MapToUIPosition();\n\t\t\t\t\tDevGUI.DrawLine(start, end, Color.green, 2f);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!DebugViewSettings.drawMapRooms || layoutStructureSketch.structureLayout?.Rooms == null)\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tforeach (LayoutRoom room in layoutStructureSketch.structureLayout.Rooms)\n\t\t{\n\t\t\tstring name = \"NA\";\n\t\t\tif (!room.defs.NullOrEmpty())\n\t\t\t{\n\t\t\t\tname = room.defs.Select((LayoutRoomDef x) => x.defName).ToCommaList();\n\t\t\t}\n\t\t\tDevDrawLabel(name, room.rects[0].CenterVector3.MapToUIPosition());\n\t\t\tforeach (CellRect rect in room.rects)\n\t\t\t{\n\t\t\t\tDevDrawOutline(rect, Color.blue);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static void DevDrawLabel(string name, Vector2 pos)\n\t{\n\t\tfloat widthCached = name.GetWidthCached();\n\t\tDevGUI.Label(new Rect(pos.x - widthCached / 2f, pos.y, widthCached, 20f), name);\n\t}\n\n\tprivate static void DevDrawOutline(CellRect r, Color color)\n\t{\n\t\tIntVec3 min = r.Min;\n\t\tIntVec3 intVec = r.Max + new IntVec3(1, 0, 1);\n\t\tIntVec3 a = new IntVec3(min.x, 0, min.z);\n\t\tIntVec3 intVec2 = new IntVec3(intVec.x, 0, min.z);\n\t\tIntVec3 intVec3 = new IntVec3(min.x, 0, intVec.z);\n\t\tIntVec3 b = new IntVec3(intVec.x, 0, intVec.z);\n\t\tDevDrawLine(a, intVec2, color);\n\t\tDevDrawLine(a, intVec3, color);\n\t\tDevDrawLine(intVec3, b, color);\n\t\tDevDrawLine(intVec2, b, color);\n\t}\n\n\tprivate static void DevDrawLine(IntVec3 a, IntVec3 b, Color color)\n\t{\n\t\tVector2 start = a.ToVector3().MapToUIPosition();\n\t\tVector2 end = b.ToVector3().MapToUIPosition();\n\t\tDevGUI.DrawLine(start, end, color, 2f);\n\t}\n\n\tpublic string GetUniqueLoadID()\n\t{\n\t\treturn \"Map_\" + uniqueID;\n\t}\n\n\tpublic override string ToString()\n\t{\n\t\tstring text = \"Map-\" + uniqueID;\n\t\tif (IsPlayerHome)\n\t\t{\n\t\t\ttext += \"-PlayerHome\";\n\t\t}\n\t\treturn text;\n\t}\n\n\tpublic ThingOwner GetDirectlyHeldThings()\n\t{\n\t\treturn spawnedThings;\n\t}\n\n\tpublic void GetChildHolders(List outChildren)\n\t{\n\t\tThingOwnerUtility.AppendThingHoldersFromThings(outChildren, listerThings.ThingsInGroup(ThingRequestGroup.ThingHolder));\n\t\tList passingShips = passingShipManager.passingShips;\n\t\tfor (int i = 0; i < passingShips.Count; i++)\n\t\t{\n\t\t\tif (passingShips[i] is IThingHolder item)\n\t\t\t{\n\t\t\t\toutChildren.Add(item);\n\t\t\t}\n\t\t}\n\t\tfor (int j = 0; j < components.Count; j++)\n\t\t{\n\t\t\tif (components[j] is IThingHolder item2)\n\t\t\t{\n\t\t\t\toutChildren.Add(item2);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic void Dispose()\n\t{\n\t\tif (Disposed)\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tDisposed = true;\n\t\tforeach (MapComponent component in components)\n\t\t{\n\t\t\tif (component is IDisposable disposable)\n\t\t\t{\n\t\t\t\tdisposable.Dispose();\n\t\t\t}\n\t\t}\n\t\tif (regionAndRoomUpdater != null)\n\t\t{\n\t\t\tregionAndRoomUpdater.Enabled = false;\n\t\t}\n\t\tpathFinder?.Dispose();\n\t\tlordManager?.Dispose();\n\t\tfogGrid?.Dispose();\n\t\tsnowGrid?.Dispose();\n\t\tglowGrid?.Dispose();\n\t\tsandGrid?.Dispose();\n\t\tavoidGrid?.Dispose();\n\t\tlisterBuildings?.Dispose();\n\t\tlisterThings?.Clear();\n\t\tregionDirtyer?.SetAllDirty();\n\t\tregionGrid?.Dispose();\n\t\tpathing?.Dispose();\n\t\tmapDrawer?.Dispose();\n\t\tResources.UnloadUnusedAssets();\n\t\tMapGenerator.ClearDebugMode();\n\t}\n}\n\n", + "timestamp": "2025-08-25 11:39:06,772" + }, + "MapGenerator": { + "keywords": [ + "MapGenerator" + ], + "question": "MapGenerator class definition", + "embedding": [ + -0.013261166401207447, + 0.05949479714035988, + -0.028810594230890274, + -0.06628279387950897, + 0.02472550980746746, + 0.019918624311685562, + 0.0394686721265316, + 0.050618186593055725, + 0.032496385276317596, + 0.10823937505483627, + 0.0031751547940075397, + -0.01603318750858307, + -0.06695852428674698, + 0.0024917477276176214, + -0.014029039070010185, + 0.04696311056613922, + -0.016048545017838478, + -0.08286885172128677, + -0.02228367328643799, + -0.018981819972395897, + 0.020486850291490555, + -0.026537690311670303, + -0.0036013242788612843, + -0.02455657720565796, + -0.024372287094593048, + -0.001914883148856461, + 0.04994245618581772, + 0.0457652285695076, + 0.006469329819083214, + -0.022790469229221344, + 0.016539983451366425, + -0.04103513062000275, + 0.036704327911138535, + -0.056054726243019104, + 0.03538358584046364, + 0.01372956857085228, + -0.0358135960996151, + 0.05639259144663811, + -0.0018294573528692126, + 0.02119329385459423, + -0.06529991328716278, + -0.005578597076237202, + 0.008177846670150757, + 0.010850044898688793, + -0.025524096563458443, + 0.0369807630777359, + 0.0025051855482161045, + -0.06170627102255821, + -0.0668356642127037, + -0.020302562043070793, + -0.010151281021535397, + 0.011579524725675583, + -0.00759042426943779, + -0.001471436582505703, + 0.04177228733897209, + 0.0238808486610651, + 0.03495357558131218, + -0.038332220166921616, + 0.019073965027928352, + 0.012086320668458939, + 0.02371191792190075, + 0.0058934250846505165, + -0.03323354199528694, + -0.021930452436208725, + 0.09742771834135056, + -0.05470326915383339, + 0.04214086756110191, + 0.0017065976280719042, + -0.03350997716188431, + -0.026860196143388748, + -0.012447220273315907, + -0.02475622482597828, + 0.013529921881854534, + 0.025048015639185905, + 0.015679966658353806, + 0.002136606490239501, + 0.006346470210701227, + -0.08673892915248871, + -0.02266760915517807, + 0.004215622786432505, + 0.02245260588824749, + -0.024894440546631813, + -0.020732570439577103, + 0.01424404326826334, + 0.03188208490610123, + 0.037103623151779175, + 0.0519082136452198, + 0.054764699190855026, + -0.040666550397872925, + -0.01704677939414978, + 0.026291970163583755, + -0.021561872214078903, + 0.019012534990906715, + 0.01578746736049652, + 0.028104150667786598, + -0.03185136988759041, + -0.0848960354924202, + -0.018444309011101723, + 0.0015223080990836024, + 0.0066958521492779255, + 0.026553047820925713, + -0.030484557151794434, + -0.06462419033050537, + 0.020287204533815384, + -0.035475730895996094, + 0.08336029201745987, + -0.027090558782219887, + -0.034830719232559204, + -0.011111121624708176, + -0.006918535567820072, + 0.015641571953892708, + -0.051693208515644073, + 0.045611653476953506, + 0.06763424724340439, + 0.006899338681250811, + 0.05961765721440315, + 0.0336635522544384, + 0.016386408358812332, + -0.0033709623385220766, + 0.014796911738812923, + 0.03384783864021301, + 0.021761519834399223, + -0.019273610785603523, + -0.020502207800745964, + 0.012700619176030159, + 0.00733318692073226, + 0.031697794795036316, + 0.049174584448337555, + -0.03360212221741676, + -0.0037760152481496334, + -0.00028555275639519095, + -0.008062666282057762, + -0.035230010747909546, + 0.018812887370586395, + -0.025877319276332855, + -0.01558782160282135, + 0.011456664651632309, + -0.03762577474117279, + -0.006638261955231428, + 0.03550644591450691, + -0.09110044687986374, + -0.013076876290142536, + 0.05261465534567833, + 0.008323743008077145, + 0.06787996739149094, + -0.019396470859646797, + -0.011456664651632309, + -0.02206866815686226, + 0.004507414065301418, + 0.019027892500162125, + -0.032987821847200394, + 0.019857194274663925, + -0.029839543625712395, + 0.03817864507436752, + -0.04530450329184532, + -0.019857194274663925, + -0.0030292589217424393, + -0.049174584448337555, + -0.003891196334734559, + -0.07273292541503906, + -0.029225245118141174, + 0.0044191088527441025, + -0.003585966769605875, + -0.004511253442615271, + 0.03802506998181343, + 0.03642789274454117, + 0.01681641861796379, + 0.0444444864988327, + 0.00020624588069040328, + -0.034984290599823, + -0.008561783470213413, + -0.007072110194712877, + 9.082497126655653e-05, + 0.01081165112555027, + 0.046072378754615784, + 0.001038548187352717, + -0.02183830738067627, + 0.05866549536585808, + -0.007717123255133629, + -0.06084625422954559, + 0.01516549102962017, + 0.026445545256137848, + 0.059187646955251694, + -0.02580053173005581, + -0.010420036502182484, + -0.019181465730071068, + -0.019826479256153107, + 0.020686497911810875, + 0.00340743619017303, + -0.04263230785727501, + 0.018213946372270584, + -0.006262003909796476, + 0.019488615915179253, + 0.006231288891285658, + -0.07666444033384323, + -0.010788614861667156, + 0.003015821101143956, + -0.022314388304948807, + 0.0027278687339276075, + -0.04100441560149193, + 0.002616527024656534, + 0.0034055165015161037, + 0.02165401726961136, + 0.012393469922244549, + -8.188645006157458e-05, + -0.02727484703063965, + -0.03148278966546059, + -0.060416243970394135, + 0.04892886430025101, + -0.015941042453050613, + 0.017522860318422318, + 0.0017008385621011257, + -0.01432850956916809, + -0.009644484147429466, + -0.005033407360315323, + -0.03206637501716614, + -0.0033920789137482643, + -0.032127805054187775, + 0.007859179750084877, + 0.046686675399541855, + -0.03971438854932785, + 0.02037934772670269, + 0.017737865447998047, + 0.013076876290142536, + 0.033786408603191376, + -0.006899338681250811, + 0.029977761209011078, + 0.010658076964318752, + -0.0022575464099645615, + -0.010834687389433384, + -0.002606928814202547, + -0.002998543903231621, + -0.03738005459308624, + 0.024879084900021553, + 0.022145455703139305, + -0.04558093845844269, + -0.019166110083460808, + -0.02538588084280491, + -0.0032058695796877146, + -0.011195587925612926, + -0.02598482184112072, + 0.013622066006064415, + -0.03535287082195282, + 0.05857335031032562, + 0.000992475776001811, + -0.04684025049209595, + -0.010020742192864418, + -0.013015447184443474, + 0.08243884146213531, + 0.00670353090390563, + 0.03122171387076378, + -0.012715976685285568, + 0.020486850291490555, + -0.017092851921916008, + 0.03704219311475754, + 0.030100619420409203, + 0.010343248955905437, + -0.010412357747554779, + -0.01350688561797142, + 0.013030803762376308, + -0.007210327312350273, + 0.018398236483335495, + -0.025263020768761635, + 0.07132004201412201, + -0.011364519596099854, + 0.010189673863351345, + -0.029424892738461494, + 0.05841977521777153, + -0.07881448417901993, + -0.04131156578660011, + -0.013130627572536469, + -0.007528994232416153, + 0.02722877450287342, + 0.0005917421076446772, + -0.015034952200949192, + 0.010266461409628391, + -0.02991633117198944, + -0.022713681682944298, + -0.013583673164248466, + -0.032742101699113846, + 0.003820168087258935, + 0.04389161989092827, + -0.04152657091617584, + 0.009168403223156929, + 0.010573610663414001, + 0.05175463855266571, + 0.0070375557988882065, + 0.009406443685293198, + -0.004346161149442196, + -0.004983495455235243, + 0.05467255413532257, + 0.026783408597111702, + -0.012001854367554188, + -0.02431085892021656, + -0.042509447783231735, + 0.010980583727359772, + 0.014904414303600788, + -0.0017267543589696288, + -0.03529144078493118, + -0.004326964262872934, + -0.00324810273014009, + 0.0008211441454477608, + -0.06139912083745003, + 0.005739850457757711, + 0.06189056113362312, + -0.01893574744462967, + -0.0034842235036194324, + -0.11020512878894806, + 0.01830609142780304, + -0.07261006534099579, + 0.052276790142059326, + 0.009897882118821144, + -0.008607855997979641, + 0.014236364513635635, + 0.02991633117198944, + -0.015457282774150372, + -0.032527100294828415, + 0.007717123255133629, + -0.02143901400268078, + 0.059586942195892334, + -0.08250027149915695, + -0.016739631071686745, + 0.01402136031538248, + 0.007521315477788448, + 0.0749443992972374, + -0.021300796419382095, + 0.02306690439581871, + 0.03633574768900871, + 0.013775641098618507, + -0.008776787668466568, + 0.056239016354084015, + 0.00789373368024826, + -0.020824715495109558, + 0.043983764946460724, + -0.06232057139277458, + 0.019811121746897697, + 0.021454371511936188, + -0.022206885740160942, + 0.006500044837594032, + -0.0391308069229126, + -0.037072908133268356, + 0.043369464576244354, + -0.04782312735915184, + 0.030607417225837708, + 0.017108209431171417, + 0.03476928919553757, + -0.036489322781562805, + 0.013107591308653355, + 0.07248720526695251, + 0.015894969925284386, + -0.017922155559062958, + 0.009176081977784634, + 0.045611653476953506, + 0.04653310030698776, + 0.015603178180754185, + -0.05012674629688263, + 0.00026515612262301147, + -0.02349691279232502, + -0.023235835134983063, + 0.003966063726693392, + 0.00048423989210277796, + 0.027090558782219887, + -0.016985349357128143, + 0.035015005618333817, + 0.054365403950214386, + -0.017384644597768784, + -0.023235835134983063, + -0.0007961882511153817, + -0.01994933933019638, + 0.03206637501716614, + 0.03848579153418541, + -0.009106973186135292, + -0.0006205373210832477, + 0.015027273446321487, + -0.08194740116596222, + 0.09890203922986984, + 0.01810644380748272, + -0.027489852160215378, + -0.026675906032323837, + 0.02824236825108528, + -0.014727803878486156, + 0.019473258405923843, + -0.03258853033185005, + -0.04309302940964699, + -0.00997466966509819, + -0.007206487935036421, + -0.02616911008954048, + 0.04235587269067764, + 0.001843854901380837, + -0.043369464576244354, + 0.08538747578859329, + 0.012063284404575825, + 0.004829920828342438, + -0.011640953831374645, + 0.0027413065545260906, + 0.01621747761964798, + -0.005693777929991484, + -0.0172464270144701, + 0.004434466361999512, + -0.004499735776335001, + -0.019703621044754982, + -0.004373036324977875, + 0.019242895767092705, + 0.010934511199593544, + -0.023420125246047974, + -0.034400708973407745, + 0.04100441560149193, + -0.018981819972395897, + 0.007033716421574354, + 0.012593116611242294, + -0.010550574399530888, + -0.04800741747021675, + 0.07414581626653671, + -0.0007688328041695058, + -0.02616911008954048, + -0.019242895767092705, + 0.032496385276317596, + 0.011456664651632309, + 0.03682718798518181, + 0.03612074255943298, + -0.026107680052518845, + -0.004181068390607834, + -0.06253557652235031, + -0.0305920597165823, + -0.010988262481987476, + 0.04551950842142105, + 0.02123936638236046, + -0.020947573706507683, + -0.034984290599823, + -0.01029717642813921, + 0.0378100648522377, + -0.03956081345677376, + -0.09048614650964737, + 0.037318624556064606, + -0.0007889894768595695, + -0.013552958145737648, + -0.0383015051484108, + -0.05181606858968735, + 0.002290181117132306, + -0.015242278575897217, + -0.03725719451904297, + 0.008116417564451694, + 0.000974718714132905, + -0.0031482791528105736, + -0.0004909588024020195, + -0.02721341699361801, + 0.028795236721634865, + 0.008661607280373573, + 0.020824715495109558, + 0.017292499542236328, + -0.016263550147414207, + -0.023374052718281746, + -0.016893204301595688, + -0.0033805607818067074, + 0.02100900374352932, + 0.04131156578660011, + 0.0017325134249404073, + -0.03243495523929596, + 0.015042630955576897, + -0.03329497203230858, + 0.03160564973950386, + 0.017799295485019684, + -0.0424480177462101, + 0.004050530027598143, + -0.002862246474251151, + 0.022974759340286255, + 0.026783408597111702, + -0.00588190695270896, + -0.046502385288476944, + -0.022713681682944298, + -0.025539454072713852, + 0.045611653476953506, + 0.020962931215763092, + -0.035076435655355453, + 0.03036169707775116, + -0.0295170359313488, + 0.002159642754122615, + 0.02494051307439804, + 0.016278907656669617, + -0.020241132006049156, + -0.03301853686571121, + 0.0034151149448007345, + -0.002242189133539796, + -0.050003886222839355, + -0.07304007560014725, + -0.03873151168227196, + 0.020840073004364967, + -0.05943336710333824, + -0.019411828368902206, + -0.013030803762376308, + -0.03384783864021301, + -0.0064462935552001, + 0.010466108098626137, + 0.015426567755639553, + -0.023834776133298874, + 0.0055632395669817924, + 0.03258853033185005, + 0.007985878735780716, + 0.023020831868052483, + 0.019012534990906715, + 0.007406134624034166, + 0.009529303759336472, + -0.022084025666117668, + -0.031697794795036316, + -0.019273610785603523, + 0.012209179811179638, + -0.018582526594400406, + 0.014159577898681164, + -0.0336635522544384, + -0.004326964262872934, + 0.028825951740145683, + -0.038147930055856705, + 0.035629305988550186, + -0.040605124086141586, + -0.00649620546028018, + 0.008116417564451694, + 0.04766955226659775, + 0.04929744452238083, + -0.027090558782219887, + 0.030853135511279106, + -0.009429479949176311, + -0.004131156485527754, + -0.01869002729654312, + 0.03787149488925934, + -0.05525613948702812, + 0.038117215037345886, + -0.01603318750858307, + 0.04238658770918846, + 0.02266760915517807, + -0.0070260376669466496, + 0.003388239536434412, + -0.011372198350727558, + -0.0424480177462101, + -0.004192586522549391, + 0.017783937975764275, + 0.02266760915517807, + -0.024602649733424187, + 1.862691897258628e-05, + 0.03185136988759041, + 0.08170168101787567, + 0.013990645296871662, + -0.006104589905589819, + 0.0008197043789550662, + -0.01681641861796379, + 0.023558342829346657, + 0.0017901038518175483, + 0.015319065190851688, + 0.015772109851241112, + -0.0027950576040893793, + -0.039007946848869324, + 0.007747838273644447, + -0.023128334432840347, + 0.035445015877485275, + -0.05135534331202507, + 0.004042851272970438, + -0.04994245618581772, + 0.024664079770445824, + 0.04696311056613922, + -0.017154281958937645, + 0.02976275607943535, + -0.014205649495124817, + -0.028027363121509552, + -0.017599647864699364, + -0.020517565310001373, + 0.006269682664424181, + 0.027597354725003242, + -0.060231953859329224, + 0.012800442054867744, + -0.02641483023762703, + -0.0016854811692610383, + -0.05633116140961647, + 0.011802207678556442, + -0.03704219311475754, + -0.00023864052491262555, + 0.05114033818244934, + 0.07261006534099579, + -1.3355290320760105e-05, + -0.013875464908778667, + 0.026153752580285072, + 0.023604415357112885, + -0.02953239344060421, + -0.041280850768089294, + -0.007160415407270193, + -0.03873151168227196, + 0.03203565999865532, + -0.016309620812535286, + -0.003443910274654627, + -0.0033786410931497812, + 0.03486143425107002, + -0.04963530972599983, + 0.044383056461811066, + 0.037963639944791794, + -0.04263230785727501, + -0.010335570201277733, + 0.02225295826792717, + 0.026445545256137848, + -0.01381403487175703, + -0.011802207678556442, + 9.556418808642775e-05, + 0.019058607518672943, + -0.003246183041483164, + -0.040635835379362106, + 0.020118271932005882, + -0.0010635040234774351, + -0.007694086991250515, + 0.05912621691823006, + -0.008438924327492714, + 0.010435394011437893, + 0.02472550980746746, + -0.013476170599460602, + 0.03372498229146004, + -0.00044296670239418745, + -0.012355076149106026, + 0.0008009874727576971, + 0.004119638353586197, + -0.03639717772603035, + 0.04008296877145767, + 0.003737621707841754, + -0.06219771131873131, + -0.025739101693034172, + 0.01578746736049652, + -0.025247663259506226, + 0.027704857289791107, + -0.024203356355428696, + -0.011802207678556442, + 0.052276790142059326, + -0.00790909118950367, + 0.01999541185796261, + -0.0021538836881518364, + -0.01163327507674694, + 0.022944044321775436, + -0.012938659638166428, + -0.03056134469807148, + 0.028994882479310036, + 0.052491795271635056, + 0.0029121581465005875, + 0.003459267783910036, + 0.004392233211547136, + 0.023635130375623703, + 0.04723954573273659, + 0.06744996458292007, + -0.012216858565807343, + -0.02451050467789173, + 0.02454121969640255, + 0.017522860318422318, + 0.01415189914405346, + -0.03264995664358139, + -0.024003708735108376, + -0.029839543625712395, + -0.013092233799397945, + 0.028227010741829872, + 0.05095604807138443, + 0.039192236959934235, + 0.028810594230890274, + -0.002418799791485071, + -0.029148457571864128, + -0.02429550141096115, + -0.0016173324547708035, + -0.00042592952377162874, + -0.03701147809624672, + -0.018229303881525993, + 0.005175463855266571, + -0.01266990415751934, + 0.04539664834737778, + -0.042509447783231735, + -0.006611386314034462, + 0.003927670419216156, + 0.02268296666443348, + 0.005409664940088987, + 0.03824007511138916, + 0.0030350179877132177, + -0.019181465730071068, + -0.0024360769893974066, + 0.06738853454589844, + -0.014789232984185219, + 0.025708386674523354, + -0.029624538496136665, + -0.031298503279685974, + 0.06075410917401314, + 0.001051026163622737, + 0.013545279391109943, + 0.044383056461811066, + -0.03350997716188431, + 0.02309761941432953, + -0.07580441981554031, + -0.016939276829361916, + 0.02512480318546295, + 0.013476170599460602, + -0.07193434238433838, + 0.01895110495388508, + 0.01319973636418581, + -0.021285438910126686, + 0.053751107305288315, + 0.0021462049335241318, + -0.03372498229146004, + -0.024372287094593048, + 0.015288351103663445, + -0.038608651608228683, + 0.01620212011039257, + 0.0441066212952137, + -0.0209782887250185, + -0.01789144054055214, + -0.006588350050151348, + -0.013476170599460602, + -0.0006416538381017745, + -0.02369656041264534, + -0.006361827719956636, + 0.012232216075062752, + 0.007678729481995106, + -0.0007280395366251469, + 0.030730275437235832, + 0.01603318750858307, + 0.012907944619655609, + -0.002426478546112776, + 0.01744607463479042, + -0.006177538074553013, + 0.010573610663414001, + -0.013076876290142536, + -0.03470785915851593, + 0.010343248955905437, + 0.0032154680229723454, + -0.016493910923600197, + -0.04017511382699013, + 0.0003649796126410365, + -0.02059435285627842, + 0.005590115208178759, + 0.05175463855266571, + -0.02205331064760685, + 0.02911774255335331, + 0.02973204106092453, + -0.005117873195558786, + -0.02560088410973549, + -0.011410592123866081, + -0.043369464576244354, + -0.033172111958265305, + -0.0014330429257825017, + -0.024080496281385422, + -0.0005379909998737276, + -0.016171405091881752, + -0.015703001990914345, + -0.03225066512823105, + -0.0201489869505167, + 0.036090027540922165, + -0.023865491151809692, + 0.05181606858968735, + -0.012639189139008522, + -0.005225375294685364, + 0.02059435285627842, + 0.054334692656993866, + -0.032742101699113846, + 0.02933274768292904, + 0.030699560418725014, + 0.01506566721946001, + -0.014658695086836815, + -0.04548879340291023, + -0.004557325970381498, + 0.05719117820262909, + 0.03455428406596184, + -0.012063284404575825, + 0.028641661629080772, + 0.013959930278360844, + -0.002791218226775527, + -0.014251722022891045, + 0.03790220990777016, + -0.02180759236216545, + 0.02601553685963154, + -0.020532922819256783, + 0.009721271693706512, + -0.04238658770918846, + -0.004776170011609793, + -0.03013133443892002, + -0.01640176586806774, + 0.053321097046136856, + 0.012024890631437302, + 0.049143869429826736, + 0.01424404326826334, + -0.009821095503866673, + 0.03134457394480705, + -0.0073715802282094955, + -0.03320282697677612, + 0.0837288647890091, + -0.0005091957864351571, + 0.006603707559406757, + 0.00572065357118845, + 0.018843602389097214, + 0.01847502402961254, + -0.01789144054055214, + -0.005536363925784826, + -0.024786939844489098, + -0.042079437524080276, + -0.026353400200605392, + -0.040420833975076675, + 0.035076435655355453, + -0.01681641861796379, + -0.04340017959475517, + 0.010266461409628391, + 0.005774404853582382, + -0.014374582096934319, + 0.011925066821277142, + 0.0519082136452198, + 0.010043778456747532, + -0.09349621087312698, + 0.008362136781215668, + -0.02517087571322918, + 0.03329497203230858, + 0.03323354199528694, + -0.020717212930321693, + -0.00048423989210277796, + 0.02165401726961136, + -0.05135534331202507, + 0.031943514943122864, + 0.014604943804442883, + 0.02891809493303299, + 0.01644783839583397, + -0.028595589101314545, + -0.02494051307439804, + -0.0411272756755352, + -0.006849426776170731, + -0.047730982303619385, + 0.020440777763724327, + 0.015518712811172009, + 0.07476010918617249, + 0.006419417914003134, + 0.03695004805922508, + 0.027812357991933823, + -0.022560108453035355, + 5.225135464570485e-05, + -0.004753133747726679, + 0.012500971555709839, + -0.005440379958599806, + 0.03286496177315712, + -0.031283143907785416, + -0.012531686574220657, + 0.01197113934904337, + 0.029348105192184448, + 0.02205331064760685, + -0.008454280905425549, + -0.0020732569973915815, + -0.027766285464167595, + 0.00303885736502707, + 0.003361363895237446, + 0.0005701456684619188, + -0.02931739017367363, + -0.04822242259979248, + -0.017400002107024193, + 0.010612004436552525, + -0.0058934250846505165, + -0.04072798043489456, + -0.009229833260178566, + -0.008246955461800098, + -0.019166110083460808, + 0.004334643017500639, + -0.028994882479310036, + -0.006968447007238865, + -0.01746143028140068, + 0.04671739041805267, + 0.023650487884879112, + -0.018582526594400406, + 0.0261998251080513, + -0.024848369881510735, + -0.01506566721946001, + -0.04785384237766266, + 0.0062888795509934425, + 0.006565313786268234, + 0.01038164272904396, + 0.015726039186120033, + 0.0761115700006485, + 0.015272993594408035, + -0.042970169335603714, + 0.019703621044754982, + 0.009905560873448849, + -0.022114740684628487, + 0.004184907767921686, + -0.029793471097946167, + 0.00954466126859188, + 0.01540353149175644, + -0.02974739857017994, + 0.03206637501716614, + 0.003225066466256976, + 0.022176170721650124, + -0.009275905787944794, + -0.05350538715720177, + -0.036520037800073624, + -0.023189762607216835, + 0.04432162642478943, + 0.007052913308143616, + 0.03116028569638729, + 0.033571407198905945, + -0.020625067874789238, + -0.005927979480475187, + -0.001962875248864293, + 0.02682948112487793, + 0.01664748601615429, + -0.028564874082803726, + -0.001681641791947186, + 0.034400708973407745, + -0.010665755718946457, + 0.011287732981145382, + -0.026030894368886948, + -0.0036934688687324524, + 0.026061607524752617, + -0.08753751963376999, + -0.02122400887310505, + 0.009260548278689384, + -0.04413733631372452, + -0.08508032560348511, + -0.05900335684418678, + -0.013990645296871662, + 0.01888967491686344, + -0.001401368179358542, + -0.029409535229206085, + 0.019304325804114342, + 0.0402979739010334, + 0.01217846479266882, + -0.041895147413015366, + -0.043768759816884995, + -0.05359753221273422, + 0.05132462829351425, + 0.013069197535514832, + 0.002848808653652668, + 0.021546514704823494, + -0.018152516335248947, + -0.004350000526756048, + 0.032772816717624664, + 0.02160794474184513, + -0.005943336524069309, + -0.04782312735915184, + -0.03999082371592522, + 0.0018428950570523739, + 0.03882365673780441, + -0.035660021007061005, + 0.016063902527093887, + 0.012431863695383072, + -0.01340706180781126, + -0.010742542333900928, + 0.028733806684613228, + -0.043123744428157806, + -0.02326655015349388, + -0.014604943804442883, + -0.053351812064647675, + -0.010143602266907692, + -0.01598711498081684, + 0.03759505972266197, + -0.0023996029049158096, + 0.03658146783709526, + 0.03486143425107002, + 0.0053751105442643166, + -0.027397707104682922, + -0.018045013770461082, + 0.04118870571255684, + -0.05504113435745239, + 0.013169021345674992, + 0.027581997215747833, + 0.012923302128911018, + -0.0020713373087346554, + 0.022974759340286255, + 0.003977581858634949, + -0.018382878974080086, + -0.004019815009087324, + -0.013652781024575233, + 0.053136810660362244, + 0.06480848044157028, + 0.018213946372270584, + -0.0898718535900116, + 0.01583353988826275, + -0.0407894104719162, + -0.0021692411974072456, + 0.04349232465028763, + 0.0394686721265316, + 0.016493910923600197, + 0.021976524963974953, + 0.01321509387344122, + 0.007601942401379347, + -0.028994882479310036, + 0.04631809890270233, + 0.011203266680240631, + -0.031283143907785416, + -0.010481465607881546, + 0.04429091140627861, + -0.005851191934198141, + 0.029056312516331673, + 0.03433927893638611, + -0.008285349234938622, + -0.002034863457083702, + -0.006615225691348314, + -0.0060086059384047985, + 0.027382349595427513, + -0.013453134335577488, + -0.02888738177716732, + -0.035260725766420364, + 0.027704857289791107, + -0.008615534752607346, + 0.0011047772131860256, + 0.03271138668060303, + 0.00452661095187068, + -0.05344395712018013, + -0.017522860318422318, + -0.05362824723124504, + -0.009291263297200203, + -0.026261255145072937, + 0.02328190766274929, + 0.031728509813547134, + 0.033755697309970856, + 0.03017740696668625, + -0.012608474120497704, + 0.01297705341130495, + 0.01183292269706726, + 0.0023535306099802256, + 0.0006243766983971, + -0.0844045951962471, + -0.037533629685640335, + -0.009222154505550861, + 0.009506267495453358, + 0.009337334893643856, + -0.007628818042576313, + 0.011402913369238377, + -0.06542277336120605, + -0.013591350987553596, + -0.046041663736104965, + 0.019043250009417534, + 0.02163865976035595, + -0.0009823974687606096, + 0.050003886222839355, + 0.050741046667099 + ], + "result": "--- 结果 1 (相似度: 1.000) ---\n文件路径: C:\\Steam\\steamapps\\common\\RimWorld\\Data\\dll1.6\\Verse\\MapGenerator.txt\n\npublic static class MapGenerator\n{\n\tpublic static Map mapBeingGenerated;\n\n\tprivate static IntVec3 playerStartSpotInt = IntVec3.Invalid;\n\n\tprivate static Gravship gravship;\n\n\tpublic static List rootsToUnfog = new List();\n\n\tprivate static Dictionary data = new Dictionary();\n\n\tprivate static List tmpGenSteps = new List();\n\n\tprivate static int debugSeed;\n\n\tpublic static bool debugMode = false;\n\n\tprivate static int debugGenStepIndex = 0;\n\n\tprivate static List cachedUsedRects = new List();\n\n\tpublic const string ElevationName = \"Elevation\";\n\n\tpublic const string FertilityName = \"Fertility\";\n\n\tpublic const string CavesName = \"Caves\";\n\n\tpublic const string RectOfInterestName = \"RectOfInterest\";\n\n\tpublic const string UsedRectsName = \"UsedRects\";\n\n\tpublic const string RectOfInterestTurretsGenStepsCount = \"RectOfInterestTurretsGenStepsCount\";\n\n\tpublic const string DontGenerateClearedGravShipTerrain = \"DontGenerateClearedGravShipTerrain\";\n\n\tpublic const string GravshipSpawnSet = \"GravshipSpawnSet\";\n\n\tpublic const string SpawnRectName = \"SpawnRect\";\n\n\tpublic static List tmpDataDump = new List();\n\n\tpublic static MapGenFloatGrid Elevation => FloatGridNamed(\"Elevation\");\n\n\tpublic static MapGenFloatGrid Fertility => FloatGridNamed(\"Fertility\");\n\n\tpublic static MapGenFloatGrid Caves => FloatGridNamed(\"Caves\");\n\n\tpublic static List UsedRects => GetOrGenerateVar>(\"UsedRects\");\n\n\tpublic static IntVec3 PlayerStartSpot\n\t{\n\t\tget\n\t\t{\n\t\t\tif (!PlayerStartSpotValid)\n\t\t\t{\n\t\t\t\tLog.Error(\"Accessing player start spot before setting it.\");\n\t\t\t\treturn IntVec3.Invalid;\n\t\t\t}\n\t\t\treturn playerStartSpotInt;\n\t\t}\n\t\tset\n\t\t{\n\t\t\tplayerStartSpotInt = value;\n\t\t}\n\t}\n\n\tpublic static bool PlayerStartSpotValid => playerStartSpotInt.IsValid;\n\n\tpublic static Map GenerateMap(IntVec3 mapSize, MapParent parent, MapGeneratorDef mapGenerator, IEnumerable extraGenStepDefs = null, Action extraInitBeforeContentGen = null, bool isPocketMap = false, bool stepDebugger = false)\n\t{\n\t\tProgramState programState = Current.ProgramState;\n\t\tCurrent.ProgramState = ProgramState.MapInitializing;\n\t\tClearWorkingData();\n\t\tplayerStartSpotInt = IntVec3.Invalid;\n\t\trootsToUnfog.Clear();\n\t\tmapBeingGenerated = null;\n\t\tgravship = null;\n\t\tDeepProfiler.Start(\"InitNewGeneratedMap\");\n\t\tRand.PushState();\n\t\tint seed = Gen.HashCombineInt(Find.World.info.Seed, parent?.Tile.GetHashCode() ?? 0);\n\t\tif (isPocketMap)\n\t\t{\n\t\t\tseed = Gen.HashCombineInt(Find.World.info.Seed, parent?.ID ?? Rand.Int);\n\t\t}\n\t\tRand.Seed = seed;\n\t\tif (stepDebugger)\n\t\t{\n\t\t\tdebugMode = true;\n\t\t\tdebugSeed = seed;\n\t\t\tdebugGenStepIndex = 0;\n\t\t}\n\t\ttry\n\t\t{\n\t\t\tif (parent != null && parent.HasMap)\n\t\t\t{\n\t\t\t\tLog.Error($\"Tried to generate a new map and set {parent} as its parent, but this world object already has a map. One world object can't have more than 1 map.\");\n\t\t\t\tparent = null;\n\t\t\t}\n\t\t\tDeepProfiler.Start(\"Set up map\");\n\t\t\tMap map = new Map();\n\t\t\tmap.uniqueID = Find.UniqueIDsManager.GetNextMapID();\n\t\t\tmap.generationTick = GenTicks.TicksGame;\n\t\t\tmap.events = new MapEvents(map);\n\t\t\tmapBeingGenerated = map;\n\t\t\tmap.info.Size = mapSize;\n\t\t\tmap.info.parent = parent;\n\t\t\tif (mapGenerator == null)\n\t\t\t{\n\t\t\t\tLog.Error(\"Attempted to generate map without generator; falling back on encounter map\");\n\t\t\t\tmapGenerator = MapGeneratorDefOf.Encounter;\n\t\t\t}\n\t\t\tmap.generatorDef = mapGenerator;\n\t\t\tmap.info.disableSunShadows = mapGenerator.disableShadows;\n\t\t\tif (isPocketMap)\n\t\t\t{\n\t\t\t\tmap.info.isPocketMap = true;\n\t\t\t\tmap.pocketTileInfo = new Tile\n\t\t\t\t{\n\t\t\t\t\tPrimaryBiome = mapGenerator.pocketMapProperties.biome\n\t\t\t\t};\n\t\t\t\tforeach (TileMutatorDef tileMutator in mapGenerator.pocketMapProperties.tileMutators)\n\t\t\t\t{\n\t\t\t\t\tmap.TileInfo.AddMutator(tileMutator);\n\t\t\t\t}\n\t\t\t}\n\t\t\tmap.ConstructComponents();\n\t\t\tforeach (TileMutatorDef mutator in map.TileInfo.Mutators)\n\t\t\t{\n\t\t\t\tmutator.Worker?.Init(map);\n\t\t\t}\n\t\t\tDeepProfiler.End();\n\t\t\tCurrent.Game.AddMap(map);\n\t\t\tif (mapGenerator.isUnderground)\n\t\t\t{\n\t\t\t\tforeach (IntVec3 allCell in map.AllCells)\n\t\t\t\t{\n\t\t\t\t\tmap.roofGrid.SetRoof(allCell, mapGenerator.roofDef ?? RoofDefOf.RoofRockThick);\n\t\t\t\t}\n\t\t\t}\n\t\t\textraInitBeforeContentGen?.Invoke(map);\n\t\t\tIEnumerable enumerable = mapGenerator.genSteps.Where(IsValidBiome).Select(GetGenStepParms);\n\t\t\tforeach (TileMutatorDef mutator2 in map.TileInfo.Mutators)\n\t\t\t{\n\t\t\t\tif (mutator2.extraGenSteps.Any())\n\t\t\t\t{\n\t\t\t\t\tenumerable = enumerable.Concat(mutator2.extraGenSteps.Select(GetGenStepParms));\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (map.Biome.extraGenSteps.Any())\n\t\t\t{\n\t\t\t\tenumerable = enumerable.Concat(map.Biome.extraGenSteps.Where(IsValidBiome).Select(GetGenStepParms));\n\t\t\t}\n\t\t\tif (map.Biome.preventGenSteps.Any())\n\t\t\t{\n\t\t\t\tenumerable = enumerable.Where((GenStepWithParams step) => !map.Biome.preventGenSteps.Contains(step.def));\n\t\t\t}\n\t\t\tforeach (TileMutatorDef mut in map.TileInfo.Mutators)\n\t\t\t{\n\t\t\t\tif (mut.preventGenSteps.Any())\n\t\t\t\t{\n\t\t\t\t\tenumerable = enumerable.Where((GenStepWithParams step) => !mut.preventGenSteps.Contains(step.def));\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (extraGenStepDefs != null)\n\t\t\t{\n\t\t\t\tenumerable = enumerable.Concat(extraGenStepDefs);\n\t\t\t}\n\t\t\tenumerable = enumerable.Distinct();\n\t\t\tmap.areaManager.AddStartingAreas();\n\t\t\tmap.weatherDecider.StartInitialWeather();\n\t\t\tDeepProfiler.Start(\"Generate contents into map\");\n\t\t\tGenerateContentsIntoMap(enumerable, map, seed, stepDebugger);\n\t\t\tDeepProfiler.End();\n\t\t\tFind.Scenario.PostMapGenerate(map);\n\t\t\tDeepProfiler.Start(\"Finalize map init\");\n\t\t\tmap.FinalizeInit();\n\t\t\tDeepProfiler.End();\n\t\t\tDeepProfiler.Start(\"MapComponent.MapGenerated()\");\n\t\t\tMapComponentUtility.MapGenerated(map);\n\t\t\tDeepProfiler.End();\n\t\t\tparent?.PostMapGenerate();\n\t\t\tDeepProfiler.Start(\"Map generator post init\");\n\t\t\tif (!stepDebugger)\n\t\t\t{\n\t\t\t\tMapGeneratorPostInit(enumerable, map);\n\t\t\t}\n\t\t\tDeepProfiler.End();\n\t\t\tif (gravship != null && !stepDebugger && (bool)map.Parent.CanBeSettled)\n\t\t\t{\n\t\t\t\tGravshipUtility.SettleTile(map);\n\t\t\t}\n\t\t\tif (map.TileInfo.Layer.Def.isSpace)\n\t\t\t{\n\t\t\t\tLessonAutoActivator.TeachOpportunity(ConceptDefOf.Orbit, OpportunityType.Critical);\n\t\t\t}\n\t\t\treturn map;\n\t\t}\n\t\tfinally\n\t\t{\n\t\t\tDeepProfiler.End();\n\t\t\tif (!stepDebugger)\n\t\t\t{\n\t\t\t\tClearWorkingData();\n\t\t\t\tmapBeingGenerated = null;\n\t\t\t\tgravship = null;\n\t\t\t}\n\t\t\tCurrent.ProgramState = programState;\n\t\t\tRand.PopState();\n\t\t}\n\t\tstatic GenStepWithParams GetGenStepParms(GenStepDef x)\n\t\t{\n\t\t\treturn new GenStepWithParams(x, default(GenStepParams));\n\t\t}\n\t\tstatic bool IsValidBiome(GenStepDef g)\n\t\t{\n\t\t\treturn !Find.Scenario.parts.Any((ScenPart p) => typeof(ScenPart_DisableMapGen).IsAssignableFrom(p.def.scenPartClass) && p.def.genStep == g);\n\t\t}\n\t}\n\n\tpublic static bool DebugDoNextGenStep(Map map)\n\t{\n\t\tif (debugGenStepIndex >= tmpGenSteps.Count)\n\t\t{\n\t\t\tClearDebugMode();\n\t\t\treturn false;\n\t\t}\n\t\tGenStepWithParams genStepWithParams = tmpGenSteps[debugGenStepIndex];\n\t\tLog.Message(\"Doing gen step \" + genStepWithParams.def.defName);\n\t\tRand.PushState(Gen.HashCombineInt(debugSeed, GetSeedPart(tmpGenSteps, debugGenStepIndex)));\n\t\ttry\n\t\t{\n\t\t\tGenStepParams parms = genStepWithParams.parms;\n\t\t\tif (gravship != null)\n\t\t\t{\n\t\t\t\tparms.gravship = gravship;\n\t\t\t}\n\t\t\tgenStepWithParams.def.genStep.Generate(map, parms);\n\t\t\tgenStepWithParams.def.genStep.PostMapInitialized(map, parms);\n\t\t}\n\t\tcatch (Exception arg)\n\t\t{\n\t\t\tLog.Error($\"Error stepping GenStep {genStepWithParams.def.defName}: {arg}\");\n\t\t}\n\t\tRand.PopState();\n\t\tmap.FinalizeInit();\n\t\tdebugGenStepIndex++;\n\t\treturn true;\n\t}\n\n\tpublic static void ClearDebugMode()\n\t{\n\t\tdebugMode = false;\n\t\tdebugSeed = 0;\n\t\tdebugGenStepIndex = 0;\n\t}\n\n\tpublic static void MapGeneratorPostInit(IEnumerable genStepDefs, Map map)\n\t{\n\t\ttmpGenSteps.Clear();\n\t\ttmpGenSteps.AddRange(from x in genStepDefs\n\t\t\torderby x.def.order, x.def.index\n\t\t\tselect x);\n\t\ttmpGenSteps.RemoveWhere((GenStepWithParams a) => tmpGenSteps.Any((GenStepWithParams b) => b.def.preventsGenSteps != null && b.def.preventsGenSteps.Contains(a.def)));\n\t\tfor (int i = 0; i < tmpGenSteps.Count; i++)\n\t\t{\n\t\t\tGenStepParams parms = tmpGenSteps[i].parms;\n\t\t\tif (gravship != null)\n\t\t\t{\n\t\t\t\tparms.gravship = gravship;\n\t\t\t}\n\t\t\ttmpGenSteps[i].def.genStep.PostMapInitialized(map, parms);\n\t\t}\n\t}\n\n\tpublic static void GenerateContentsIntoMap(IEnumerable genStepDefs, Map map, int seed, bool stepDebugger = false)\n\t{\n\t\tClearWorkingData();\n\t\tif (ModsConfig.OdysseyActive)\n\t\t{\n\t\t\tforeach (GenStepWithParams genStepDef in genStepDefs)\n\t\t\t{\n\t\t\t\tif (genStepDef.def == GenStepDefOf.GravshipMarker)\n\t\t\t\t{\n\t\t\t\t\tgravship = genStepDef.parms.gravship;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tRand.PushState();\n\t\ttry\n\t\t{\n\t\t\tRand.Seed = seed;\n\t\t\tRockNoises.Init(map);\n\t\t\ttmpGenSteps.Clear();\n\t\t\ttmpGenSteps.AddRange(from x in genStepDefs\n\t\t\t\torderby x.def.order, x.def.index\n\t\t\t\tselect x);\n\t\t\ttmpGenSteps.RemoveWhere((GenStepWithParams a) => tmpGenSteps.Any((GenStepWithParams b) => b.def.preventsGenSteps != null && b.def.preventsGenSteps.Contains(a.def)));\n\t\t\tif (stepDebugger)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfor (int i = 0; i < tmpGenSteps.Count; i++)\n\t\t\t{\n\t\t\t\tDeepProfiler.Start(\"GenStep - \" + tmpGenSteps[i].def);\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tGenStepParams parms = tmpGenSteps[i].parms;\n\t\t\t\t\tif (gravship != null)\n\t\t\t\t\t{\n\t\t\t\t\t\tparms.gravship = gravship;\n\t\t\t\t\t}\n\t\t\t\t\tRand.PushState();\n\t\t\t\t\tRand.Seed = Gen.HashCombineInt(seed, GetSeedPart(tmpGenSteps, i));\n\t\t\t\t\ttmpGenSteps[i].def.genStep.Generate(map, parms);\n\t\t\t\t\tif (map.pathing.IncrementalDirtyingDisabled)\n\t\t\t\t\t{\n\t\t\t\t\t\tLog.Error($\"Genstep [{i}] {tmpGenSteps[i].def} ended with path incremental dirtying disabled, for safety reasons it must be reenabled before returning.\");\n\t\t\t\t\t\tmap.pathing.ReEnableIncrementalDirtying();\n\t\t\t\t\t}\n\t\t\t\t\tRand.PopState();\n\t\t\t\t}\n\t\t\t\tcatch (Exception arg)\n\t\t\t\t{\n\t\t\t\t\tLog.Error($\"Error in GenStep: {arg}\");\n\t\t\t\t}\n\t\t\t\tfinally\n\t\t\t\t{\n\t\t\t\t\tDeepProfiler.End();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfinally\n\t\t{\n\t\t\tif (!stepDebugger)\n\t\t\t{\n\t\t\t\tRand.PopState();\n\t\t\t\tRockNoises.Reset();\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static void ClearWorkingData()\n\t{\n\t\tif (Prefs.DevMode && TryGetVar>(\"UsedRects\", out var var))\n\t\t{\n\t\t\tcachedUsedRects = var.ToList();\n\t\t}\n\t\tforeach (KeyValuePair datum in data)\n\t\t{\n\t\t\tdatum.Deconstruct(out var _, out var value);\n\t\t\tif (value is IDisposable disposable)\n\t\t\t{\n\t\t\t\tdisposable.Dispose();\n\t\t\t}\n\t\t}\n\t\tdata.Clear();\n\t}\n\n\tpublic static void DebugDraw()\n\t{\n\t\tif (!DebugViewSettings.drawUsedRects)\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tfloat y = AltitudeLayer.MetaOverlays.AltitudeFor();\n\t\tforeach (CellRect cachedUsedRect in cachedUsedRects)\n\t\t{\n\t\t\tGenDraw.DrawLineBetween(new Vector3(cachedUsedRect.minX, y, cachedUsedRect.minZ), new Vector3(cachedUsedRect.minX, y, cachedUsedRect.maxZ + 1), SimpleColor.Red);\n\t\t\tGenDraw.DrawLineBetween(new Vector3(cachedUsedRect.maxX + 1, y, cachedUsedRect.minZ), new Vector3(cachedUsedRect.maxX + 1, y, cachedUsedRect.maxZ + 1), SimpleColor.Red);\n\t\t\tGenDraw.DrawLineBetween(new Vector3(cachedUsedRect.minX, y, cachedUsedRect.minZ), new Vector3(cachedUsedRect.maxX + 1, y, cachedUsedRect.minZ), SimpleColor.Red);\n\t\t\tGenDraw.DrawLineBetween(new Vector3(cachedUsedRect.minX, y, cachedUsedRect.maxZ + 1), new Vector3(cachedUsedRect.maxX + 1, y, cachedUsedRect.maxZ + 1), SimpleColor.Red);\n\t\t}\n\t}\n\n\tpublic static T GetVar(string name)\n\t{\n\t\tif (data.TryGetValue(name, out var value))\n\t\t{\n\t\t\treturn (T)value;\n\t\t}\n\t\treturn default(T);\n\t}\n\n\tpublic static bool TryGetVar(string name, out T var)\n\t{\n\t\tif (data.TryGetValue(name, out var value))\n\t\t{\n\t\t\tvar = (T)value;\n\t\t\treturn true;\n\t\t}\n\t\tvar = default(T);\n\t\treturn false;\n\t}\n\n\tpublic static T GetOrGenerateVar(string name)\n\t{\n\t\tT var = GetVar(name);\n\t\tif (var != null)\n\t\t{\n\t\t\treturn var;\n\t\t}\n\t\tvar = (T)Activator.CreateInstance(typeof(T));\n\t\tSetVar(name, var);\n\t\treturn var;\n\t}\n\n\tpublic static void SetVar(string name, T var)\n\t{\n\t\tdata[name] = var;\n\t}\n\n\tpublic static MapGenFloatGrid FloatGridNamed(string name)\n\t{\n\t\tMapGenFloatGrid var = GetVar(name);\n\t\tif (var != null)\n\t\t{\n\t\t\treturn var;\n\t\t}\n\t\tMapGenFloatGrid mapGenFloatGrid = new MapGenFloatGrid(mapBeingGenerated);\n\t\tSetVar(name, mapGenFloatGrid);\n\t\treturn mapGenFloatGrid;\n\t}\n\n\tprivate static int GetSeedPart(List genSteps, int index)\n\t{\n\t\tint seedPart = genSteps[index].def.genStep.SeedPart;\n\t\tint num = 0;\n\t\tfor (int i = 0; i < index; i++)\n\t\t{\n\t\t\tif (tmpGenSteps[i].def.genStep.SeedPart == seedPart)\n\t\t\t{\n\t\t\t\tnum++;\n\t\t\t}\n\t\t}\n\t\treturn seedPart + num;\n\t}\n}\n\n", + "timestamp": "2025-08-25 11:39:55,702" + }, + "Map-destroyed-null": { + "keywords": [ + "Map", + "destroyed", + "null" + ], + "question": "Map check if destroyed or null methods", + "embedding": [ + -0.02629806287586689, + 0.017614584416151047, + 0.04774262011051178, + -0.02765176072716713, + -0.06454829126596451, + 0.004985571373254061, + 0.03275289013981819, + 0.02378876879811287, + -0.00615354860201478, + 0.06979799270629883, + 0.028411151841282845, + -0.04450695216655731, + -0.005068113561719656, + -0.005806869827210903, + -0.006520863156765699, + 0.04354945942759514, + -0.017614584416151047, + -0.12216300517320633, + -0.021972831338644028, + 0.006743727717548609, + -0.002952960319817066, + 0.015361172147095203, + 0.01943052001297474, + 0.005736708641052246, + -0.02185727283358574, + 0.002154360990971327, + 0.030953463166952133, + 0.07508072257041931, + -0.057383593171834946, + 0.0034956778399646282, + 0.004399518948048353, + 0.016673598438501358, + 0.03800259903073311, + -0.05157259851694107, + 0.04067697748541832, + 0.01037560123950243, + -0.03413960710167885, + 0.02814701572060585, + 0.030623292550444603, + 0.013305862434208393, + -0.04985571280121803, + 0.004275705199688673, + -0.0065910243429243565, + 0.007313271518796682, + 0.03394150361418724, + 0.06695853173732758, + 0.03595554456114769, + -0.026314571499824524, + -0.0497896783053875, + 0.020388014614582062, + -0.010581957176327705, + 0.052166905254125595, + 0.003889818675816059, + -0.058242037892341614, + 0.018951773643493652, + 0.014964967966079712, + -0.020685167983174324, + -0.02514246664941311, + -0.021725203841924667, + 0.0003776322409976274, + 0.015509748831391335, + 0.029698817059397697, + -0.017565058544278145, + -0.019215909764170647, + 0.07316572964191437, + -0.03744130954146385, + -0.04381359741091728, + 0.020965812727808952, + 0.009533667005598545, + -0.03836578503251076, + 0.03300051763653755, + 0.012686792761087418, + -0.033875469118356705, + 0.0008321322966367006, + -0.024548159912228584, + -0.002750731073319912, + 0.012075977399945259, + 0.01618659868836403, + 0.003906327299773693, + -0.02177472971379757, + 0.0221049003303051, + -0.012967437505722046, + 0.0015476731350645423, + 0.010796568356454372, + -0.025753282010555267, + 0.026892369613051414, + 0.005773852579295635, + -0.07587312906980515, + -0.04843597859144211, + 0.1151633933186531, + -0.0015311646275222301, + 0.014857662841677666, + 0.017482515424489975, + -0.005831632297486067, + 0.01967814937233925, + -0.025406602770090103, + -0.01934797875583172, + 0.015641815960407257, + 0.0108460932970047, + 0.04972364380955696, + -0.010573702864348888, + 0.0012082168832421303, + 0.008947614580392838, + 0.06263329833745956, + -0.01934797875583172, + 0.11225789040327072, + -0.06134563684463501, + 0.009938125498592854, + -0.024878330528736115, + 0.00397648848593235, + -0.017515532672405243, + -0.06322760879993439, + 0.01799428090453148, + 0.023904327303171158, + -0.001963481307029724, + 0.03204302489757538, + 0.023359546437859535, + -0.011126738041639328, + -0.008266638033092022, + -0.0004067801055498421, + 0.06603405624628067, + -0.031498245894908905, + -0.016954243183135986, + -0.01025178749114275, + -0.015394189395010471, + -0.012546470388770103, + 0.03275289013981819, + -0.003995060455054045, + -0.0045852395705878735, + 0.004164272453635931, + 0.018621603026986122, + -0.014593525789678097, + -0.014271610416471958, + -0.00044779342715628445, + -0.05513843521475792, + -0.029203560203313828, + 0.018605094403028488, + 0.0033966267947107553, + -0.018555570393800735, + 0.031993500888347626, + -0.0024865949526429176, + 0.016326921060681343, + 0.020189912989735603, + -0.03440374135971069, + 0.06979799270629883, + -0.03562537208199501, + -0.05021889880299568, + -0.00994637981057167, + 0.0014723531203344464, + -0.011531196534633636, + 0.017432991415262222, + -0.013569998554885387, + -0.010392109863460064, + 0.046785127371549606, + -0.020932795479893684, + 0.0024081794545054436, + 0.012018198147416115, + -0.05900142714381218, + 0.029962953180074692, + -0.056227996945381165, + 0.001328935381025076, + 0.034172624349594116, + -0.017779668793082237, + -0.00576147111132741, + 0.019744182005524635, + 0.007379305548965931, + -0.02094930410385132, + 0.034007538110017776, + -0.04952554032206535, + -0.042096711695194244, + -0.017763160169124603, + 0.016937734559178352, + -0.05256310850381851, + -0.002891053445637226, + 0.0442098006606102, + -0.021510593593120575, + 0.013388404622673988, + 0.053520601242780685, + -0.0253075510263443, + -0.055567655712366104, + 0.08340100944042206, + 0.021295983344316483, + 0.02950071357190609, + -0.03082139603793621, + 0.020553098991513252, + -0.07494865357875824, + 0.009409853257238865, + 0.039092160761356354, + 0.022781748324632645, + 0.00514652905985713, + 0.02922006882727146, + -0.01758156716823578, + 0.039884570986032486, + -0.0018045869655907154, + 0.0100454306229949, + -0.02930261194705963, + 0.009327310137450695, + -0.014172558672726154, + -0.06893955171108246, + -0.0025485018268227577, + 0.03866294026374817, + 0.007812654599547386, + 0.018440010026097298, + -0.017862211912870407, + -0.0034977414179593325, + -0.01243091095238924, + -0.007915832102298737, + -0.011159755289554596, + 0.0321255661547184, + -0.017119329422712326, + 0.07692967355251312, + -0.014123033732175827, + 0.032851941883563995, + -8.45416434458457e-05, + -0.018390484154224396, + -0.04064396023750305, + -0.022946834564208984, + -0.015963733196258545, + 0.006194819696247578, + 0.026265045627951622, + -0.023194462060928345, + 0.037540361285209656, + 0.027106979861855507, + 0.0070780254900455475, + -0.0019077651668339968, + -0.051506564021110535, + 0.023937344551086426, + 0.007767255883663893, + 0.03427167609333992, + 0.01574086770415306, + -0.03849785402417183, + 0.001762283849529922, + -0.0305737666785717, + 0.029071493074297905, + 0.0020831681322306395, + -0.014263356104493141, + -0.05431301146745682, + -0.0011762316571548581, + -0.0021770603489130735, + 0.0010844030184671283, + -0.050483036786317825, + 0.04269101843237877, + -0.013041726313531399, + 0.05883634462952614, + -0.007618679199367762, + -0.0353282205760479, + -0.018687637522816658, + 0.03347926586866379, + 0.01989275962114334, + -0.015022747218608856, + 0.03816768527030945, + 0.0026062815450131893, + -0.01873716339468956, + -0.06088339909911156, + -0.006747854873538017, + -0.003144871909171343, + 0.004267450887709856, + -0.02218744345009327, + 0.048832185566425323, + -0.04572858288884163, + -0.03767243027687073, + 0.026199011132121086, + -0.01926543563604355, + 0.01436240691691637, + -0.03288495913147926, + 0.025654230266809464, + 0.016838684678077698, + 0.02704094536602497, + -0.08280670642852783, + -0.09238164126873016, + -0.0134792011231184, + 0.03681398555636406, + 0.01754854992032051, + -0.04153542220592499, + 0.014090016484260559, + -0.014618288725614548, + 0.021593136712908745, + 0.03843181952834129, + 0.013215065002441406, + -0.014676068909466267, + 0.004073475953191519, + 0.02177472971379757, + 0.012901403941214085, + 0.028130507096648216, + 0.010400363244116306, + 0.04909631982445717, + 0.040577925741672516, + 0.015319900587201118, + 0.032901469618082047, + -0.027800336480140686, + 0.010524177923798561, + 0.037408292293548584, + 0.001700376975350082, + 0.020371505990624428, + 0.005010333843529224, + -0.022385545074939728, + -0.02022293023765087, + 0.0074948654510080814, + -0.01976069062948227, + 0.019744182005524635, + -0.010854347608983517, + -0.01273631863296032, + -0.005187800619751215, + -0.00043799151899293065, + 0.04163447022438049, + -0.07078851014375687, + -0.014040490612387657, + -0.11456908285617828, + 0.03516313433647156, + -0.04605875536799431, + 0.017515532672405243, + 0.04034680873155594, + -0.05078018829226494, + 0.01771363615989685, + -0.0015734677435830235, + 0.035196151584386826, + -0.04734641686081886, + -0.0014331453712657094, + 0.011242297478020191, + -8.08014374342747e-05, + 0.04655401036143303, + -0.016615819185972214, + -0.0007810590323060751, + 0.0035493304021656513, + 0.02753620035946369, + 0.0013629841851070523, + 0.0032047152053564787, + 0.0006680788937956095, + -0.020701676607131958, + -0.005047478247433901, + 0.0006969688110984862, + 0.006025607697665691, + -0.013388404622673988, + -0.022501103579998016, + -0.04051189124584198, + -0.02403639629483223, + -0.0019490363774821162, + -0.012562979012727737, + 0.056723251938819885, + 0.008823800832033157, + -0.012521707452833652, + -0.026842843741178513, + -0.04034680873155594, + -0.024234497919678688, + 0.012051215395331383, + 0.0305737666785717, + 0.021972831338644028, + 0.03684700280427933, + 0.014577018097043037, + 0.002003720961511135, + -0.050350967794656754, + 0.010879110544919968, + -0.018671128898859024, + 0.039059143513441086, + 0.03245573863387108, + -0.0660010352730751, + 0.03476693108677864, + -0.013116014190018177, + -0.020965812727808952, + -0.0018850659253075719, + 0.0027961295563727617, + 0.02296334318816662, + -0.024333549663424492, + 0.04321929067373276, + -0.013248082250356674, + -0.011919147334992886, + -0.0016322792507708073, + 0.04298816993832588, + -0.0061411671340465546, + 0.02880735695362091, + -0.004527459852397442, + -0.022055374458432198, + 0.04516729339957237, + 0.010400363244116306, + -0.05210087075829506, + 0.07105264067649841, + -0.006871669087558985, + -0.026265045627951622, + 0.03800259903073311, + -0.010920382104814053, + 0.046818144619464874, + 0.03869595751166344, + -0.033347196877002716, + -0.061576757580041885, + -0.0014228274812921882, + -0.020767711102962494, + -0.02855972945690155, + 0.014329389669001102, + -0.0022307129111140966, + -0.07204315066337585, + 0.05517145246267319, + 0.0061741843819618225, + -0.02198933996260166, + -0.0029797868337482214, + -0.06266631931066513, + 0.019414011389017105, + -0.007094533648341894, + 0.0334627591073513, + 0.008832055144011974, + -0.016838684678077698, + -0.006281489506363869, + -0.008576173335313797, + 0.04817184433341026, + -0.03024359792470932, + 0.03007851168513298, + -0.015427205711603165, + 0.045266345143318176, + -0.02477927878499031, + -0.02378876879811287, + -0.021213440224528313, + 0.00762280635535717, + -0.04064396023750305, + 0.0507141537964344, + 0.07818432152271271, + -0.04827089607715607, + -0.0069913556799292564, + 0.01139912847429514, + -0.016170090064406395, + 0.05124242603778839, + -0.00315312622115016, + -0.012818860821425915, + -0.009319055825471878, + -0.032241128385066986, + -0.004354120697826147, + 0.008217113092541695, + 0.02707396261394024, + 0.05124242603778839, + 0.01581515558063984, + -0.017862211912870407, + 0.043087221682071686, + -0.0024164337664842606, + -0.03073885291814804, + 0.001964513212442398, + 0.05444507673382759, + 0.002282302128151059, + -0.011316586285829544, + -0.03390848636627197, + -0.014519237913191319, + -0.02022293023765087, + -0.013751591555774212, + 0.021626153960824013, + -0.005588131956756115, + -0.025324059650301933, + -0.02588534913957119, + -0.04605875536799431, + -0.0732317641377449, + 0.052662160247564316, + -0.01713583804666996, + 0.023475106805562973, + 0.040577925741672516, + -0.022913817316293716, + -0.0041539547964930534, + 0.01401572860777378, + 0.022567138075828552, + -0.008906343020498753, + 0.029467696323990822, + -0.0185390617698431, + -0.033347196877002716, + -0.02707396261394024, + 0.015501494519412518, + 0.06111451983451843, + 0.0055386065505445, + -0.02884037420153618, + 0.012629013508558273, + -0.002034674398601055, + 0.007940595038235188, + -0.017482515424489975, + -0.008126315660774708, + -0.005435428116470575, + -0.04094111546874046, + 0.012992200441658497, + 0.027585726231336594, + 0.014048744924366474, + -0.020041335374116898, + 0.02568724751472473, + -0.06629819422960281, + -0.008592681027948856, + 0.048468995839357376, + 0.002496912609785795, + 0.017350448295474052, + 0.02403639629483223, + 0.010656245984137058, + -0.030177563428878784, + 0.0031882068142294884, + -0.05196880176663399, + -0.06045417860150337, + -0.02326049655675888, + -0.03668191656470299, + 0.025489145889878273, + -0.05431301146745682, + -0.04070999473333359, + 0.0002311191929038614, + 0.01741648279130459, + 0.01721837930381298, + -0.015716105699539185, + 0.022286493331193924, + 0.010780059732496738, + -0.0008352276054210961, + 0.008134569972753525, + -0.07673157006502151, + 0.002602154389023781, + 0.023326529189944267, + -0.01631866581737995, + -0.040776029229164124, + 0.06758585572242737, + -0.004341739229857922, + -0.07481658458709717, + 0.031052514910697937, + -0.052860260009765625, + -0.031250618398189545, + -0.001946972799487412, + -0.020487066358327866, + 0.03592252731323242, + -0.019958794116973877, + 0.015749122947454453, + 0.024416092783212662, + 0.0402807742357254, + 0.07448641210794449, + -0.0065414984710514545, + 0.012257571332156658, + 0.006871669087558985, + -0.053025346249341965, + -0.020899778231978416, + -0.032191600650548935, + -0.030540751293301582, + 0.026859352365136147, + 0.01444495003670454, + -0.01374333817511797, + -0.05262914299964905, + -0.02177472971379757, + -0.03929026424884796, + 0.03126712515950203, + 0.01943052001297474, + -0.0074701025150716305, + 0.07342986762523651, + 0.01163024827837944, + -0.019083842635154724, + -0.011374366469681263, + 0.032191600650548935, + 0.016409462317824364, + 0.0075402637012302876, + -0.027338098734617233, + -0.008345053531229496, + -0.021840764209628105, + 0.024647211655974388, + -0.057416610419750214, + 0.005249707493931055, + 0.01931496150791645, + -0.010771805420517921, + -0.005179546307772398, + 0.002234840067103505, + 0.02704094536602497, + 0.04936045780777931, + -0.005617022048681974, + 0.027998439967632294, + -0.0033099569845944643, + 0.029814375564455986, + 0.043285321444272995, + 0.00846061296761036, + 0.0012897276319563389, + -0.01749902404844761, + -0.05292629450559616, + -0.008898088708519936, + -0.009112699888646603, + 0.019248927012085915, + -0.034337710589170456, + 0.0035513939801603556, + 0.009896853938698769, + -0.050020795315504074, + 0.01885272189974785, + -0.07877862453460693, + 0.007024372462183237, + -0.026809826493263245, + 0.028873391449451447, + -0.01099466998130083, + 0.03225763514637947, + -0.018423501402139664, + 0.030276615172624588, + 0.04774262011051178, + 0.010903873480856419, + 0.0007206997834146023, + 0.009294292889535427, + -0.03232366964221001, + -0.04318627342581749, + 0.011374366469681263, + -0.021345509216189384, + -0.00038304910412989557, + 0.022484594956040382, + 0.049294423311948776, + -0.02704094536602497, + 0.06359079480171204, + -0.032356686890125275, + -0.06299649178981781, + -0.009756531566381454, + -0.0098638366907835, + 0.05120940878987312, + 0.017036786302924156, + 0.04655401036143303, + 0.017267905175685883, + 0.0457616001367569, + -0.029368646442890167, + -0.03783751279115677, + -0.006813888903707266, + -0.009228259325027466, + -0.018390484154224396, + 0.026149485260248184, + -0.00011884840205311775, + -0.014370661228895187, + 0.040743011981248856, + 0.014048744924366474, + -0.029071493074297905, + 0.04034680873155594, + -0.03579045832157135, + -0.007626933511346579, + -0.011002924293279648, + 0.01569959707558155, + 0.02855972945690155, + -0.00483699468895793, + -0.03068932704627514, + 0.005216690246015787, + 0.04199765995144844, + -0.0060544973239302635, + -0.003656635759398341, + -0.022666189819574356, + 0.005357012618333101, + -0.011308331973850727, + 0.05451111122965813, + -0.002851845696568489, + 0.025241518393158913, + 0.0060462430119514465, + -0.02136201597750187, + -0.04962459206581116, + 0.0082625113427639, + 0.030623292550444603, + 0.051869750022888184, + -0.016211360692977905, + 0.014073507860302925, + 0.01374333817511797, + 0.007705349009484053, + -0.019100351259112358, + -0.010367346927523613, + -0.017119329422712326, + -0.021345509216189384, + 0.03278590738773346, + -0.0007083184318616986, + 0.004046649672091007, + -0.0070697711780667305, + 0.0012577424058690667, + 0.033545300364494324, + -0.008675224147737026, + 0.024217989295721054, + 0.04807279258966446, + 0.004147764295339584, + -0.018192382529377937, + -0.00912095420062542, + -0.0393562987446785, + -0.0002057115634670481, + -0.02400337904691696, + 0.011745807714760303, + -0.04886519908905029, + -0.06217106431722641, + -0.05325646698474884, + -0.01659931056201458, + 0.0016508513363078237, + -0.008349181152880192, + -0.03645079955458641, + 0.004973189905285835, + -0.014742102473974228, + 0.035889510065317154, + 0.025373585522174835, + 0.014865917153656483, + -0.0008223303593695164, + -0.015435460023581982, + -0.01684693805873394, + 0.02149408496916294, + 0.012298842892050743, + -0.09944728761911392, + -0.026809826493263245, + 0.07283556461334229, + 0.002156424568966031, + 0.051671646535396576, + 0.01565007120370865, + -0.02489483915269375, + -0.006570388562977314, + -0.0013413167325779796, + -0.003809339599683881, + 0.02157662808895111, + -0.002612472278997302, + -0.009327310137450695, + 0.034007538110017776, + -0.014395424164831638, + -0.01025178749114275, + 0.0651756152510643, + 0.02226998470723629, + -0.038200702518224716, + -0.030639801174402237, + -0.014494474977254868, + -0.011349603533744812, + 0.010656245984137058, + 0.058076951652765274, + -0.06775093823671341, + -0.05289327725768089, + -0.0418325737118721, + 0.016508514061570168, + 0.048502013087272644, + -0.03635174781084061, + 0.008600935339927673, + 0.0014661623863503337, + 0.004952554125338793, + 0.05276121199131012, + -0.007296762894839048, + 0.01574086770415306, + -0.017482515424489975, + -0.0293851550668478, + -0.0032872578594833612, + 0.053322501480579376, + 0.023640191182494164, + -0.004618256818503141, + -0.008972377516329288, + 0.00728438189253211, + 0.012340114451944828, + 0.009847328066825867, + -0.035196151584386826, + -0.014725594781339169, + 0.007465975359082222, + 0.02753620035946369, + 0.01680566743016243, + -0.013949694111943245, + -0.021642660722136497, + 0.027057453989982605, + -0.019744182005524635, + -0.05461016297340393, + -0.011002924293279648, + 0.01733393967151642, + -0.032686855643987656, + -0.03473391383886337, + 0.02284778282046318, + -0.02111438848078251, + -0.04582763463258743, + -0.02099882997572422, + -0.043615493923425674, + -0.025934875011444092, + 0.05903444439172745, + -0.02930261194705963, + 0.07475055009126663, + -0.0007789955125190318, + -0.01845651865005493, + 0.057911865413188934, + -0.02099882997572422, + -0.028014948591589928, + 0.03172936290502548, + -0.005947192199528217, + 0.021642660722136497, + -0.01959560625255108, + 0.012579487636685371, + 0.021956322714686394, + 0.04087508097290993, + 0.06398700177669525, + 0.016417717561125755, + 0.007503119297325611, + 0.028163524344563484, + 0.0035183769650757313, + -0.006438320502638817, + 0.01080482266843319, + -0.04836994409561157, + 0.03225763514637947, + 0.007527882233262062, + 0.02157662808895111, + -0.0642511323094368, + -0.037903547286987305, + -0.014898933470249176, + -0.00017953009228222072, + 0.003702034242451191, + 0.06814714521169662, + -0.0016271204221993685, + 0.023310022428631783, + 0.026760300621390343, + -0.023937344551086426, + 0.0253570768982172, + -0.013272845186293125, + 0.050846222788095474, + 0.019100351259112358, + -0.02099882997572422, + 0.019199401140213013, + 0.014048744924366474, + -0.027833353728055954, + -0.036880020052194595, + -0.007759001571685076, + 0.020685167983174324, + -0.007189457770437002, + 0.02132900059223175, + -0.033264655619859695, + 0.03714415431022644, + 0.02728857286274433, + -0.044936176389455795, + -0.011283569037914276, + 0.006789126433432102, + 0.021873781457543373, + 0.013124268501996994, + -0.0007093502208590508, + 0.01615358144044876, + -0.03496503084897995, + 0.008799037896096706, + 0.0, + -0.01163024827837944, + 0.017532041296362877, + -0.008390451781451702, + 0.03065630979835987, + 0.02472975291311741, + -0.030062003061175346, + 0.007193584926426411, + 0.02207188308238983, + 0.04031379148364067, + 0.04975666105747223, + -0.015270375646650791, + -0.0074701025150716305, + -0.0010926572140306234, + 0.016739632934331894, + -0.008208858780562878, + -0.008799037896096706, + 0.004502696916460991, + 0.0546431802213192, + 0.025654230266809464, + -0.0028704178985208273, + 0.028378134593367577, + 0.004370628856122494, + -0.01148167159408331, + 0.02342558093369007, + 0.027106979861855507, + -0.02309541031718254, + 0.020024826750159264, + -0.026083452627062798, + -0.020932795479893684, + 0.00916222482919693, + -0.0050722407177090645, + 0.007395814172923565, + -0.013157285749912262, + -0.026512673124670982, + -0.0313991941511631, + 0.057185493409633636, + -0.05969478562474251, + -0.007371051236987114, + 0.006929448805749416, + -0.0136607950553298, + 0.004259196575731039, + -0.013347133062779903, + 0.007003737147897482, + -0.004059030674397945, + -0.011473417282104492, + -0.013702066615223885, + -0.034172624349594116, + -0.03306655213236809, + 0.014411932788789272, + -0.0080313915386796, + 0.014709086157381535, + 0.07494865357875824, + 0.0168882105499506, + -0.010086702182888985, + 0.006219582632184029, + 0.020800726488232613, + -0.004267450887709856, + -0.01680566743016243, + 0.011935655027627945, + -0.01705329492688179, + -0.0018355404026806355, + -0.01503925584256649, + 0.06418510526418686, + 0.006289743818342686, + 0.02966579981148243, + 0.04037982597947121, + 0.015394189395010471, + 0.0237557515501976, + 0.0031180456280708313, + 0.05827505514025688, + 0.008353307843208313, + -0.03456882759928703, + -0.012959183193743229, + 0.011126738041639328, + -0.01335538737475872, + -0.03513011708855629, + -0.05606291443109512, + -0.053025346249341965, + 0.009434615261852741, + -0.02444910816848278, + 0.005823378451168537, + 0.02662823349237442, + -0.011811841279268265, + 0.02448212541639805, + -0.017862211912870407, + 0.019463537260890007, + 0.06481242179870605, + -0.046454958617687225, + 0.0041209375485777855, + 0.020784219726920128, + 0.0014733849093317986, + 0.04272403195500374, + -0.035031065344810486, + -0.004535714164376259, + -0.02255062945187092, + -0.008947614580392838, + 0.02276523970067501, + -0.08175016194581985, + 0.02033848874270916, + -0.04084206372499466, + 0.006809761747717857, + -0.08736305683851242, + -0.02715650573372841, + -0.009054919704794884, + 0.0018582396442070603, + 0.022402053698897362, + -0.016838684678077698, + 0.006322760600596666, + 0.030837904661893845, + -0.010606720112264156, + -0.004787468817085028, + -0.01175406202673912, + -0.04648797586560249, + 0.02831210196018219, + 0.014535746537148952, + -0.010887364856898785, + 0.005319868680089712, + 0.00011710727267200127, + 0.004597621038556099, + 0.012538216076791286, + 0.0009342787088826299, + -0.0014362407382577658, + -0.03423865884542465, + -0.06685948371887207, + -0.012868386693298817, + -0.04031379148364067, + -9.402114665135741e-05, + 0.05005381256341934, + 0.0200908612459898, + -0.03479994833469391, + -0.0273711159825325, + 0.024548159912228584, + -0.04434186965227127, + -0.07296763360500336, + -0.011267060413956642, + -0.02560470439493656, + -0.0004441821947693825, + -0.05735057592391968, + 0.02834511734545231, + 0.025489145889878273, + 0.010458143427968025, + 0.018506044521927834, + 0.007602170575410128, + -0.04054490849375725, + -0.012934420257806778, + -0.001360920607112348, + -0.026479655876755714, + -0.015435460023581982, + 0.0273711159825325, + -0.07012816518545151, + -0.003594728885218501, + 0.04810580983757973, + -0.0032026516273617744, + 0.007338034454733133, + -0.012662029825150967, + -0.018836215138435364, + -0.015798646956682205, + 0.05563369020819664, + 0.021180422976613045, + -0.06834524869918823, + 0.03331417962908745, + -0.04995476454496384, + 0.01779617741703987, + 0.05243103951215744, + 0.005505589302629232, + 0.039587415754795074, + 0.030012477189302444, + 0.023194462060928345, + 0.01787872053682804, + -0.02359066531062126, + 0.02809748984873295, + -0.06547276675701141, + -0.04483712464570999, + -0.03938931226730347, + -0.0450352244079113, + -0.04381359741091728, + 0.004853502847254276, + 0.00695421127602458, + -0.008898088708519936, + -0.0028559728525578976, + 0.002255475614219904, + -0.07844845950603485, + 0.0027177140582352877, + -0.013611269183456898, + 0.037408292293548584, + -0.009418107569217682, + -0.0011741680791601539, + -0.04288911819458008, + -0.00010717636905610561, + -0.011960417963564396, + 0.06761886924505234, + -0.04500220715999603, + -0.024383075535297394, + -0.028113998472690582, + -0.018307941034436226, + 0.006702456623315811, + -0.00014793175796512514, + -0.035724423825740814, + 0.013999219983816147, + -0.017036786302924156, + 0.021642660722136497, + 0.019034316763281822, + -0.08023137599229813, + -0.008526647463440895, + -0.016260886564850807, + -0.038035616278648376, + 0.07204315066337585, + -0.014139542356133461, + 0.0325382798910141, + -0.007915832102298737, + 0.031415700912475586, + 0.01738346554338932, + -0.03065630979835987, + 0.002313255565240979, + -0.0005370425642468035, + 0.0007944722310639918, + 0.0011586913606151938, + 0.023409072309732437, + 0.00926953088492155, + 0.02359066531062126 + ], + "result": "--- 结果 1 (相似度: 1.000) ---\n文件路径: C:\\Steam\\steamapps\\common\\RimWorld\\Data\\dll1.6\\Verse\\Map.txt\n\npublic sealed class Map : IIncidentTarget, ILoadReferenceable, IThingHolder, IExposable, IDisposable\n{\n\tpublic MapFileCompressor compressor;\n\n\tprivate List loadedFullThings;\n\n\tpublic MapGeneratorDef generatorDef;\n\n\tpublic int uniqueID = -1;\n\n\tpublic int generationTick;\n\n\tpublic bool wasSpawnedViaGravShipLanding;\n\n\tprivate Color? fogOfWarColor;\n\n\tprivate OrbitalDebrisDef orbitalDebris;\n\n\tprivate int generatedId;\n\n\tpublic MapInfo info = new MapInfo();\n\n\tpublic MapEvents events;\n\n\tpublic List components = new List();\n\n\tpublic ThingOwner spawnedThings;\n\n\tpublic CellIndices cellIndices;\n\n\tpublic ListerThings listerThings;\n\n\tpublic ListerBuildings listerBuildings;\n\n\tpublic MapPawns mapPawns;\n\n\tpublic DynamicDrawManager dynamicDrawManager;\n\n\tpublic MapDrawer mapDrawer;\n\n\tpublic PawnDestinationReservationManager pawnDestinationReservationManager;\n\n\tpublic TooltipGiverList tooltipGiverList;\n\n\tpublic ReservationManager reservationManager;\n\n\tpublic EnrouteManager enrouteManager;\n\n\tpublic PhysicalInteractionReservationManager physicalInteractionReservationManager;\n\n\tpublic DesignationManager designationManager;\n\n\tpublic LordManager lordManager;\n\n\tpublic PassingShipManager passingShipManager;\n\n\tpublic HaulDestinationManager haulDestinationManager;\n\n\tpublic DebugCellDrawer debugDrawer;\n\n\tpublic GameConditionManager gameConditionManager;\n\n\tpublic WeatherManager weatherManager;\n\n\tpublic ZoneManager zoneManager;\n\n\tpublic PlanManager planManager;\n\n\tpublic ResourceCounter resourceCounter;\n\n\tpublic MapTemperature mapTemperature;\n\n\tpublic TemperatureVacuumCache TemperatureVacuumCache;\n\n\tpublic AreaManager areaManager;\n\n\tpublic AttackTargetsCache attackTargetsCache;\n\n\tpublic AttackTargetReservationManager attackTargetReservationManager;\n\n\tpublic VoluntarilyJoinableLordsStarter lordsStarter;\n\n\tpublic FleckManager flecks;\n\n\tpublic DeferredSpawner deferredSpawner;\n\n\tpublic ThingGrid thingGrid;\n\n\tpublic CoverGrid coverGrid;\n\n\tpublic EdificeGrid edificeGrid;\n\n\tpublic BlueprintGrid blueprintGrid;\n\n\tpublic FogGrid fogGrid;\n\n\tpublic RegionGrid regionGrid;\n\n\tpublic GlowGrid glowGrid;\n\n\tpublic TerrainGrid terrainGrid;\n\n\tpublic Pathing pathing;\n\n\tpublic RoofGrid roofGrid;\n\n\tpublic FertilityGrid fertilityGrid;\n\n\tpublic SnowGrid snowGrid;\n\n\tpublic DeepResourceGrid deepResourceGrid;\n\n\tpublic ExitMapGrid exitMapGrid;\n\n\tpublic AvoidGrid avoidGrid;\n\n\tpublic GasGrid gasGrid;\n\n\tpublic PollutionGrid pollutionGrid;\n\n\tpublic SubstructureGrid substructureGrid;\n\n\tpublic WaterBodyTracker waterBodyTracker;\n\n\tpublic SandGrid sandGrid;\n\n\tpublic LinkGrid linkGrid;\n\n\tpublic PowerNetManager powerNetManager;\n\n\tpublic PowerNetGrid powerNetGrid;\n\n\tpublic RegionMaker regionMaker;\n\n\tpublic PathFinder pathFinder;\n\n\tpublic PawnPathPool pawnPathPool;\n\n\tpublic RegionAndRoomUpdater regionAndRoomUpdater;\n\n\tpublic RegionLinkDatabase regionLinkDatabase;\n\n\tpublic MoteCounter moteCounter;\n\n\tpublic GatherSpotLister gatherSpotLister;\n\n\tpublic WindManager windManager;\n\n\tpublic ListerBuildingsRepairable listerBuildingsRepairable;\n\n\tpublic ListerHaulables listerHaulables;\n\n\tpublic ListerMergeables listerMergeables;\n\n\tpublic ListerArtificialBuildingsForMeditation listerArtificialBuildingsForMeditation;\n\n\tpublic ListerBuldingOfDefInProximity listerBuldingOfDefInProximity;\n\n\tpublic ListerBuildingWithTagInProximity listerBuildingWithTagInProximity;\n\n\tpublic ListerFilthInHomeArea listerFilthInHomeArea;\n\n\tpublic Reachability reachability;\n\n\tpublic ItemAvailability itemAvailability;\n\n\tpublic AutoBuildRoofAreaSetter autoBuildRoofAreaSetter;\n\n\tpublic RoofCollapseBufferResolver roofCollapseBufferResolver;\n\n\tpublic RoofCollapseBuffer roofCollapseBuffer;\n\n\tpublic WildAnimalSpawner wildAnimalSpawner;\n\n\tpublic WildPlantSpawner wildPlantSpawner;\n\n\tpublic SteadyEnvironmentEffects steadyEnvironmentEffects;\n\n\tpublic TempTerrainManager tempTerrain;\n\n\tpublic FreezeManager freezeManager;\n\n\tpublic SkyManager skyManager;\n\n\tpublic OverlayDrawer overlayDrawer;\n\n\tpublic FloodFiller floodFiller;\n\n\tpublic WeatherDecider weatherDecider;\n\n\tpublic FireWatcher fireWatcher;\n\n\tpublic DangerWatcher dangerWatcher;\n\n\tpublic DamageWatcher damageWatcher;\n\n\tpublic StrengthWatcher strengthWatcher;\n\n\tpublic WealthWatcher wealthWatcher;\n\n\tpublic RegionDirtyer regionDirtyer;\n\n\tpublic MapCellsInRandomOrder cellsInRandomOrder;\n\n\tpublic RememberedCameraPos rememberedCameraPos;\n\n\tpublic MineStrikeManager mineStrikeManager;\n\n\tpublic StoryState storyState;\n\n\tpublic RoadInfo roadInfo;\n\n\tpublic WaterInfo waterInfo;\n\n\tpublic RetainedCaravanData retainedCaravanData;\n\n\tpublic TemporaryThingDrawer temporaryThingDrawer;\n\n\tpublic AnimalPenManager animalPenManager;\n\n\tpublic MapPlantGrowthRateCalculator plantGrowthRateCalculator;\n\n\tpublic AutoSlaughterManager autoSlaughterManager;\n\n\tpublic TreeDestructionTracker treeDestructionTracker;\n\n\tpublic StorageGroupManager storageGroups;\n\n\tpublic EffecterMaintainer effecterMaintainer;\n\n\tpublic PostTickVisuals postTickVisuals;\n\n\tpublic List layoutStructureSketches = new List();\n\n\tpublic ThingListChangedCallbacks thingListChangedCallbacks = new ThingListChangedCallbacks();\n\n\tpublic List landingBlockers = new List();\n\n\tpublic Tile pocketTileInfo;\n\n\tpublic const string ThingSaveKey = \"thing\";\n\n\t[TweakValue(\"Graphics_Shadow\", 0f, 100f)]\n\tprivate static bool AlwaysRedrawShadows;\n\n\tprivate MixedBiomeMapComponent mixedBiomeComp;\n\n\tpublic int Index => Find.Maps.IndexOf(this);\n\n\tpublic IntVec3 Size => info.Size;\n\n\tpublic IntVec3 Center => new IntVec3(Size.x / 2, 0, Size.z / 2);\n\n\tpublic Faction ParentFaction => info.parent?.Faction;\n\n\tpublic int Area => Size.x * Size.z;\n\n\tpublic IThingHolder ParentHolder => info.parent;\n\n\tpublic bool DrawMapClippers => !generatorDef.disableMapClippers;\n\n\tpublic bool CanEverExit\n\t{\n\t\tget\n\t\t{\n\t\t\tif (!info.isPocketMap)\n\t\t\t{\n\t\t\t\treturn Biome.canExitMap;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tpublic Color? FogOfWarColor\n\t{\n\t\tget\n\t\t{\n\t\t\treturn fogOfWarColor ?? Biome.fogOfWarColor;\n\t\t}\n\t\tset\n\t\t{\n\t\t\tfogOfWarColor = value;\n\t\t}\n\t}\n\n\tpublic OrbitalDebrisDef OrbitalDebris\n\t{\n\t\tget\n\t\t{\n\t\t\treturn orbitalDebris ?? Biome.orbitalDebris;\n\t\t}\n\t\tset\n\t\t{\n\t\t\torbitalDebris = value;\n\t\t}\n\t}\n\n\tpublic Material MapEdgeMaterial\n\t{\n\t\tget\n\t\t{\n\t\t\tif (ModsConfig.AnomalyActive && generatorDef == MapGeneratorDefOf.MetalHell)\n\t\t\t{\n\t\t\t\treturn MapEdgeClipDrawer.ClipMatMetalhell;\n\t\t\t}\n\t\t\tWorldObject parent = Parent;\n\t\t\tif (parent != null && parent.def.MapEdgeMaterial != null)\n\t\t\t{\n\t\t\t\treturn parent.def.MapEdgeMaterial;\n\t\t\t}\n\t\t\treturn MapEdgeClipDrawer.ClipMat;\n\t\t}\n\t}\n\n\tpublic bool Disposed { get; private set; }\n\n\tpublic IEnumerable AllCells\n\t{\n\t\tget\n\t\t{\n\t\t\tfor (int z = 0; z < Size.z; z++)\n\t\t\t{\n\t\t\t\tfor (int y = 0; y < Size.y; y++)\n\t\t\t\t{\n\t\t\t\t\tfor (int x = 0; x < Size.x; x++)\n\t\t\t\t\t{\n\t\t\t\t\t\tyield return new IntVec3(x, y, z);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic bool IsPlayerHome\n\t{\n\t\tget\n\t\t{\n\t\t\tif (!wasSpawnedViaGravShipLanding)\n\t\t\t{\n\t\t\t\tif (info?.parent != null && info.parent.Faction == Faction.OfPlayer)\n\t\t\t\t{\n\t\t\t\t\treturn info.parent.def.canBePlayerHome;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tpublic bool TreatAsPlayerHomeForThreatPoints\n\t{\n\t\tget\n\t\t{\n\t\t\tif (IsPlayerHome)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (info.parent != null && info.parent.def.treatAsPlayerHome)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tpublic bool IsTempIncidentMap => info.parent.def.isTempIncidentMapOwner;\n\n\tpublic PlanetTile Tile => info.Tile;\n\n\tpublic Tile TileInfo\n\t{\n\t\tget\n\t\t{\n\t\t\tif (!IsPocketMap)\n\t\t\t{\n\t\t\t\treturn Find.WorldGrid[Tile];\n\t\t\t}\n\t\t\treturn pocketTileInfo;\n\t\t}\n\t}\n\n\tpublic BiomeDef Biome => TileInfo.PrimaryBiome;\n\n\tpublic IEnumerable Biomes => TileInfo.Biomes;\n\n\tpublic MixedBiomeMapComponent MixedBiomeComp => mixedBiomeComp ?? (mixedBiomeComp = GetComponent());\n\n\tpublic bool IsStartingMap => Find.GameInfo.startingTile == Tile;\n\n\tpublic bool IsPocketMap => info.isPocketMap;\n\n\tpublic StoryState StoryState => storyState;\n\n\tpublic GameConditionManager GameConditionManager => gameConditionManager;\n\n\tpublic float PlayerWealthForStoryteller\n\t{\n\t\tget\n\t\t{\n\t\t\tif (TreatAsPlayerHomeForThreatPoints)\n\t\t\t{\n\t\t\t\tif (Find.Storyteller.difficulty.fixedWealthMode)\n\t\t\t\t{\n\t\t\t\t\treturn StorytellerUtility.FixedWealthModeMapWealthFromTimeCurve.Evaluate(AgeInDays * Find.Storyteller.difficulty.fixedWealthTimeFactor);\n\t\t\t\t}\n\t\t\t\treturn wealthWatcher.WealthItems + wealthWatcher.WealthBuildings * 0.5f + wealthWatcher.WealthPawns;\n\t\t\t}\n\t\t\tfloat num = 0f;\n\t\t\tforeach (Pawn item in mapPawns.PawnsInFaction(Faction.OfPlayer))\n\t\t\t{\n\t\t\t\tif (item.IsFreeColonist)\n\t\t\t\t{\n\t\t\t\t\tnum += WealthWatcher.GetEquipmentApparelAndInventoryWealth(item);\n\t\t\t\t}\n\t\t\t\tif (item.IsAnimal)\n\t\t\t\t{\n\t\t\t\t\tnum += item.MarketValue;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn num;\n\t\t}\n\t}\n\n\tpublic IEnumerable PlayerPawnsForStoryteller => mapPawns.PawnsInFaction(Faction.OfPlayer);\n\n\tpublic FloatRange IncidentPointsRandomFactorRange => FloatRange.One;\n\n\tpublic MapParent Parent => info.parent;\n\n\tpublic PocketMapParent PocketMapParent\n\t{\n\t\tget\n\t\t{\n\t\t\tif (!IsPocketMap)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn Parent as PocketMapParent;\n\t\t}\n\t}\n\n\tpublic IEnumerable ChildPocketMaps\n\t{\n\t\tget\n\t\t{\n\t\t\tforeach (PocketMapParent pocketMap in Find.World.pocketMaps)\n\t\t\t{\n\t\t\t\tif (pocketMap.sourceMap == this)\n\t\t\t\t{\n\t\t\t\t\tyield return pocketMap.Map;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic float AgeInDays => (float)(Find.TickManager.TicksGame - generationTick) / 60000f;\n\n\tpublic int NextGenSeed => HashCode.Combine(TileInfo.tile.Valid ? TileInfo.tile.GetHashCode() : uniqueID, generatedId++, Find.World.info.Seed);\n\n\tpublic int ConstantRandSeed => uniqueID ^ 0xFDA252;\n\n\tpublic IEnumerator GetEnumerator()\n\t{\n\t\tforeach (IntVec3 allCell in AllCells)\n\t\t{\n\t\t\tyield return allCell;\n\t\t}\n\t}\n\n\tpublic IEnumerable IncidentTargetTags()\n\t{\n\t\treturn info.parent?.IncidentTargetTags() ?? Enumerable.Empty();\n\t}\n\n\tpublic void ConstructComponents()\n\t{\n\t\tspawnedThings = new ThingOwner(this);\n\t\tcellIndices = new CellIndices(this);\n\t\tlisterThings = new ListerThings(ListerThingsUse.Global, thingListChangedCallbacks);\n\t\tlisterBuildings = new ListerBuildings();\n\t\tmapPawns = new MapPawns(this);\n\t\tdynamicDrawManager = new DynamicDrawManager(this);\n\t\tmapDrawer = new MapDrawer(this);\n\t\ttooltipGiverList = new TooltipGiverList();\n\t\tpawnDestinationReservationManager = new PawnDestinationReservationManager();\n\t\treservationManager = new ReservationManager(this);\n\t\tenrouteManager = new EnrouteManager(this);\n\t\tphysicalInteractionReservationManager = new PhysicalInteractionReservationManager();\n\t\tdesignationManager = new DesignationManager(this);\n\t\tlordManager = new LordManager(this);\n\t\tdebugDrawer = new DebugCellDrawer();\n\t\tpassingShipManager = new PassingShipManager(this);\n\t\thaulDestinationManager = new HaulDestinationManager(this);\n\t\tgameConditionManager = new GameConditionManager(this);\n\t\tweatherManager = new WeatherManager(this);\n\t\tzoneManager = new ZoneManager(this);\n\t\tplanManager = new PlanManager(this);\n\t\tresourceCounter = new ResourceCounter(this);\n\t\tmapTemperature = new MapTemperature(this);\n\t\tTemperatureVacuumCache = new TemperatureVacuumCache(this);\n\t\tareaManager = new AreaManager(this);\n\t\tattackTargetsCache = new AttackTargetsCache(this);\n\t\tattackTargetReservationManager = new AttackTargetReservationManager(this);\n\t\tlordsStarter = new VoluntarilyJoinableLordsStarter(this);\n\t\tflecks = new FleckManager(this);\n\t\tdeferredSpawner = new DeferredSpawner(this);\n\t\tthingGrid = new ThingGrid(this);\n\t\tcoverGrid = new CoverGrid(this);\n\t\tedificeGrid = new EdificeGrid(this);\n\t\tblueprintGrid = new BlueprintGrid(this);\n\t\tfogGrid = new FogGrid(this);\n\t\tglowGrid = new GlowGrid(this);\n\t\tregionGrid = new RegionGrid(this);\n\t\tterrainGrid = new TerrainGrid(this);\n\t\tpathing = new Pathing(this);\n\t\troofGrid = new RoofGrid(this);\n\t\tfertilityGrid = new FertilityGrid(this);\n\t\tsnowGrid = new SnowGrid(this);\n\t\tgasGrid = new GasGrid(this);\n\t\tpollutionGrid = new PollutionGrid(this);\n\t\tdeepResourceGrid = new DeepResourceGrid(this);\n\t\texitMapGrid = new ExitMapGrid(this);\n\t\tavoidGrid = new AvoidGrid(this);\n\t\tlinkGrid = new LinkGrid(this);\n\t\tpowerNetManager = new PowerNetManager(this);\n\t\tpowerNetGrid = new PowerNetGrid(this);\n\t\tregionMaker = new RegionMaker(this);\n\t\tpathFinder = new PathFinder(this);\n\t\tpawnPathPool = new PawnPathPool(this);\n\t\tregionAndRoomUpdater = new RegionAndRoomUpdater(this);\n\t\tregionLinkDatabase = new RegionLinkDatabase();\n\t\tmoteCounter = new MoteCounter();\n\t\tgatherSpotLister = new GatherSpotLister();\n\t\twindManager = new WindManager(this);\n\t\tlisterBuildingsRepairable = new ListerBuildingsRepairable();\n\t\tlisterHaulables = new ListerHaulables(this);\n\t\tlisterMergeables = new ListerMergeables(this);\n\t\tlisterFilthInHomeArea = new ListerFilthInHomeArea(this);\n\t\tlisterArtificialBuildingsForMeditation = new ListerArtificialBuildingsForMeditation(this);\n\t\tlisterBuldingOfDefInProximity = new ListerBuldingOfDefInProximity(this);\n\t\tlisterBuildingWithTagInProximity = new ListerBuildingWithTagInProximity(this);\n\t\treachability = new Reachability(this);\n\t\titemAvailability = new ItemAvailability(this);\n\t\tautoBuildRoofAreaSetter = new AutoBuildRoofAreaSetter(this);\n\t\troofCollapseBufferResolver = new RoofCollapseBufferResolver(this);\n\t\troofCollapseBuffer = new RoofCollapseBuffer();\n\t\twildAnimalSpawner = new WildAnimalSpawner(this);\n\t\twildPlantSpawner = new WildPlantSpawner(this);\n\t\tsteadyEnvironmentEffects = new SteadyEnvironmentEffects(this);\n\t\ttempTerrain = new TempTerrainManager(this);\n\t\tskyManager = new SkyManager(this);\n\t\toverlayDrawer = new OverlayDrawer();\n\t\tfloodFiller = new FloodFiller(this);\n\t\tweatherDecider = new WeatherDecider(this);\n\t\tfireWatcher = new FireWatcher(this);\n\t\tdangerWatcher = new DangerWatcher(this);\n\t\tdamageWatcher = new DamageWatcher();\n\t\tstrengthWatcher = new StrengthWatcher(this);\n\t\twealthWatcher = new WealthWatcher(this);\n\t\tregionDirtyer = new RegionDirtyer(this);\n\t\tcellsInRandomOrder = new MapCellsInRandomOrder(this);\n\t\trememberedCameraPos = new RememberedCameraPos(this);\n\t\tmineStrikeManager = new MineStrikeManager();\n\t\tstoryState = new StoryState(this);\n\t\tretainedCaravanData = new RetainedCaravanData(this);\n\t\ttemporaryThingDrawer = new TemporaryThingDrawer();\n\t\tanimalPenManager = new AnimalPenManager(this);\n\t\tplantGrowthRateCalculator = new MapPlantGrowthRateCalculator();\n\t\tautoSlaughterManager = new AutoSlaughterManager(this);\n\t\ttreeDestructionTracker = new TreeDestructionTracker(this);\n\t\tstorageGroups = new StorageGroupManager(this);\n\t\teffecterMaintainer = new EffecterMaintainer(this);\n\t\tpostTickVisuals = new PostTickVisuals(this);\n\t\tif (ModsConfig.OdysseyActive)\n\t\t{\n\t\t\tsubstructureGrid = new SubstructureGrid(this);\n\t\t\twaterBodyTracker = new WaterBodyTracker(this);\n\t\t\tfreezeManager = new FreezeManager(this);\n\t\t\tsandGrid = new SandGrid(this);\n\t\t}\n\t\tcomponents.Clear();\n\t\tFillComponents();\n\t}\n\n\tpublic void ExposeData()\n\t{\n\t\tif (Scribe.mode == LoadSaveMode.LoadingVars)\n\t\t{\n\t\t\tevents = new MapEvents(this);\n\t\t}\n\t\tScribe_Values.Look(ref uniqueID, \"uniqueID\", -1);\n\t\tScribe_Values.Look(ref generationTick, \"generationTick\", 0);\n\t\tScribe_Values.Look(ref wasSpawnedViaGravShipLanding, \"wasSpawnedViaGravShipLanding\", defaultValue: false);\n\t\tScribe_Values.Look(ref fogOfWarColor, \"fogOfWarColor\");\n\t\tScribe_Values.Look(ref generatedId, \"generatedId\", 0);\n\t\tScribe_Defs.Look(ref orbitalDebris, \"orbitalDebris\");\n\t\tScribe_Defs.Look(ref generatorDef, \"generatorDef\");\n\t\tScribe_Deep.Look(ref pocketTileInfo, \"pocketTileInfo\");\n\t\tScribe_Deep.Look(ref info, \"mapInfo\");\n\t\tScribe_Collections.Look(ref layoutStructureSketches, \"layoutStructureSketches\", LookMode.Deep);\n\t\tScribe_Collections.Look(ref landingBlockers, \"landingBlockers\", LookMode.Undefined);\n\t\tif (Scribe.mode == LoadSaveMode.Saving)\n\t\t{\n\t\t\tcompressor = new MapFileCompressor(this);\n\t\t\tcompressor.BuildCompressedString();\n\t\t\tExposeComponents();\n\t\t\tcompressor.ExposeData();\n\t\t\tHashSet hashSet = new HashSet();\n\t\t\tif (Scribe.EnterNode(\"things\"))\n\t\t\t{\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tforeach (Thing allThing in listerThings.AllThings)\n\t\t\t\t\t{\n\t\t\t\t\t\ttry\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (allThing.def.isSaveable && !allThing.IsSaveCompressible())\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (!hashSet.Add(allThing.ThingID))\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tLog.Error(\"Saving Thing with already-used ID \" + allThing.ThingID);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\thashSet.Add(allThing.ThingID);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tThing target = allThing;\n\t\t\t\t\t\t\t\tScribe_Deep.Look(ref target, \"thing\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (OutOfMemoryException)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthrow;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (Exception arg)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tLog.Error($\"Exception saving {allThing}: {arg}\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfinally\n\t\t\t\t{\n\t\t\t\t\tScribe.ExitNode();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tLog.Error(\"Could not enter the things node while saving.\");\n\t\t\t}\n\t\t\tcompressor = null;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (Scribe.mode == LoadSaveMode.LoadingVars)\n\t\t\t{\n\t\t\t\tConstructComponents();\n\t\t\t\tregionAndRoomUpdater.Enabled = false;\n\t\t\t\tcompressor = new MapFileCompressor(this);\n\t\t\t}\n\t\t\telse if (Scribe.mode == LoadSaveMode.PostLoadInit && landingBlockers == null)\n\t\t\t{\n\t\t\t\tlandingBlockers = new List();\n\t\t\t}\n\t\t\tExposeComponents();\n\t\t\tDeepProfiler.Start(\"Load compressed things\");\n\t\t\tcompressor.ExposeData();\n\t\t\tDeepProfiler.End();\n\t\t\tDeepProfiler.Start(\"Load non-compressed things\");\n\t\t\tScribe_Collections.Look(ref loadedFullThings, \"things\", LookMode.Deep);\n\t\t\tDeepProfiler.End();\n\t\t}\n\t\tBackCompatibility.PostExposeData(this);\n\t}\n\n\tprivate void FillComponents()\n\t{\n\t\tcomponents.RemoveAll((MapComponent component) => component == null);\n\t\tforeach (Type item3 in typeof(MapComponent).AllSubclassesNonAbstract())\n\t\t{\n\t\t\tif (!typeof(CustomMapComponent).IsAssignableFrom(item3) && GetComponent(item3) == null)\n\t\t\t{\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tMapComponent item = (MapComponent)Activator.CreateInstance(item3, this);\n\t\t\t\t\tcomponents.Add(item);\n\t\t\t\t}\n\t\t\t\tcatch (Exception ex)\n\t\t\t\t{\n\t\t\t\t\tLog.Error(\"Could not instantiate a MapComponent of type \" + item3?.ToString() + \": \" + ex);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (generatorDef?.customMapComponents != null)\n\t\t{\n\t\t\tforeach (Type customMapComponent in generatorDef.customMapComponents)\n\t\t\t{\n\t\t\t\tif (GetComponent(customMapComponent) == null)\n\t\t\t\t{\n\t\t\t\t\ttry\n\t\t\t\t\t{\n\t\t\t\t\t\tMapComponent item2 = (MapComponent)Activator.CreateInstance(customMapComponent, this);\n\t\t\t\t\t\tcomponents.Add(item2);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (Exception ex2)\n\t\t\t\t\t{\n\t\t\t\t\t\tLog.Error(\"Could not instantiate a MapComponent of type \" + customMapComponent?.ToString() + \": \" + ex2);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\troadInfo = GetComponent();\n\t\twaterInfo = GetComponent();\n\t}\n\n\tpublic void FinalizeLoading()\n\t{\n\t\tregionAndRoomUpdater.Enabled = true;\n\t\tList list = compressor.ThingsToSpawnAfterLoad().ToList();\n\t\tcompressor = null;\n\t\tDeepProfiler.Start(\"Merge compressed and non-compressed thing lists\");\n\t\tList list2 = new List(loadedFullThings.Count + list.Count);\n\t\tforeach (Thing item in loadedFullThings.Concat(list))\n\t\t{\n\t\t\tlist2.Add(item);\n\t\t}\n\t\tloadedFullThings.Clear();\n\t\tDeepProfiler.End();\n\t\tDeepProfiler.Start(\"Spawn everything into the map\");\n\t\tBackCompatibility.PreCheckSpawnBackCompatibleThingAfterLoading(this);\n\t\tforeach (Thing item2 in list2)\n\t\t{\n\t\t\tif (item2 is Building)\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\ttry\n\t\t\t{\n\t\t\t\tif (!BackCompatibility.CheckSpawnBackCompatibleThingAfterLoading(item2, this))\n\t\t\t\t{\n\t\t\t\t\tGenSpawn.Spawn(item2, item2.Position, this, item2.Rotation, WipeMode.FullRefund, respawningAfterLoad: true);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (Exception ex)\n\t\t\t{\n\t\t\t\tLog.Error(\"Exception spawning loaded thing \" + item2.ToStringSafe() + \": \" + ex);\n\t\t\t}\n\t\t}\n\t\tforeach (Building item3 in from t in list2.OfType()\n\t\t\torderby t.def.size.Magnitude\n\t\t\tselect t)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tGenSpawn.SpawnBuildingAsPossible(item3, this, respawningAfterLoad: true);\n\t\t\t}\n\t\t\tcatch (Exception ex2)\n\t\t\t{\n\t\t\t\tLog.Error(\"Exception spawning loaded thing \" + item3.ToStringSafe() + \": \" + ex2);\n\t\t\t}\n\t\t}\n\t\tBackCompatibility.PostCheckSpawnBackCompatibleThingAfterLoading(this);\n\t\tDeepProfiler.End();\n\t\tFinalizeInit();\n\t}\n\n\tpublic void FinalizeInit()\n\t{\n\t\tDeepProfiler.Start(\"Finalize geometry\");\n\t\tpathing.RecalculateAllPerceivedPathCosts();\n\t\tregionAndRoomUpdater.Enabled = true;\n\t\tregionAndRoomUpdater.RebuildAllRegionsAndRooms();\n\t\tpowerNetManager.UpdatePowerNetsAndConnections_First();\n\t\tTemperatureVacuumCache.TemperatureVacuumSaveLoad.ApplyLoadedDataToRegions();\n\t\tavoidGrid.Regenerate();\n\t\tanimalPenManager.RebuildAllPens();\n\t\tplantGrowthRateCalculator.BuildFor(this);\n\t\tgasGrid.RecalculateEverHadGas();\n\t\tDeepProfiler.End();\n\t\tDeepProfiler.Start(\"Thing.PostMapInit()\");\n\t\tforeach (Thing item in listerThings.AllThings.ToList())\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\titem.PostMapInit();\n\t\t\t}\n\t\t\tcatch (Exception ex)\n\t\t\t{\n\t\t\t\tLog.Error(\"Error in PostMapInit() for \" + item.ToStringSafe() + \": \" + ex);\n\t\t\t}\n\t\t}\n\t\tDeepProfiler.End();\n\t\tDeepProfiler.Start(\"listerFilthInHomeArea.RebuildAll()\");\n\t\tlisterFilthInHomeArea.RebuildAll();\n\t\tDeepProfiler.End();\n\t\tif (ModsConfig.OdysseyActive)\n\t\t{\n\t\t\tGetComponent().SetDrawerDirty();\n\t\t}\n\t\tLongEventHandler.ExecuteWhenFinished(delegate\n\t\t{\n\t\t\tmapDrawer.RegenerateEverythingNow();\n\t\t});\n\t\tDeepProfiler.Start(\"resourceCounter.UpdateResourceCounts()\");\n\t\tresourceCounter.UpdateResourceCounts();\n\t\tDeepProfiler.End();\n\t\tDeepProfiler.Start(\"wealthWatcher.ForceRecount()\");\n\t\twealthWatcher.ForceRecount(allowDuringInit: true);\n\t\tDeepProfiler.End();\n\t\tif (ModsConfig.OdysseyActive)\n\t\t{\n\t\t\tusing (new ProfilerBlock(\"WaterBodyTracker.ConstructBodies()\"))\n\t\t\t{\n\t\t\t\twaterBodyTracker?.ConstructBodies();\n\t\t\t}\n\t\t}\n\t\tMapComponentUtility.FinalizeInit(this);\n\t\tLongEventHandler.ExecuteWhenFinished(delegate\n\t\t{\n\t\t\tFind.MusicManagerPlay.CheckTransitions();\n\t\t});\n\t}\n\n\tprivate void ExposeComponents()\n\t{\n\t\tScribe_Deep.Look(ref weatherManager, \"weatherManager\", this);\n\t\tScribe_Deep.Look(ref reservationManager, \"reservationManager\", this);\n\t\tScribe_Deep.Look(ref enrouteManager, \"enrouteManager\", this);\n\t\tScribe_Deep.Look(ref physicalInteractionReservationManager, \"physicalInteractionReservationManager\");\n\t\tScribe_Deep.Look(ref planManager, \"planManager\", this);\n\t\tScribe_Deep.Look(ref designationManager, \"designationManager\", this);\n\t\tScribe_Deep.Look(ref pawnDestinationReservationManager, \"pawnDestinationReservationManager\");\n\t\tScribe_Deep.Look(ref lordManager, \"lordManager\", this);\n\t\tScribe_Deep.Look(ref passingShipManager, \"visitorManager\", this);\n\t\tScribe_Deep.Look(ref gameConditionManager, \"gameConditionManager\", this);\n\t\tScribe_Deep.Look(ref fogGrid, \"fogGrid\", this);\n\t\tScribe_Deep.Look(ref roofGrid, \"roofGrid\", this);\n\t\tScribe_Deep.Look(ref terrainGrid, \"terrainGrid\", this);\n\t\tScribe_Deep.Look(ref zoneManager, \"zoneManager\", this);\n\t\tScribe_Deep.Look(ref TemperatureVacuumCache, \"temperatureCache\", this);\n\t\tScribe_Deep.Look(ref snowGrid, \"snowGrid\", this);\n\t\tScribe_Deep.Look(ref gasGrid, \"gasGrid\", this);\n\t\tScribe_Deep.Look(ref pollutionGrid, \"pollutionGrid\", this);\n\t\tScribe_Deep.Look(ref waterBodyTracker, \"waterBodyTracker\", this);\n\t\tScribe_Deep.Look(ref areaManager, \"areaManager\", this);\n\t\tScribe_Deep.Look(ref lordsStarter, \"lordsStarter\", this);\n\t\tScribe_Deep.Look(ref attackTargetReservationManager, \"attackTargetReservationManager\", this);\n\t\tScribe_Deep.Look(ref deepResourceGrid, \"deepResourceGrid\", this);\n\t\tScribe_Deep.Look(ref weatherDecider, \"weatherDecider\", this);\n\t\tScribe_Deep.Look(ref damageWatcher, \"damageWatcher\");\n\t\tScribe_Deep.Look(ref rememberedCameraPos, \"rememberedCameraPos\", this);\n\t\tScribe_Deep.Look(ref mineStrikeManager, \"mineStrikeManager\");\n\t\tScribe_Deep.Look(ref retainedCaravanData, \"retainedCaravanData\", this);\n\t\tScribe_Deep.Look(ref storyState, \"storyState\", this);\n\t\tScribe_Deep.Look(ref tempTerrain, \"tempTerrain\", this);\n\t\tScribe_Deep.Look(ref wildPlantSpawner, \"wildPlantSpawner\", this);\n\t\tScribe_Deep.Look(ref temporaryThingDrawer, \"temporaryThingDrawer\");\n\t\tScribe_Deep.Look(ref flecks, \"flecks\", this);\n\t\tScribe_Deep.Look(ref deferredSpawner, \"deferredSpawner\", this);\n\t\tScribe_Deep.Look(ref autoSlaughterManager, \"autoSlaughterManager\", this);\n\t\tScribe_Deep.Look(ref treeDestructionTracker, \"treeDestructionTracker\", this);\n\t\tScribe_Deep.Look(ref storageGroups, \"storageGroups\", this);\n\t\tScribe_Deep.Look(ref sandGrid, \"sandGrid\", this);\n\t\tScribe_Collections.Look(ref components, \"components\", LookMode.Deep, this);\n\t\tif (Scribe.mode == LoadSaveMode.PostLoadInit)\n\t\t{\n\t\t\tif (planManager == null)\n\t\t\t{\n\t\t\t\tplanManager = new PlanManager(this);\n\t\t\t}\n\t\t\tif (ModsConfig.BiotechActive && pollutionGrid == null)\n\t\t\t{\n\t\t\t\tpollutionGrid = new PollutionGrid(this);\n\t\t\t}\n\t\t\tif (ModsConfig.OdysseyActive)\n\t\t\t{\n\t\t\t\tif (sandGrid == null)\n\t\t\t\t{\n\t\t\t\t\tsandGrid = new SandGrid(this);\n\t\t\t\t}\n\t\t\t\tif (substructureGrid == null)\n\t\t\t\t{\n\t\t\t\t\tsubstructureGrid = new SubstructureGrid(this);\n\t\t\t\t}\n\t\t\t\tif (waterBodyTracker == null)\n\t\t\t\t{\n\t\t\t\t\twaterBodyTracker = new WaterBodyTracker(this);\n\t\t\t\t}\n\t\t\t\tif (freezeManager == null)\n\t\t\t\t{\n\t\t\t\t\tfreezeManager = new FreezeManager(this);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tFillComponents();\n\t\tBackCompatibility.PostExposeData(this);\n\t}\n\n\tpublic void MapPreTick()\n\t{\n\t\titemAvailability.Tick();\n\t\tlisterHaulables.ListerHaulablesTick();\n\t\ttry\n\t\t{\n\t\t\tautoBuildRoofAreaSetter.AutoBuildRoofAreaSetterTick_First();\n\t\t}\n\t\tcatch (Exception ex)\n\t\t{\n\t\t\tLog.Error(ex.ToString());\n\t\t}\n\t\troofCollapseBufferResolver.CollapseRoofsMarkedToCollapse();\n\t\twindManager.WindManagerTick();\n\t\ttry\n\t\t{\n\t\t\tmapTemperature.MapTemperatureTick();\n\t\t}\n\t\tcatch (Exception ex2)\n\t\t{\n\t\t\tLog.Error(ex2.ToString());\n\t\t}\n\t\ttemporaryThingDrawer.Tick();\n\t\ttry\n\t\t{\n\t\t\tpathFinder.PathFinderTick();\n\t\t}\n\t\tcatch (Exception ex3)\n\t\t{\n\t\t\tLog.Error(ex3.ToString());\n\t\t}\n\t}\n\n\tpublic void MapPostTick()\n\t{\n\t\ttry\n\t\t{\n\t\t\twildAnimalSpawner.WildAnimalSpawnerTick();\n\t\t}\n\t\tcatch (Exception ex)\n\t\t{\n\t\t\tLog.Error(ex.ToString());\n\t\t}\n\t\ttry\n\t\t{\n\t\t\twildPlantSpawner.WildPlantSpawnerTick();\n\t\t}\n\t\tcatch (Exception ex2)\n\t\t{\n\t\t\tLog.Error(ex2.ToString());\n\t\t}\n\t\ttry\n\t\t{\n\t\t\tpowerNetManager.PowerNetsTick();\n\t\t}\n\t\tcatch (Exception ex3)\n\t\t{\n\t\t\tLog.Error(ex3.ToString());\n\t\t}\n\t\ttry\n\t\t{\n\t\t\tsteadyEnvironmentEffects.SteadyEnvironmentEffectsTick();\n\t\t}\n\t\tcatch (Exception ex4)\n\t\t{\n\t\t\tLog.Error(ex4.ToString());\n\t\t}\n\t\ttry\n\t\t{\n\t\t\ttempTerrain.Tick();\n\t\t}\n\t\tcatch (Exception ex5)\n\t\t{\n\t\t\tLog.Error(ex5.ToString());\n\t\t}\n\t\ttry\n\t\t{\n\t\t\tgasGrid.Tick();\n\t\t}\n\t\tcatch (Exception ex6)\n\t\t{\n\t\t\tLog.Error(ex6.ToString());\n\t\t}\n\t\tif (ModsConfig.BiotechActive)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tpollutionGrid.PollutionTick();\n\t\t\t}\n\t\t\tcatch (Exception ex7)\n\t\t\t{\n\t\t\t\tLog.Error(ex7.ToString());\n\t\t\t}\n\t\t}\n\t\ttry\n\t\t{\n\t\t\tdeferredSpawner.DeferredSpawnerTick();\n\t\t}\n\t\tcatch (Exception ex8)\n\t\t{\n\t\t\tLog.Error(ex8.ToString());\n\t\t}\n\t\ttry\n\t\t{\n\t\t\tlordManager.LordManagerTick();\n\t\t}\n\t\tcatch (Exception ex9)\n\t\t{\n\t\t\tLog.Error(ex9.ToString());\n\t\t}\n\t\ttry\n\t\t{\n\t\t\tpassingShipManager.PassingShipManagerTick();\n\t\t}\n\t\tcatch (Exception ex10)\n\t\t{\n\t\t\tLog.Error(ex10.ToString());\n\t\t}\n\t\ttry\n\t\t{\n\t\t\tdebugDrawer.DebugDrawerTick();\n\t\t}\n\t\tcatch (Exception ex11)\n\t\t{\n\t\t\tLog.Error(ex11.ToString());\n\t\t}\n\t\ttry\n\t\t{\n\t\t\tlordsStarter.VoluntarilyJoinableLordsStarterTick();\n\t\t}\n\t\tcatch (Exception ex12)\n\t\t{\n\t\t\tLog.Error(ex12.ToString());\n\t\t}\n\t\ttry\n\t\t{\n\t\t\tgameConditionManager.GameConditionManagerTick();\n\t\t}\n\t\tcatch (Exception ex13)\n\t\t{\n\t\t\tLog.Error(ex13.ToString());\n\t\t}\n\t\ttry\n\t\t{\n\t\t\tweatherManager.WeatherManagerTick();\n\t\t}\n\t\tcatch (Exception ex14)\n\t\t{\n\t\t\tLog.Error(ex14.ToString());\n\t\t}\n\t\ttry\n\t\t{\n\t\t\tresourceCounter.ResourceCounterTick();\n\t\t}\n\t\tcatch (Exception ex15)\n\t\t{\n\t\t\tLog.Error(ex15.ToString());\n\t\t}\n\t\ttry\n\t\t{\n\t\t\tweatherDecider.WeatherDeciderTick();\n\t\t}\n\t\tcatch (Exception ex16)\n\t\t{\n\t\t\tLog.Error(ex16.ToString());\n\t\t}\n\t\ttry\n\t\t{\n\t\t\tfireWatcher.FireWatcherTick();\n\t\t}\n\t\tcatch (Exception ex17)\n\t\t{\n\t\t\tLog.Error(ex17.ToString());\n\t\t}\n\t\tif (ModsConfig.OdysseyActive)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\twaterBodyTracker?.Tick();\n\t\t\t}\n\t\t\tcatch (Exception ex18)\n\t\t\t{\n\t\t\t\tLog.Error(ex18.ToString());\n\t\t\t}\n\t\t}\n\t\ttry\n\t\t{\n\t\t\tflecks.FleckManagerTick();\n\t\t}\n\t\tcatch (Exception ex19)\n\t\t{\n\t\t\tLog.Error(ex19.ToString());\n\t\t}\n\t\ttry\n\t\t{\n\t\t\teffecterMaintainer.EffecterMaintainerTick();\n\t\t}\n\t\tcatch (Exception ex20)\n\t\t{\n\t\t\tLog.Error(ex20.ToString());\n\t\t}\n\t\tMapComponentUtility.MapComponentTick(this);\n\t\ttry\n\t\t{\n\t\t\tforeach (TileMutatorDef mutator in TileInfo.Mutators)\n\t\t\t{\n\t\t\t\tmutator.Worker?.Tick(this);\n\t\t\t}\n\t\t}\n\t\tcatch (Exception ex21)\n\t\t{\n\t\t\tLog.Error(ex21.ToString());\n\t\t}\n\t}\n\n\tpublic void MapUpdate()\n\t{\n\t\tif (Disposed)\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tbool drawingMap = WorldRendererUtility.DrawingMap;\n\t\tskyManager.SkyManagerUpdate();\n\t\tpowerNetManager.UpdatePowerNetsAndConnections_First();\n\t\tregionGrid.UpdateClean();\n\t\tregionAndRoomUpdater.TryRebuildDirtyRegionsAndRooms();\n\t\tglowGrid.GlowGridUpdate_First();\n\t\tlordManager.LordManagerUpdate();\n\t\tpostTickVisuals.ProcessPostTickVisuals();\n\t\tif (drawingMap && Find.CurrentMap == this)\n\t\t{\n\t\t\tif (AlwaysRedrawShadows)\n\t\t\t{\n\t\t\t\tmapDrawer.WholeMapChanged(MapMeshFlagDefOf.Things);\n\t\t\t}\n\t\t\tGlobalRendererUtility.UpdateGlobalShadersParams();\n\t\t\tPlantFallColors.SetFallShaderGlobals(this);\n\t\t\twaterInfo.SetTextures();\n\t\t\tavoidGrid.DebugDrawOnMap();\n\t\t\tBreachingGridDebug.DebugDrawAllOnMap(this);\n\t\t\tmapDrawer.MapMeshDrawerUpdate_First();\n\t\t\tpowerNetGrid.DrawDebugPowerNetGrid();\n\t\t\tDoorsDebugDrawer.DrawDebug();\n\t\t\tmapDrawer.DrawMapMesh();\n\t\t\tdynamicDrawManager.DrawDynamicThings();\n\t\t\tgameConditionManager.GameConditionManagerDraw(this);\n\t\t\tMapEdgeClipDrawer.DrawClippers(this);\n\t\t\tdesignationManager.DrawDesignations();\n\t\t\toverlayDrawer.DrawAllOverlays();\n\t\t\ttemporaryThingDrawer.Draw();\n\t\t\tflecks.FleckManagerDraw();\n\t\t}\n\t\ttry\n\t\t{\n\t\t\tareaManager.AreaManagerUpdate();\n\t\t}\n\t\tcatch (Exception ex)\n\t\t{\n\t\t\tLog.Error(ex.ToString());\n\t\t}\n\t\tweatherManager.WeatherManagerUpdate();\n\t\ttry\n\t\t{\n\t\t\tflecks.FleckManagerUpdate();\n\t\t}\n\t\tcatch (Exception ex2)\n\t\t{\n\t\t\tLog.Error(ex2.ToString());\n\t\t}\n\t\tMapComponentUtility.MapComponentUpdate(this);\n\t}\n\n\tpublic T GetComponent() where T : MapComponent\n\t{\n\t\tfor (int i = 0; i < components.Count; i++)\n\t\t{\n\t\t\tif (components[i] is T result)\n\t\t\t{\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic MapComponent GetComponent(Type type)\n\t{\n\t\tfor (int i = 0; i < components.Count; i++)\n\t\t{\n\t\t\tif (type.IsInstanceOfType(components[i]))\n\t\t\t{\n\t\t\t\treturn components[i];\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic void MapOnGUI()\n\t{\n\t\tDevGUISketches();\n\t\tDevRoadPaths();\n\t\tpathFinder.OnGUI();\n\t}\n\n\tprivate static void DevRoadPaths()\n\t{\n\t\tif (!DebugViewSettings.drawRoadPaths)\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tfor (int i = 0; i < GenStep_Roads.paths.Count; i++)\n\t\t{\n\t\t\tforeach (IntVec3 item in GenStep_Roads.paths[i])\n\t\t\t{\n\t\t\t\tVector2 vector = item.ToVector3Shifted().MapToUIPosition();\n\t\t\t\tDevGUI.DrawRect(new Rect(vector.x, vector.y, 5f, 5f), (i % 2 == 0) ? Color.yellow : Color.blue);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void DevGUISketches()\n\t{\n\t\tif ((!DebugViewSettings.drawMapGraphs && !DebugViewSettings.drawMapRooms) || layoutStructureSketches.NullOrEmpty())\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tforeach (LayoutStructureSketch layoutStructureSketch in layoutStructureSketches)\n\t\t{\n\t\t\tDebugGUILayoutStructure(layoutStructureSketch);\n\t\t}\n\t}\n\n\tprivate void DebugGUILayoutStructure(LayoutStructureSketch layoutStructureSketch)\n\t{\n\t\tDevDrawOutline(layoutStructureSketch.structureLayout.container, Color.yellow);\n\t\tVector2 pos = (layoutStructureSketch.structureLayout.container.Min - IntVec3.South).ToVector3().MapToUIPosition();\n\t\tDevDrawLabel(layoutStructureSketch.layoutDef.defName, pos);\n\t\tif (DebugViewSettings.drawMapGraphs && layoutStructureSketch.structureLayout?.neighbours != null)\n\t\t{\n\t\t\tforeach (KeyValuePair> connection in layoutStructureSketch.structureLayout.neighbours.connections)\n\t\t\t{\n\t\t\t\tforeach (Vector2 item in connection.Value)\n\t\t\t\t{\n\t\t\t\t\tVector2 vector = layoutStructureSketch.center.ToVector2();\n\t\t\t\t\tVector2 vector2 = vector + connection.Key;\n\t\t\t\t\tVector2 vector3 = vector + item;\n\t\t\t\t\tVector2 start = new Vector3(vector2.x, 0f, vector2.y).MapToUIPosition();\n\t\t\t\t\tVector2 end = new Vector3(vector3.x, 0f, vector3.y).MapToUIPosition();\n\t\t\t\t\tDevGUI.DrawLine(start, end, Color.green, 2f);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!DebugViewSettings.drawMapRooms || layoutStructureSketch.structureLayout?.Rooms == null)\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tforeach (LayoutRoom room in layoutStructureSketch.structureLayout.Rooms)\n\t\t{\n\t\t\tstring name = \"NA\";\n\t\t\tif (!room.defs.NullOrEmpty())\n\t\t\t{\n\t\t\t\tname = room.defs.Select((LayoutRoomDef x) => x.defName).ToCommaList();\n\t\t\t}\n\t\t\tDevDrawLabel(name, room.rects[0].CenterVector3.MapToUIPosition());\n\t\t\tforeach (CellRect rect in room.rects)\n\t\t\t{\n\t\t\t\tDevDrawOutline(rect, Color.blue);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static void DevDrawLabel(string name, Vector2 pos)\n\t{\n\t\tfloat widthCached = name.GetWidthCached();\n\t\tDevGUI.Label(new Rect(pos.x - widthCached / 2f, pos.y, widthCached, 20f), name);\n\t}\n\n\tprivate static void DevDrawOutline(CellRect r, Color color)\n\t{\n\t\tIntVec3 min = r.Min;\n\t\tIntVec3 intVec = r.Max + new IntVec3(1, 0, 1);\n\t\tIntVec3 a = new IntVec3(min.x, 0, min.z);\n\t\tIntVec3 intVec2 = new IntVec3(intVec.x, 0, min.z);\n\t\tIntVec3 intVec3 = new IntVec3(min.x, 0, intVec.z);\n\t\tIntVec3 b = new IntVec3(intVec.x, 0, intVec.z);\n\t\tDevDrawLine(a, intVec2, color);\n\t\tDevDrawLine(a, intVec3, color);\n\t\tDevDrawLine(intVec3, b, color);\n\t\tDevDrawLine(intVec2, b, color);\n\t}\n\n\tprivate static void DevDrawLine(IntVec3 a, IntVec3 b, Color color)\n\t{\n\t\tVector2 start = a.ToVector3().MapToUIPosition();\n\t\tVector2 end = b.ToVector3().MapToUIPosition();\n\t\tDevGUI.DrawLine(start, end, color, 2f);\n\t}\n\n\tpublic string GetUniqueLoadID()\n\t{\n\t\treturn \"Map_\" + uniqueID;\n\t}\n\n\tpublic override string ToString()\n\t{\n\t\tstring text = \"Map-\" + uniqueID;\n\t\tif (IsPlayerHome)\n\t\t{\n\t\t\ttext += \"-PlayerHome\";\n\t\t}\n\t\treturn text;\n\t}\n\n\tpublic ThingOwner GetDirectlyHeldThings()\n\t{\n\t\treturn spawnedThings;\n\t}\n\n\tpublic void GetChildHolders(List outChildren)\n\t{\n\t\tThingOwnerUtility.AppendThingHoldersFromThings(outChildren, listerThings.ThingsInGroup(ThingRequestGroup.ThingHolder));\n\t\tList passingShips = passingShipManager.passingShips;\n\t\tfor (int i = 0; i < passingShips.Count; i++)\n\t\t{\n\t\t\tif (passingShips[i] is IThingHolder item)\n\t\t\t{\n\t\t\t\toutChildren.Add(item);\n\t\t\t}\n\t\t}\n\t\tfor (int j = 0; j < components.Count; j++)\n\t\t{\n\t\t\tif (components[j] is IThingHolder item2)\n\t\t\t{\n\t\t\t\toutChildren.Add(item2);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic void Dispose()\n\t{\n\t\tif (Disposed)\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tDisposed = true;\n\t\tforeach (MapComponent component in components)\n\t\t{\n\t\t\tif (component is IDisposable disposable)\n\t\t\t{\n\t\t\t\tdisposable.Dispose();\n\t\t\t}\n\t\t}\n\t\tif (regionAndRoomUpdater != null)\n\t\t{\n\t\t\tregionAndRoomUpdater.Enabled = false;\n\t\t}\n\t\tpathFinder?.Dispose();\n\t\tlordManager?.Dispose();\n\t\tfogGrid?.Dispose();\n\t\tsnowGrid?.Dispose();\n\t\tglowGrid?.Dispose();\n\t\tsandGrid?.Dispose();\n\t\tavoidGrid?.Dispose();\n\t\tlisterBuildings?.Dispose();\n\t\tlisterThings?.Clear();\n\t\tregionDirtyer?.SetAllDirty();\n\t\tregionGrid?.Dispose();\n\t\tpathing?.Dispose();\n\t\tmapDrawer?.Dispose();\n\t\tResources.UnloadUnusedAssets();\n\t\tMapGenerator.ClearDebugMode();\n\t}\n}\n\n", + "timestamp": "2025-08-25 11:41:03,392" } } \ No newline at end of file diff --git a/Source/ProjectDocumentation/ArmedPocketShuttle_DesignDocument.md b/Source/ProjectDocumentation/ArmedPocketShuttle_DesignDocument.md new file mode 100644 index 00000000..bd41a7f0 --- /dev/null +++ b/Source/ProjectDocumentation/ArmedPocketShuttle_DesignDocument.md @@ -0,0 +1,109 @@ +# 武装口袋穿梭机 (Armed Pocket Shuttle) - 设计文档 + +## 1. 项目概述 + +**目标**:重新设计并实现一个《边缘世界》(RimWorld) 的Mod,引入一种具备武装能力和内部“口袋空间”的特殊穿梭机。该穿梭机将解决现有实现中存在的顽固bug,并提供更稳定、更灵活的游戏体验。 + +**核心问题**:现有 `Building_ArmedShuttleWithPocket.cs` 的实现尝试过度模仿原版 `MapPortal` 的内部机制,导致代码复杂且难以调试和维护,最终陷入无法修复的bug。 + +**解决方案理念**: +* **放弃现有问题代码**:彻底废弃当前 `Building_ArmedShuttleWithPocket.cs` 中导致bug的复杂逻辑。 +* **回归原版基础**:以 `Building_PassengerShuttle` 为基类,利用其成熟的运输和组件系统。 +* **组合与委托**:通过组合而非直接继承或深度模仿的方式,将 `MapPortal` 的概念融入到新穿梭机中,实现口袋空间功能。 +* **职责分离**:明确区分穿梭机本体(武装、飞行、外部运输)和口袋空间(内部地图、内部传送)的职责。 + +## 2. 核心设计思路 + +### 2.1 穿梭机本体 (`Building_ArmedShuttleWithPocket` - 新版) + +* **继承**: `Building_ArmedShuttleWithPocket` 将继承 `Building_ArmedShuttle`,从而自然继承了武装能力和 `Building_PassengerShuttle` 的所有基础功能,包括 `CompTransporter` 和 `CompShuttle` 组件。 +* **唯一容器**: 穿梭机自身的 `CompTransporter` 将是唯一且权威的物品和人员容器。所有装载操作都将首先将物品和人员放入这个 `CompTransporter` 的 `innerContainer`。 +* **武装能力**:通过继承 `Building_ArmedShuttle`,穿梭机将保留其炮塔和攻击逻辑。 + +### 2.2 口袋空间实现 + +口袋空间将是一个独立生成的 `Map` 实例,通过 `PocketMapUtility` 进行管理。 + +* **内部地图 (`pocketMap`)**: `Building_ArmedShuttleWithPocket` 将持有一个 `Map` 类型的私有字段 `pocketMap`,代表内部空间。 +* **地图生成**: + * 口袋地图的生成将通过 `CreatePocketMap()` 方法触发,该方法会调用 `PocketMapUtility.GeneratePocketMap()`。 + * 地图的尺寸 (`pocketMapSize`)、生成器 (`mapGenerator`) 和出口定义 (`exitDef`) 将通过 `PocketMapProperties` (`DefModExtension`) 从XML配置中获取。 + * 生成后,会在口袋地图的特定位置放置一个 `Building_PocketMapExit` 实例,作为进出内部空间的唯一通道。 +* **人员/物品进出**: + * **从主地图进入口袋空间**: + * 人员:通过 `EnterPocketSpace(IEnumerable pawns)` 方法,将选定的小人从主地图传送到口袋地图的指定位置(例如出口附近)。 + * 物品:物品将首先通过穿梭机的 `CompTransporter` 装载。 + * **从口袋空间返回主地图**: 通过 `Building_PocketMapExit` 来实现,它将负责将口袋空间内的物品和人员传送到主地图的穿梭机位置。 +* **内部物品管理**: 口袋地图内的物品将直接作为地图上的 `Thing` 存在,而不是由穿梭机本体的 `CompTransporter` 直接管理。当穿梭机被销毁时,口袋地图内的所有物品和人员将被安全地转移回主地图的穿梭机位置。 + +### 2.3 装载机制 (`GetGizmos` 重构) + +`Building_ArmedShuttleWithPocket` 的 `GetGizmos()` 方法将被重写,以提供清晰且功能分离的装载选项: + +1. **“装载至货仓” (WULA.LoadIntoCargo)**: + * **功能**: 模拟原版穿梭机的装载行为。玩家选择人员和物品后,殖民者会将它们搬运到穿梭机,并存放到穿梭机自身的 `this.TransporterComp.innerContainer` 中。 + * **实现**: 调用 `this.TransporterComp` 提供的标准装载对话框和逻辑。 + +2. **“装载并传送入内” (WULA.LoadAndTeleport)**: + * **功能**: 玩家选择人员和物品,殖民者将其搬运到穿梭机并存放到 `this.TransporterComp.innerContainer`。**一旦装载完成**(即 `this.TransporterComp.leftToLoad` 为空),系统将自动触发一个内部传送过程,将 `this.TransporterComp.innerContainer` 中的所有物品和人员取出,并直接放置到口袋地图的指定位置。 + * **实现**: + * 通过一个布尔标志 (`doTeleportAfterLoading`) 来标记当前装载操作是否需要进行内部传送。 + * 在 `Tick()` 方法中监控 `this.TransporterComp.leftToLoad` 的状态。当其变为空且 `doTeleportAfterLoading` 为 `true` 时,调用 `TeleportContentsToPocketDimension()` 方法。 + * `TeleportContentsToPocketDimension()` 方法将遍历 `this.TransporterComp.innerContainer` 中的所有物品和人员,使用 `Thing.DeSpawn()` 和 `GenPlace.TryPlaceThing()` 将它们移动到 `pocketMap` 的指定位置。 + * **可见性**: 只有当口袋空间 (`pocketMap`) 已经生成 (`PocketMapExists == true`) 时,此按钮才会在UI中显示。 + +## 3. 关键组件/类 (`WulaFallenEmpire` 命名空间) + +* **`Building_ArmedShuttleWithPocket.cs` (主类)**: + * 继承 `Building_ArmedShuttle`。 + * 私有字段 `pocketMap` (类型 `Map`)。 + * 布尔标志 `pocketMapGenerated`。 + * `MapGeneratorDef mapGenerator` 和 `ThingDef exitDef` 用于XML配置。 + * `public Building_PocketMapExit exit` 引用口袋出口。 + * 布尔标志 `doTeleportAfterLoading` 和 `wasLoading` 用于控制传送逻辑。 + * 属性 `PocketMap`, `PocketMapExists`, `PocketMapGenerated`。 + * 重写 `ExposeData()` 进行持久化。 + * 重写 `DeSpawn()` 清理口袋地图。 + * 重写 `Tick()` 监控装载状态并触发传送。 + * 重写 `GetInspectString()` 提供状态信息。 + * 重写 `GetGizmos()` 提供自定义Gizmo。 + * 方法 `CreateLoadGizmo(bool teleport)` 生成装载按钮。 + * 方法 `TeleportContentsToPocketDimension()` 执行内部传送。 + * 方法 `EnterPocketSpace(IEnumerable pawns)` 将人员传送到口袋空间。 + * 方法 `SwitchToPocketSpace()` 切换视角。 + * 方法 `CreatePocketMap()` 生成口袋地图。 + * 方法 `GeneratePocketMapInt()` (受保护虚方法,可重写)。 + * 方法 `GetExtraGenSteps()` (受保护虚方法,可重写)。 + * 方法 `PlaceExitInPocketMap()` 在口袋地图中放置出口。 + * 方法 `TransferPawnToPocketSpace(Pawn pawn)` 将单个小人传送到口袋空间。 + * 方法 `TransferAllFromPocketToMainMap()` 在销毁时将口袋内容传回主地图。 + * 实现 `IThingHolder` 接口:`GetChildHolders()` (将 `this.TransporterComp` 添加为子容器) 和 `GetDirectlyHeldThings()` (返回一个空的 `ThingOwner` 实例)。 + * `UpdateExitPointTarget()` 更新出口目标位置。 + * 重写 `SpawnSetup()` 初始化组件和属性。 + +* **`Building_PocketMapExit.cs` (现有)**: + * 作为口袋空间的出口,负责将内部人员和物品传回主地图。 + +* **`PocketMapProperties.cs` (现有)**: + * `DefModExtension` 类,用于在XML中配置口袋地图的尺寸 (`pocketMapSize`)、地图生成器 (`mapGenerator`) 和出口建筑定义 (`exitDef`)。 + +## 4. XML 定义 (`1.6/1.6/Defs/ThingDefs_Buildings/Building_WULA_ArmedShuttleWithPocket.xml`) + +* `ThingDef` 定义 `WULA_ArmedShuttleWithPocket`。 +* `modExtensions` 中包含 `PocketMapProperties`: + ```xml + +
  • + WULA_PocketSpace_Small + WULA_PocketMapExit + (13, 13) +
  • +
    + ``` + +## 5. 预期结果 + +* 一个功能稳定、没有运行时崩溃的武装口袋穿梭机。 +* 清晰的UI和交互流程,允许玩家选择不同的装载模式。 +* 口袋空间能够正确生成、管理和销毁,内部物品和人员能够安全进出。 +* 代码结构更清晰,易于理解和未来的维护。 \ No newline at end of file diff --git a/Source/WulaFallenEmpire/3516260226.code-workspace b/Source/WulaFallenEmpire/3516260226.code-workspace index 28a1867a..3180f75b 100644 --- a/Source/WulaFallenEmpire/3516260226.code-workspace +++ b/Source/WulaFallenEmpire/3516260226.code-workspace @@ -3,6 +3,9 @@ { "name": "3516260226", "path": "../.." + }, + { + "path": "../../../../Data" } ], "settings": {} diff --git a/Source/WulaFallenEmpire/ThingDefOf_WULA.cs b/Source/WulaFallenEmpire/ThingDefOf_WULA.cs index ac9f6c1c..87611687 100644 --- a/Source/WulaFallenEmpire/ThingDefOf_WULA.cs +++ b/Source/WulaFallenEmpire/ThingDefOf_WULA.cs @@ -8,6 +8,7 @@ namespace WulaFallenEmpire { public static ThingDef WULA_MaintenancePod; public static ThingDef WULA_Charging_Station_Synth; + public static ThingDef WULA_PocketMapExit; static ThingDefOf_WULA() { diff --git a/Source/WulaFallenEmpire/WULA_Shuttle/Building_ArmedShuttleWithPocket.cs b/Source/WulaFallenEmpire/WULA_Shuttle/Building_ArmedShuttleWithPocket.cs index 4ee76348..44023df6 100644 --- a/Source/WulaFallenEmpire/WULA_Shuttle/Building_ArmedShuttleWithPocket.cs +++ b/Source/WulaFallenEmpire/WULA_Shuttle/Building_ArmedShuttleWithPocket.cs @@ -11,105 +11,191 @@ using Verse.Sound; namespace WulaFallenEmpire { + /// + /// 内置空间武装穿梭机 - 基于原版MapPortal机制的口袋空间实现 + /// 结合了武装防御能力和口袋空间技术的复合型载具 + /// [StaticConstructorOnStartup] public class Building_ArmedShuttleWithPocket : Building_ArmedShuttle, IThingHolder { - #region 静态图标定义 + #region 静态图标定义(使用原版MapPortal的图标) + /// 查看口袋地图图标 private static readonly Texture2D ViewPocketMapTex = ContentFinder.Get("UI/Commands/ViewCave"); - private static readonly Texture2D EnterPocketMapTex = ContentFinder.Get("UI/Commands/EnterCave"); - private static readonly Texture2D TeleportAndLoadTex = ContentFinder.Get("UI/Commands/LoadTransporter"); - + + /// 取消进入图标 + private static readonly Texture2D CancelEnterTex = ContentFinder.Get("UI/Designators/Cancel"); + + /// 默认进入图标 + private static readonly Texture2D DefaultEnterTex = ContentFinder.Get("UI/Commands/EnterCave"); + #endregion - #region 口袋空间字段 + /// 内部口袋地图实例 private Map pocketMap; + + /// 口袋地图是否已生成 private bool pocketMapGenerated; + + /// 内部空间大小 private IntVec2 pocketMapSize = new IntVec2(80, 80); + + /// 地图生成器定义 private MapGeneratorDef mapGenerator; + + /// 退出点定义 private ThingDef exitDef; + + /// 允许直接访问(无需骇入) + private bool allowDirectAccess = true; + + /// 口袋空间内的物品容器 + private ThingOwner innerContainer; + + /// 口袋地图退出点(模仿原版 MapPortal.exit) public Building_PocketMapExit exit; - private bool doTeleportAfterLoading = false; - private bool wasLoading = false; - + /// 是否已经进入过(模仿原版 MapPortal.beenEntered) + protected bool beenEntered; + + /// 待加载物品列表(模仿原版 MapPortal.leftToLoad) + public List leftToLoad; + + /// 是否已通知无法加载更多(模仿原版 MapPortal.notifiedCantLoadMore) + public bool notifiedCantLoadMore; + #endregion #region 属性 - // We use the public properties from the base class: this.ShuttleComp and this.TransporterComp + /// 获取内部口袋地图 public Map PocketMap => pocketMap; - public bool PocketMapExists + + /// 口袋地图是否已生成 + public bool PocketMapGenerated => pocketMapGenerated; + + /// 是否允许直接访问口袋空间 + public bool AllowDirectAccess => allowDirectAccess; + + /// 内部容器 + public ThingOwner InnerContainer => innerContainer; + + /// + /// 获取进入按钮的图标 + /// + protected virtual Texture2D EnterTex => DefaultEnterTex; + + /// + /// 获取进入按钮的文本 + /// + public virtual string EnterString => "WULA.PocketSpace.Enter".Translate(); + + /// + /// 获取取消进入按钮的文本 + /// + public virtual string CancelEnterString => "WULA.PocketSpace.CancelEnter".Translate(); + + /// + /// 获取进入中的文本 + /// + public virtual string EnteringString => "WULA.PocketSpace.Entering".Translate(); + + /// 加载是否正在进行(模仿原版 MapPortal.LoadInProgress) + public bool LoadInProgress { get { - if (pocketMap != null && pocketMap.Parent?.HasMap == false) + if (leftToLoad != null) { - pocketMap = null; + return leftToLoad.Any(); } - return pocketMap != null; + return false; } } - public bool PocketMapGenerated => pocketMapGenerated; + + /// 是否有Pawn可以加载任何东西(模仿原版 MapPortal.AnyPawnCanLoadAnythingNow) + public bool AnyPawnCanLoadAnythingNow + { + get + { + if (!LoadInProgress) + { + return false; + } + if (!Spawned) + { + return false; + } + // 简化版本,只检查基本条件 + return Map.mapPawns.AllPawnsSpawned.Any(p => p.IsColonist && p.CanReach(this, PathEndMode.Touch, Danger.Deadly)); + } + } + + #endregion + + #region 构造函数 + + public Building_ArmedShuttleWithPocket() + { + innerContainer = new ThingOwner(this, oneStackOnly: false); + } #endregion #region 基础重写方法 - + + + + public override void PostMake() + { + base.PostMake(); + if (innerContainer == null) + { + innerContainer = new ThingOwner(this, oneStackOnly: false); + } + } + public override void ExposeData() { base.ExposeData(); - - if (Scribe.mode == LoadSaveMode.Saving && pocketMap != null && pocketMap.Parent?.HasMap == false) - { - pocketMap = null; - } - Scribe_Deep.Look(ref pocketMap, "pocketMap"); Scribe_Values.Look(ref pocketMapGenerated, "pocketMapGenerated", false); Scribe_Values.Look(ref pocketMapSize, "pocketMapSize", new IntVec2(80, 80)); Scribe_Defs.Look(ref mapGenerator, "mapGenerator"); Scribe_Defs.Look(ref exitDef, "exitDef"); - Scribe_References.Look(ref exit, "exit"); + Scribe_Values.Look(ref allowDirectAccess, "allowDirectAccess", true); + Scribe_Deep.Look(ref innerContainer, "innerContainer", this); + + if (Scribe.mode == LoadSaveMode.PostLoadInit) + { + if (innerContainer == null) + { + innerContainer = new ThingOwner(this, oneStackOnly: false); + } + } } public override void DeSpawn(DestroyMode mode = DestroyMode.Vanish) { + // 清理口袋地图 if (pocketMap != null && pocketMapGenerated) { try { + // 将口袋空间中的物品和人员转移到主地图 TransferAllFromPocketToMainMap(); + + // 销毁口袋地图 PocketMapUtility.DestroyPocketMap(pocketMap); } catch (Exception ex) { - Log.Error($"[WULA] Error cleaning up pocket map on DeSpawn: {ex}"); + Log.Error($"[WULA] Error cleaning up pocket map: {ex}"); } } base.DeSpawn(mode); } - - protected override void Tick() - { - base.Tick(); - - if (!Spawned) return; - - bool isLoading = this.TransporterComp.leftToLoad != null && this.TransporterComp.leftToLoad.Any(x => x.CountToTransfer > 0); - if (wasLoading && !isLoading && doTeleportAfterLoading) - { - TeleportContentsToPocketDimension(); - doTeleportAfterLoading = false; - } - wasLoading = isLoading; - - if (this.IsHashIntervalTick(2500) && pocketMapGenerated && exit != null) - { - UpdateExitPointTarget(); - } - } public override string GetInspectString() { @@ -118,10 +204,19 @@ namespace WulaFallenEmpire if (pocketMapGenerated) { sb.AppendLine("WULA.PocketSpace.Status".Translate() + ": " + "WULA.PocketSpace.Ready".Translate()); - if (pocketMap.mapPawns.AllPawnsSpawned.Any(p => p.IsColonist)) + if (innerContainer.Count > 0) { - int pawnCount = pocketMap.mapPawns.AllPawnsSpawned.Count(p => p.IsColonist); - sb.AppendLine("WULA.PocketSpace.PawnCount".Translate(pawnCount)); + sb.AppendLine("WULA.PocketSpace.ItemCount".Translate(innerContainer.Count)); + } + + // 显示口袋空间中的人员数量 + if (pocketMap != null) + { + int pawnCount = pocketMap.mapPawns.AllPawnsSpawned.Where(p => p.IsColonist).Count(); + if (pawnCount > 0) + { + sb.AppendLine("WULA.PocketSpace.PawnCount".Translate(pawnCount)); + } } } else @@ -134,150 +229,101 @@ namespace WulaFallenEmpire #endregion - #region Gizmos - - public override IEnumerable GetGizmos() - { - foreach (var baseGizmo in base.GetGizmos()) - { - var command = baseGizmo as Command; - if (command != null && (command.defaultLabel == "CommandLoadTransporter".Translate() || command.defaultLabel == "CommandLoadTransporter".Translate() + "...")) - { - yield return CreateLoadGizmo(false); - if (PocketMapExists) // Only show teleport load if pocket map exists - { - yield return CreateLoadGizmo(true); - } - } - else - { - yield return baseGizmo; - } - } - - if (pocketMapGenerated && PocketMapExists) - { - yield return new Command_Action - { - defaultLabel = "WULA.ViewPocketSpace".Translate(), - defaultDesc = "WULA.ViewPocketSpaceDesc".Translate(), - icon = ViewPocketMapTex, - action = SwitchToPocketSpace - }; - } - else - { - yield return new Command_Action - { - defaultLabel = "WULA.CreatePocketSpace".Translate(), - defaultDesc = "WULA.CreatePocketSpaceDesc".Translate(), - icon = EnterPocketMapTex, - action = CreatePocketMap - }; - } - } - - private Command_Action CreateLoadGizmo(bool teleport) - { - var command = new Command_Action(); - var originalLoadGizmo = this.TransporterComp.CompGetGizmosExtra().FirstOrDefault(g => g is Command && (((Command)g).defaultLabel == "CommandLoadTransporter".Translate() || ((Command)g).defaultLabel == "CommandLoadTransporter".Translate() + "...")) as Command; - - if (teleport) - { - command.defaultLabel = "WULA.LoadAndTeleport".Translate(); - command.defaultDesc = "WULA.LoadAndTeleportDesc".Translate(); - command.icon = TeleportAndLoadTex; - } - else - { - command.defaultLabel = "WULA.LoadIntoCargo".Translate(); - command.defaultDesc = "WULA.LoadIntoCargoDesc".Translate(); - command.icon = originalLoadGizmo?.icon ?? ContentFinder.Get("UI/Commands/LoadTransporter"); - } - - if (originalLoadGizmo != null) - { - command.action = () => - { - doTeleportAfterLoading = teleport; - originalLoadGizmo.ProcessInput(null); - }; - - if (originalLoadGizmo.Disabled) - { - command.Disable(originalLoadGizmo.disabledReason); - } - } - else - { - command.Disable("Error: Could not find original load command.".Translate()); - } - - // This disabling logic is now redundant if we control visibility in GetGizmos, - // but keeping it here for safety against direct calls. - if (teleport && !PocketMapExists) - { - command.Disable("WULA.PocketSpace.NotGenerated".Translate()); - } - - return command; - } - - #endregion - #region 口袋空间核心方法 - - public void TeleportContentsToPocketDimension() + + /// + /// 检查是否可以进入口袋空间 + /// + public bool CanEnterPocketSpace() { - if (!PocketMapExists || this.TransporterComp == null) return; - - var thingsToTeleport = this.TransporterComp.innerContainer.ToList(); - if (!thingsToTeleport.Any()) return; + if (!allowDirectAccess) + { + return false; // 需要特殊权限 + } - Log.Message($"[WULA] Teleporting {thingsToTeleport.Count} things to pocket dimension."); - - IntVec3 spawnCenter = exit?.Position ?? pocketMap.Center; + if (!Spawned) + { + return false; + } - this.TransporterComp.innerContainer.TryDropAll(spawnCenter, pocketMap, ThingPlaceMode.Near); - - Messages.Message("WULA.TeleportComplete".Translate(thingsToTeleport.Count), this, MessageTypeDefOf.PositiveEvent); + return true; } - public void EnterPocketSpace(IEnumerable pawns) + /// + /// 进入口袋空间 - 基于原版PocketMapUtility实现 + /// + public void EnterPocketSpace(IEnumerable pawns = null) { - if (!PocketMapExists) - { - Messages.Message("WULA.PocketSpace.NotGenerated".Translate(), this, MessageTypeDefOf.RejectInput); - return; - } - - if (pawns == null || !pawns.Any()) + if (!CanEnterPocketSpace()) { + Messages.Message("WULA.PocketSpace.CannotEnter".Translate(), this, MessageTypeDefOf.RejectInput); return; } - foreach (Pawn pawn in pawns.ToList()) + // 创建或获取口袋地图 + if (pocketMap == null && !pocketMapGenerated) { - if (pawn != null && pawn.Spawned) + CreatePocketMap(); + } + + if (pocketMap == null) + { + Messages.Message("WULA.PocketSpace.CreationFailed".Translate(), this, MessageTypeDefOf.RejectInput); + return; + } + + // 传送玩家到口袋空间 + List pawnsToTransfer = new List(); + + if (pawns != null) + { + pawnsToTransfer.AddRange(pawns.Where(p => p != null && p.Spawned && p.IsColonist)); + } + else + { + // 如果没有指定人员,传送选中的殖民者 + pawnsToTransfer.AddRange(Find.Selector.SelectedPawns.Where(p => p.IsColonist)); + } + + if (pawnsToTransfer.Count == 0) + { + Messages.Message("WULA.PocketSpace.NoPawnsSelected".Translate(), this, MessageTypeDefOf.RejectInput); + return; + } + + // 执行传送 + int transferredCount = 0; + foreach (Pawn pawn in pawnsToTransfer) + { + if (TransferPawnToPocketSpace(pawn)) { - TransferPawnToPocketSpace(pawn); + transferredCount++; } } - - Messages.Message("WULA.PocketSpace.TransferSuccess".Translate(pawns.Count()), MessageTypeDefOf.PositiveEvent); - Current.Game.CurrentMap = pocketMap; + + if (transferredCount > 0) + { + Messages.Message("WULA.PocketSpace.TransferSuccess".Translate(transferredCount), MessageTypeDefOf.PositiveEvent); + + // 切换到口袋地图 + Current.Game.CurrentMap = pocketMap; + Find.CameraDriver.JumpToCurrentMapLoc(pocketMap.Center); + } } - + + /// + /// 切换到口袋空间视角 + /// public void SwitchToPocketSpace() { - if (!PocketMapExists) + if (pocketMap == null) { if (!pocketMapGenerated) { CreatePocketMap(); } - if (!PocketMapExists) + if (pocketMap == null) { Messages.Message("WULA.PocketSpace.CreationFailed".Translate(), this, MessageTypeDefOf.RejectInput); return; @@ -288,73 +334,87 @@ namespace WulaFallenEmpire Find.CameraDriver.JumpToCurrentMapLoc(pocketMap.Center); } + /// + /// 创建口袋地图 - 使用原版PocketMapUtility(模仿 MapPortal.GeneratePocketMap) + /// private void CreatePocketMap() { try { - PocketMapUtility.currentlyGeneratingPortal = null; + // 模仿原版 MapPortal.GeneratePocketMap 的实现 + PocketMapUtility.currentlyGeneratingPortal = null; // 我们不是 MapPortal,但可以设为 null pocketMap = GeneratePocketMapInt(); PocketMapUtility.currentlyGeneratingPortal = null; if (pocketMap != null) { pocketMapGenerated = true; - PlaceExitInPocketMap(); - Log.Message($"[WULA] Pocket map created successfully with size {pocketMap.Size}"); - Messages.Message("WULA.PocketSpace.CreationSuccess".Translate(), this, MessageTypeDefOf.PositiveEvent); + + // 在口袋地图中心放置退出点 + CreateExitPoint(); + + Log.Message($"[WULA] Successfully created pocket map of size {pocketMapSize} for armed shuttle"); } else { Log.Error("[WULA] Failed to create pocket map"); - Messages.Message("WULA.PocketSpace.CreationFailed".Translate(), this, MessageTypeDefOf.RejectInput); } } catch (Exception ex) { - Log.Error($"[WULA] Error creating pocket map: {ex}"); - PocketMapUtility.currentlyGeneratingPortal = null; + Log.Error($"[WULA] Exception creating pocket map: {ex}"); } } - - protected virtual Map GeneratePocketMapInt() - { - if (mapGenerator == null) - { - mapGenerator = DefDatabase.GetNamed("WULA_PocketSpace_Small", false) - ?? DefDatabase.GetNamed("AncientStockpile", false) - ?? MapGeneratorDefOf.Base_Player; - } - - IntVec3 mapSize = new IntVec3(pocketMapSize.x, 1, pocketMapSize.z); - return PocketMapUtility.GeneratePocketMap(mapSize, mapGenerator, GetExtraGenSteps(), this.Map); - } + /// + /// 生成口袋地图的内部实现(模仿 MapPortal.GeneratePocketMapInt) + /// + protected virtual Map GeneratePocketMapInt() + { + return PocketMapUtility.GeneratePocketMap(new IntVec3(pocketMapSize.x, 1, pocketMapSize.z), mapGenerator, GetExtraGenSteps(), this.Map); + } + + /// + /// 获取额外的生成步骤(模仿 MapPortal.GetExtraGenSteps) + /// protected virtual IEnumerable GetExtraGenSteps() { - return Enumerable.Empty(); + return System.Linq.Enumerable.Empty(); } - private void PlaceExitInPocketMap() + /// + /// 在口袋地图中创建退出点(模仿原版) + /// + private void CreateExitPoint() { if (pocketMap == null || exitDef == null) return; try { - IntVec3 exitPos = CellFinder.RandomClosewalkCellNear(pocketMap.Center, pocketMap, 5, + // 在地图中心找一个合适的位置 + IntVec3 exitPos = pocketMap.Center; + + // 寻找可建造的位置 + if (!exitPos.Standable(pocketMap) || exitPos.GetThingList(pocketMap).Any(t => t.def.category == ThingCategory.Building)) + { + exitPos = CellFinder.RandomClosewalkCellNear(pocketMap.Center, pocketMap, 5, p => p.Standable(pocketMap) && !p.GetThingList(pocketMap).Any(t => t.def.category == ThingCategory.Building)); + } if (exitPos.IsValid) { + // 创建退出点建筑 Thing exitBuilding = ThingMaker.MakeThing(exitDef); if (exitBuilding is Building_PocketMapExit exitPortal) { exitPortal.targetMap = this.Map; exitPortal.targetPos = this.Position; exitPortal.parentShuttle = this; - exit = exitPortal; + exit = exitPortal; // 设置 exit 引用,模仿原版 MapPortal } GenPlace.TryPlaceThing(exitBuilding, exitPos, pocketMap, ThingPlaceMode.Direct); + Log.Message($"[WULA] Created exit point at {exitPos} in pocket map"); } else { @@ -367,12 +427,16 @@ namespace WulaFallenEmpire } } + /// + /// 将单个Pawn传送到口袋空间 + /// private bool TransferPawnToPocketSpace(Pawn pawn) { if (pawn == null || !pawn.Spawned || pocketMap == null) return false; try { + // 找一个安全的位置 IntVec3 spawnPos = CellFinder.RandomClosewalkCellNear(pocketMap.Center, pocketMap, 10, p => p.Standable(pocketMap) && !p.GetThingList(pocketMap).Any(t => t is Pawn)); @@ -391,29 +455,53 @@ namespace WulaFallenEmpire return false; } + /// + /// 将所有物品和人员从口袋空间转移到主地图 + /// private void TransferAllFromPocketToMainMap() { if (pocketMap == null || !Spawned) return; try { - List thingsToTransfer = new List(pocketMap.listerThings.AllThings); - foreach (Thing thing in thingsToTransfer) + // 转移所有殖民者 + List pawnsToTransfer = pocketMap.mapPawns.AllPawnsSpawned + .Where(p => p.IsColonist).ToList(); + + foreach (Pawn pawn in pawnsToTransfer) { - if (thing.def.category != ThingCategory.Mote && thing.def.category != ThingCategory.Filth) + IntVec3 spawnPos = CellFinder.RandomClosewalkCellNear(this.Position, this.Map, 5, + p => p.Standable(this.Map) && !p.GetThingList(this.Map).Any(t => t is Pawn)); + + if (spawnPos.IsValid) { - if(this.TransporterComp.innerContainer.TryAddOrTransfer(thing)) - { - //Success - } - else - { - thing.Destroy(); - } + pawn.DeSpawn(); + GenPlace.TryPlaceThing(pawn, spawnPos, this.Map, ThingPlaceMode.Near); + } + } + + // 转移所有物品到内部容器 + List itemsToTransfer = pocketMap.listerThings.AllThings + .Where(t => t.def.category == ThingCategory.Item && t.def.EverHaulable).ToList(); + + foreach (Thing item in itemsToTransfer) + { + if (item.Spawned) + { + item.DeSpawn(); + if (!innerContainer.TryAdd(item)) + { + // 如果容器满了,丢到穿梭机附近 + IntVec3 dropPos = CellFinder.RandomClosewalkCellNear(this.Position, this.Map, 3); + if (dropPos.IsValid) + { + GenPlace.TryPlaceThing(item, dropPos, this.Map, ThingPlaceMode.Near); + } + } } } - Log.Message($"[WULA] Transferred {thingsToTransfer.Count} things from pocket space to shuttle cargo."); + Log.Message($"[WULA] Transferred {pawnsToTransfer.Count} pawns and {itemsToTransfer.Count} items from pocket space"); } catch (Exception ex) { @@ -422,64 +510,436 @@ namespace WulaFallenEmpire } #endregion - - #region IThingHolder - public void GetChildHolders(List outChildren) + #region Gizmo方法 + + public override IEnumerable GetGizmos() { - if (this.TransporterComp != null) + foreach (Gizmo gizmo in base.GetGizmos()) { - outChildren.Add(this.TransporterComp); + yield return gizmo; + } + + if (allowDirectAccess) + { + // 进入口袋空间按钮(模仿原版MapPortal) + Command_Action enterCommand = new Command_Action(); + enterCommand.action = delegate + { + // 使用自定义的殖民者选择对话框,模仿原版Dialog_EnterPortal的行为 + OpenPawnSelectionDialog(); + }; + enterCommand.icon = EnterTex; + enterCommand.defaultLabel = EnterString + "..."; + enterCommand.defaultDesc = "WULA.PocketSpace.EnterDesc".Translate(); + + // 检查是否可以进入(模仿原版MapPortal.IsEnterable) + string reason; + enterCommand.Disabled = !IsEnterable(out reason); + enterCommand.disabledReason = reason; + yield return enterCommand; + + // 查看口袋地图按钮(模仿原版MapPortal) + if (pocketMap != null) + { + yield return new Command_Action + { + defaultLabel = "WULA.PocketSpace.ViewMap".Translate(), + defaultDesc = "WULA.PocketSpace.ViewMapDesc".Translate(), + icon = ViewPocketMapTex, + action = delegate + { + // 模仿原版,跳转到口袋地图并选中退出点 + if (exit != null) + { + CameraJumper.TryJumpAndSelect(exit); + } + else + { + SwitchToPocketSpace(); + } + } + }; + } } } + + + #endregion + + #region IThingHolder接口实现 + public ThingOwner GetDirectlyHeldThings() { - return null; + return innerContainer; // 使用我们自己的容器而不是 PortalContainerProxy + } + + public void GetChildHolders(List outChildren) + { + ThingOwnerUtility.AppendThingHoldersFromThings(outChildren, GetDirectlyHeldThings()); } #endregion - - #region 穿梭机移动更新 - public void UpdateExitPointTarget() + #region MapPortal兼容接口(使Dialog_EnterPortal能正常工作) + + /// + /// 检查是否可以进入(模仿原版MapPortal.IsEnterable) + /// + public virtual bool IsEnterable(out string reason) { - if (exit != null && exit.Spawned && exit.targetPos != this.Position) + if (!allowDirectAccess) { - exit.targetPos = this.Position; + reason = "WULA.PocketSpace.AccessDenied".Translate(); + return false; + } + + if (!Spawned) + { + reason = "WULA.PocketSpace.NotSpawned".Translate(); + return false; + } + + reason = ""; + return true; + } + + /// + /// 获取目标地图(模仿原版MapPortal.GetOtherMap) + /// + public virtual Map GetOtherMap() + { + if (pocketMap == null) + { + CreatePocketMap(); + } + return pocketMap; + } + + /// + /// 获取目标位置(模仿原版MapPortal.GetDestinationLocation) + /// + public virtual IntVec3 GetDestinationLocation() + { + if (exit != null) + { + return exit.Position; + } + return pocketMap?.Center ?? IntVec3.Invalid; + } + + /// + /// 处理进入事件(模仿原版MapPortal.OnEntered) + /// + public virtual void OnEntered(Pawn pawn) + { + // 通知物品被添加(用于统计和管理) + Notify_ThingAdded(pawn); + + // 播放传送音效(如果存在) + if (Find.CurrentMap == this.Map) + { + // 可以在这里添加音效播放 + // def.portal?.traverseSound?.PlayOneShot(this); } } - #endregion - - #region 启动与生成 - - public override void SpawnSetup(Map map, bool respawningAfterLoad) + /// + /// 打开殖民者选择对话框(模仿原版Dialog_EnterPortal的功能) + /// + private void OpenPawnSelectionDialog() { - base.SpawnSetup(map, respawningAfterLoad); + // 获取所有可用的殖民者 + List availablePawns = Map.mapPawns.AllPawnsSpawned + .Where(p => p.IsColonist && !p.Downed && p.CanReach(this, PathEndMode.Touch, Danger.Deadly)) + .ToList(); - var props = def.GetModExtension(); - if (props != null) + if (availablePawns.Count == 0) { - pocketMapSize = props.pocketMapSize; - mapGenerator = props.mapGenerator; - exitDef = props.exitDef; + Messages.Message("WULA.PocketSpace.NoPawnsAvailable".Translate(), this, MessageTypeDefOf.RejectInput); + return; + } + + // 创建选项列表 + List options = new List(); + + // 添加单个殖民者选项 + foreach (Pawn pawn in availablePawns) + { + FloatMenuOption option = new FloatMenuOption( + $"{pawn.LabelShort}", + delegate + { + EnterPocketSpace(new List { pawn }); + } + ); + options.Add(option); + } + + // 添加“全部殖民者”选项 + if (availablePawns.Count > 1) + { + FloatMenuOption allOption = new FloatMenuOption( + "WULA.PocketSpace.AllColonists".Translate(availablePawns.Count), + delegate + { + EnterPocketSpace(availablePawns); + } + ); + options.Add(allOption); + } + + // 添加“只切换视角”选项 + FloatMenuOption viewOnlyOption = new FloatMenuOption( + "WULA.PocketSpace.ViewOnly".Translate(), + delegate + { + if (pocketMapGenerated) + { + SwitchToPocketSpace(); + } + else + { + CreatePocketMap(); + if (pocketMapGenerated) + { + SwitchToPocketSpace(); + } + } + } + ); + options.Add(viewOnlyOption); + + // 显示浮动菜单 + FloatMenu floatMenu = new FloatMenu(options); + Find.WindowStack.Add(floatMenu); + } + + #endregion + + #region 原版MapPortal的物品传送方法 + + /// + /// 通知有物品被添加(模仿原版 MapPortal.Notify_ThingAdded) + /// + public void Notify_ThingAdded(Thing t) + { + SubtractFromToLoadList(t, t.stackCount); + } + + /// + /// 添加到加载列表(模仿原版 MapPortal.AddToTheToLoadList) + /// + public void AddToTheToLoadList(TransferableOneWay t, int count) + { + if (!t.HasAnyThing || count <= 0) + { + return; + } + if (leftToLoad == null) + { + leftToLoad = new List(); + } + TransferableOneWay transferableOneWay = TransferableUtility.TransferableMatching(t.AnyThing, leftToLoad, TransferAsOneMode.PodsOrCaravanPacking); + if (transferableOneWay != null) + { + for (int i = 0; i < t.things.Count; i++) + { + if (!transferableOneWay.things.Contains(t.things[i])) + { + transferableOneWay.things.Add(t.things[i]); + } + } + if (transferableOneWay.CanAdjustBy(count).Accepted) + { + transferableOneWay.AdjustBy(count); + } } else { - pocketMapSize = new IntVec2(50, 50); - mapGenerator = MapGeneratorDefOf.Base_Player; - exitDef = ThingDef.Named("WULA_PocketMapExit"); + TransferableOneWay transferableOneWay2 = new TransferableOneWay(); + leftToLoad.Add(transferableOneWay2); + transferableOneWay2.things.AddRange(t.things); + transferableOneWay2.AdjustTo(count); + } + } + + /// + /// 从加载列表中减去(模仿原版 MapPortal.SubtractFromToLoadList) + /// + public int SubtractFromToLoadList(Thing t, int count) + { + if (leftToLoad == null) + { + return 0; + } + TransferableOneWay transferableOneWay = TransferableUtility.TransferableMatchingDesperate(t, leftToLoad, TransferAsOneMode.PodsOrCaravanPacking); + if (transferableOneWay == null) + { + return 0; + } + if (transferableOneWay.CountToTransfer <= 0) + { + return 0; + } + int num = Mathf.Min(count, transferableOneWay.CountToTransfer); + transferableOneWay.AdjustBy(-num); + transferableOneWay.things.Remove(t); + if (transferableOneWay.CountToTransfer <= 0) + { + leftToLoad.Remove(transferableOneWay); + } + return num; + } + + /// + /// 取消加载(模仿原版 MapPortal.CancelLoad) + /// + public void CancelLoad() + { + // 简化版本,只清理列表 + if (leftToLoad != null) + { + leftToLoad.Clear(); + } + } + + #endregion + + #region 穿梭机状态变化处理 + + /// + /// 更新口袋空间中退出点的目标位置(处理穿梭机位置变化) + /// + public void UpdateExitPointTarget() + { + if (pocketMap == null || exit == null) return; + + try + { + // 如果退出点是我们的Building_PocketMapExit类型,更新其目标位置 + if (exit is Building_PocketMapExit pocketExit) + { + // 更新目标地图和位置 + if (this.Spawned) + { + // 穿梭机在地图上,更新目标位置 + if (pocketExit.targetMap != this.Map || pocketExit.targetPos != this.Position) + { + pocketExit.targetMap = this.Map; + pocketExit.targetPos = this.Position; + pocketExit.parentShuttle = this; + Log.Message($"[WULA] Updated pocket map exit target to shuttle location: {this.Map?.uniqueID} at {this.Position}"); + } + } + else + { + // 穿梭机不在地图上(可能在飞行中),记录警告但保持原有目标 + Log.Warning($"[WULA] Shuttle not spawned, pocket map exit target may be outdated. Current target: {pocketExit.targetMap?.uniqueID} at {pocketExit.targetPos}"); + } + } + } + catch (Exception ex) + { + Log.Error($"[WULA] Error updating exit point target: {ex}"); + } + } + + /// + /// 重写Tick方法,定期检查穿梭机状态变化 + /// + protected override void Tick() + { + base.Tick(); + + // 每隔一段时间检查退出点目标是否需要更新(处理穿梭机移动的情况) + if (this.IsHashIntervalTick(2500) && pocketMapGenerated && exit != null) + { + UpdateExitPointTarget(); + } + } + + /// + /// 重写 SpawnSetup,确保位置变化时更新退出点 + /// + public override void SpawnSetup(Map map, bool respawningAfterLoad) + { + // 保存旧位置信息 + Map oldMap = this.Map; + IntVec3 oldPos = this.Position; + + base.SpawnSetup(map, respawningAfterLoad); + + if (innerContainer == null) + { + innerContainer = new ThingOwner(this, oneStackOnly: false); + } + + // 简化实现,直接使用 innerContainer 而不是 PortalContainerProxy + // 因为 PortalContainerProxy 需要 MapPortal 类型,但我们不是继承自 MapPortal + + // 更新退出点目标(处理穿梭机重新部署的情况) + UpdateExitPointTarget(); + + // 从 ThingDef 中读取 portal 配置 + if (def.HasModExtension()) + { + var portalProps = def.GetModExtension(); + if (portalProps.pocketMapGenerator != null) + { + mapGenerator = portalProps.pocketMapGenerator; + } + if (portalProps.exitDef != null) + { + exitDef = portalProps.exitDef; + } + if (portalProps.pocketMapSize != IntVec2.Zero) + { + pocketMapSize = portalProps.pocketMapSize; + } + allowDirectAccess = portalProps.allowDirectAccess; + } + + // 初始化地图生成器和退出点定义(如果 XML 中没有配置) + if (mapGenerator == null) + { + mapGenerator = DefDatabase.GetNamed("AncientStockpile", false) + ?? DefDatabase.GetNamed("Base_Player", false) + ?? MapGeneratorDefOf.Base_Player; + } + + if (exitDef == null) + { + exitDef = DefDatabase.GetNamed("WULA_PocketMapExit", false) + ?? ThingDefOf.Door; + } + + // 如果位置发生了变化,记录日志 + if (oldMap != null && (oldMap != map || oldPos != this.Position)) + { + Log.Message($"[WULA] Shuttle moved from {oldMap?.uniqueID}:{oldPos} to {map?.uniqueID}:{this.Position}, updating pocket map exit target"); } } #endregion } + /// + /// 口袋空间属性配置类 + /// public class PocketMapProperties : DefModExtension { - public IntVec2 pocketMapSize = new IntVec2(50, 50); - public MapGeneratorDef mapGenerator; + /// 口袋地图生成器 + public MapGeneratorDef pocketMapGenerator; + + /// 退出点定义 public ThingDef exitDef; + + /// 口袋地图大小 + public IntVec2 pocketMapSize = new IntVec2(13, 13); + + /// 允许直接访问 + public bool allowDirectAccess = true; } } \ No newline at end of file diff --git a/Source/WulaFallenEmpire/WULA_Shuttle/Building_PocketMapExit.cs b/Source/WulaFallenEmpire/WULA_Shuttle/Building_PocketMapExit.cs index 0a8235fd..d7113ba0 100644 --- a/Source/WulaFallenEmpire/WULA_Shuttle/Building_PocketMapExit.cs +++ b/Source/WulaFallenEmpire/WULA_Shuttle/Building_PocketMapExit.cs @@ -112,6 +112,106 @@ namespace WulaFallenEmpire /// protected override Texture2D EnterTex => ContentFinder.Get("UI/Commands/ViewCave"); + /// + /// 重写GetGizmos方法,添加穿梭机装载相关按钮 + /// + public override IEnumerable GetGizmos() + { + // 获取基类的按钮(退出空间和查看地图按钮) + foreach (Gizmo gizmo in base.GetGizmos()) + { + yield return gizmo; + } + + // 如果有父穿梭机,添加穿梭机相关的装载按钮 + if (parentShuttle != null) + { + // 查看主地图按钮 + yield return new Command_Action + { + defaultLabel = "WULA.PocketSpace.ViewMainMap".Translate(), + defaultDesc = "WULA.PocketSpace.ViewMainMapDesc".Translate(), + icon = ContentFinder.Get("UI/Commands/ViewWorld"), + action = delegate + { + if (targetMap != null) + { + Current.Game.CurrentMap = targetMap; + if (parentShuttle != null && parentShuttle.Spawned) + { + Find.CameraDriver.JumpToCurrentMapLoc(parentShuttle.Position); + Find.Selector.Select(parentShuttle); + } + else + { + Find.CameraDriver.JumpToCurrentMapLoc(targetPos); + } + } + } + }; + + // 穿梭机装载管理按钮 + if (parentShuttle.Spawned) + { + // 获取穿梭机的CompTransporter组件 + CompTransporter transporter = parentShuttle.GetComp(); + if (transporter != null) + { + // 添加装载按钮(模仿原版CompTransporter的功能) + yield return new Command_Action + { + defaultLabel = "WULA.PocketSpace.LoadShuttle".Translate(), + defaultDesc = "WULA.PocketSpace.LoadShuttleDesc".Translate(), + icon = ContentFinder.Get("UI/Commands/LoadTransporter"), + action = delegate + { + OpenShuttleLoadingDialog(transporter); + } + }; + + // 如果正在装载,添加取消装载按钮 + if (transporter.LoadingInProgress) + { + yield return new Command_Action + { + defaultLabel = "WULA.PocketSpace.CancelLoading".Translate(), + defaultDesc = "WULA.PocketSpace.CancelLoadingDesc".Translate(), + icon = ContentFinder.Get("UI/Designators/Cancel"), + action = delegate + { + transporter.CancelLoad(); + } + }; + } + } + + // 添加穿梭机发射按钮(如果正在装载且可以发射) + CompLaunchable launchable = parentShuttle.GetComp(); + if (launchable != null && transporter != null && !transporter.LoadingInProgress) + { + foreach (Gizmo gizmo in launchable.CompGetGizmosExtra()) + { + yield return gizmo; + } + } + } + + // 穿梭机状态信息按钮 + yield return new Command_Action + { + defaultLabel = "WULA.PocketSpace.ShuttleStatus".Translate(), + defaultDesc = "WULA.PocketSpace.ShuttleStatusDesc".Translate(), + icon = ContentFinder.Get("UI/Commands/InfoCard"), + action = delegate + { + ShowShuttleStatusInfo(); + } + }; + } + } + + + /// /// 单个人员退出口袋空间(简化版本,利用MapPortal功能) /// @@ -142,5 +242,78 @@ namespace WulaFallenEmpire Log.Error($"[WULA] Error exiting pocket space: {ex}"); } } + + /// + /// 打开穿梭机装载对话框 + /// + private void OpenShuttleLoadingDialog(CompTransporter transporter) + { + if (transporter == null) return; + + try + { + // 使用原版的Dialog_LoadTransporters打开装载对话框 + Find.WindowStack.Add(new Dialog_LoadTransporters(parentShuttle.Map, new List { transporter })); + } + catch (System.Exception ex) + { + Log.Error($"[WULA] Error opening shuttle loading dialog: {ex}"); + Messages.Message("WULA.PocketSpace.LoadingDialogError".Translate(), MessageTypeDefOf.RejectInput); + } + } + + /// + /// 显示穿梭机状态信息 + /// + private void ShowShuttleStatusInfo() + { + if (parentShuttle == null) return; + + StringBuilder statusText = new StringBuilder(); + + // 基本信息 + statusText.AppendLine("WULA.PocketSpace.ShuttleInfo".Translate()); + statusText.AppendLine($"• 状态: {(parentShuttle.Spawned ? "已部署" : "飞行中")}"); + + if (parentShuttle.Spawned) + { + statusText.AppendLine($"• 位置: {targetMap?.Parent?.Label ?? "未知"} ({targetPos.x}, {targetPos.z})"); + + // 燃料信息 + CompRefuelable fuel = parentShuttle.GetComp(); + if (fuel != null) + { + statusText.AppendLine($"• 燃料: {fuel.Fuel:F0}/{fuel.Props.fuelCapacity:F0}"); + } + + // 装载信息 + CompTransporter transporter = parentShuttle.GetComp(); + if (transporter != null) + { + statusText.AppendLine($"• 载重: {transporter.MassUsage:F1}/{transporter.Props.massCapacity:F1}"); + if (transporter.LoadingInProgress) + { + statusText.AppendLine("• 装载状态: 正在装载..."); + } + } + + // 口袋空间信息 + if (parentShuttle.pocketMapGenerated) + { + statusText.AppendLine($"• 内部空间: 已初始化"); + if (parentShuttle.innerContainer.Count > 0) + { + statusText.AppendLine($"• 内部储存: {parentShuttle.innerContainer.Count} 件物品"); + } + } + } + else + { + statusText.AppendLine("• 穿梭机正在飞行中,无法获取详细信息"); + } + + // 显示信息对话框 + Find.WindowStack.Add(new Dialog_MessageBox(statusText.ToString(), "WULA.PocketSpace.ShuttleStatus".Translate())); + } } } \ No newline at end of file diff --git a/Source/WulaFallenEmpire/WULA_Shuttle/PocketMapProperties.cs b/Source/WulaFallenEmpire/WULA_Shuttle/PocketMapProperties.cs new file mode 100644 index 00000000..d132951e --- /dev/null +++ b/Source/WulaFallenEmpire/WULA_Shuttle/PocketMapProperties.cs @@ -0,0 +1,12 @@ +using RimWorld; +using Verse; + +namespace WulaFallenEmpire +{ + public class PocketMapProperties : DefModExtension + { + public IntVec2 pocketMapSize = new IntVec2(13, 13); + public MapGeneratorDef mapGenerator; + public ThingDef exitDef; + } +} \ No newline at end of file