コード例 #1
0
		public static void CanDoNext_Prefix() {
			if (PokemonConfig.startWith) {
				DefDatabase<PawnKindDef>.Clear ();
				var hashSet = new HashSet<string>();
				foreach (ModContentPack modContentPack in (from m in LoadedModManager.RunningMods orderby m.OverwritePriority select m).ThenBy((ModContentPack x) => LoadedModManager.RunningModsListForReading.IndexOf(x))){
					
					hashSet.Clear();
					foreach (PawnKindDef t in GenDefDatabase.DefsToGoInDatabase<PawnKindDef>(modContentPack)){

						if (!modContentPack.IsCoreMod) {

							if (hashSet.Contains (t.defName)) {
								
								Log.Error (string.Concat (new object[] {
									"Mod ",
									modContentPack,
									" has multiple ",
									typeof(PawnKindDef),
									"s named ",
									t.defName,
									". Skipping."
								}));

							} else {
								
								if (t.defName == "UnnamedDef") {
									
									var text = "Unnamed" + nameof(PawnKindDef) + Rand.Range (1, 100000).ToString () + "A";
									Log.Error (string.Concat(new [] {
										nameof(PawnKindDef),
										" in ",
										modContentPack.ToString (),
										" with label ",
										t.label,
										" lacks a defName. Giving name ",
										text
									}));
									t.defName = text;
								}

								/*PawnKindDef def;
								if (DefDatabase<PawnKindDef>.defsByName.TryGetValue(t.defName, out def)){
										DefDatabase<PawnKindDef>.Remove(def);
								}*/

								DefDatabase<PawnKindDef>.Add (t);
							}
						}
					}
				}
			} else {
				DefDatabase<PawnKindDef>.Clear ();
				var hashSet = new HashSet<string>();
				foreach (ModContentPack modContentPack in (from m in LoadedModManager.RunningMods orderby m.OverwritePriority select m).ThenBy((ModContentPack x) => LoadedModManager.RunningModsListForReading.IndexOf(x))){

				    hashSet.Clear();
				    foreach (PawnKindDef t in GenDefDatabase.DefsToGoInDatabase<PawnKindDef>(modContentPack)){

						if (hashSet.Contains (t.defName)) {

							Log.Error (string.Concat (new object[] {
								"Mod ",
								modContentPack,
								" has multiple ",
								typeof(PawnKindDef),
								"s named ",
								t.defName,
								". Skipping."
							}));

						} else {

							if (t.defName == "UnnamedDef") {

								var text = "Unnamed" + typeof(PawnKindDef).Name + Rand.Range (1, 100000).ToString () + "A";
								Log.Error (string.Concat (new string[] {
									typeof(PawnKindDef).Name,
									" in ",
									modContentPack.ToString (),
									" with label ",
									t.label,
									" lacks a defName. Giving name ",
									text
								}));
								t.defName = text;
							}

							/*PawnKindDef def;
							if (DefDatabase<PawnKindDef>.defsByName.TryGetValue(t.defName, out def)){
									DefDatabase<PawnKindDef>.Remove(def);
							}*/

							DefDatabase<PawnKindDef>.Add (t);
						}
					}
				}
			}
		}