private static void LoadAIC(string fileName) { if (fileName.EndsWith(".aic")) { AICChange change = new AICChange(Path.GetFileName(fileName), true) { new DefaultHeader(String.Empty, true, true) { } }; changes.Add(change); return; } JavaScriptSerializer serializer = new JavaScriptSerializer(); serializer.RegisterConverters(new ReadOnlyCollection <JavaScriptConverter>(new List <JavaScriptConverter>() { new AISerializer(errorMessages, errorHints) })); StreamReader reader = new StreamReader(new FileStream(fileName, FileMode.Open), Encoding.UTF8); string text = reader.ReadToEnd(); reader.Close(); string aicName = Path.GetFileNameWithoutExtension(fileName); try { if (availableSelection.ContainsKey(aicName)) { throw new Exception("AIC with the same filename has already been loaded"); } AICollection ch = serializer.Deserialize <AICollection>(text);; AICChange change = new AICChange(aicName, true) { new DefaultHeader("aic_" + aicName, true) { } }; change.collection = ch; change.characters = ch.GetCharacters(); change.customCharacterNames = ch.GetCustomCharacterNames(); availableSelection[change.TitleIdent] = ch.GetCharacters(); changes.Add(change); } catch (AICSerializationException e) { File.AppendAllText("AICParsing.log", e.ToErrorString(fileName)); throw e; } catch (Exception e) { File.AppendAllText("AICParsing.log", "\n" + aicName + ": " + e.Message + "\n"); throw e; } }
/// <summary> /// Retrieve localized description based on selected language preference. /// If a description is not found then return first non-empty description. /// </summary> /// <param name="ch"></param> /// <returns></returns> private static string GetLocalizedDescription(AICollection ch) { string currentLang = Localization.Translations.ToArray()[Localization.LanguageIndex].Ident; string descr = String.Empty; try { descr = ch.AICShortDescription[currentLang]; if (descr == String.Empty) { foreach (var lang in Localization.Translations) { try { descr = ch.AICShortDescription[lang.Ident]; if (descr != String.Empty) { break; } } catch (Exception) { continue; } } } } catch (Exception) { foreach (var lang in Localization.Translations) { try { descr = ch.AICShortDescription[lang.Ident]; if (descr != String.Empty) { break; } } catch (Exception) { continue; } } } return(descr); }
void Awake() { instance = this; allSpawns = new List <GameObject>(AISpawner.MAX_SPAWNS); }