protected Dictionary <T, string> GetValueFromStringArray(string x) { var saida = new Dictionary <T, string>(); string value; if (x.Contains(KvSepLvl1)) { string[] array = x.Split(KvSepLvl1.ToCharArray()); value = array[1]; } else { value = x; } foreach (string item in value.Split(ItSepLvl2.ToCharArray())) { var kv = item.Split(KvSepLvl2.ToCharArray()); if (kv.Length != 2) { continue; } try { T subkey = (T)Enum.Parse(typeof(T), kv[0]); saida[subkey] = kv[1]; } catch (Exception e) { KlyteUtils.doLog("ERRO AO OBTER VALOR STR ARR: {0}", e.StackTrace); continue; } } return(saida); }
public override void AwakeBody() { KlyteUtils.doLog("Loading NonKCModsOverrides"); #region Suburb Styler foreach (var typeName in supportedClasses) { var type = Type.GetType(typeName); try { if (type != null) { KlyteUtils.SetPrivateStaticField("GetMainReference", type, new Func <UIComponent>(() => KlyteModsPanel.instance.mainPanel)); KlyteUtils.SetPrivateStaticField("ClosePanel", type, new OnButtonClicked(() => KlyteCommonsMod.CloseKCPanel())); KlyteUtils.SetPrivateStaticField("OpenPanel", type, new OnButtonClicked(() => KlyteModsPanel.instance.OpenAt((ModTab)Enum.Parse(typeof(ModTab), KlyteUtils.RunPrivateStaticMethod <string>(type, "GetEnumName"))))); MethodInfo createPanelOverride = typeof(NonKCModsOverrides).GetMethod("CreateMainPanelOverride", allFlags); AddRedirect(type.GetMethod("CreateMainPanel", allFlags), createPanelOverride); } } catch (Exception e) { KlyteUtils.doErrorLog($"{e.GetType()} detouring {type}: {e.Message}\n{e.StackTrace}"); } } #endregion }
protected List <Dictionary <T, string> > LoadConfigList(K idx, bool global = false) { var result = new List <Dictionary <T, string> >(); KlyteUtils.doLog("{0} load()", idx); string[] itemListLvl1; if (global && !AllowGlobal) { throw new Exception("CONFIGURAÇÂO NÃO GLOBAL TENTOU SER CARREGADA COMO GLOBAL: " + typeof(U)); } if (global) { itemListLvl1 = Singleton <I> .instance.getConfig2().getString(idx).Split(ItSepLvl1.ToCharArray()); } else { itemListLvl1 = Singleton <I> .instance.currentLoadedCityConfig.getString(idx).Split(ItSepLvl1.ToCharArray()); } if (itemListLvl1.Length > 0) { KlyteUtils.doLog("{0} load(): file.Length > 0", idx); foreach (string s in itemListLvl1) { var value = GetValueFromStringArray(s); result.Add(value); } KlyteUtils.doLog("{0} load(): dic done", idx); } return(result); }
public override void AwakeBody() { KlyteUtils.doLog("Loading Instance Manager Overrides"); #region Release Line Hooks MethodInfo posRename = typeof(InstanceManagerOverrides).GetMethod("OnInstanceRenamed", allFlags); AddRedirect(typeof(InstanceManager).GetMethod("SetName", allFlags), null, posRename); #endregion }
public override void AwakeBody() { KlyteUtils.doLog("Loading Transport Manager Overrides"); #region Release Line Hooks MethodInfo posUpdate = typeof(TransportManagerOverrides).GetMethod("RunOnLineUpdated", allFlags); AddRedirect(typeof(TransportManager).GetMethod("UpdateLine", allFlags), null, posUpdate); #endregion }
public override void AwakeBody() { KlyteUtils.doLog("Loading District Manager Overrides"); #region Release Line Hooks MethodInfo posChange = typeof(DistrictManagerOverrides).GetMethod("OnDistrictChanged", allFlags); AddRedirect(typeof(DistrictManager).GetMethod("SetDistrictName", allFlags), null, posChange); AddRedirect(typeof(DistrictManager).GetMethod("AreaModified", allFlags), null, posChange); #endregion }
public override void AwakeBody() { KlyteUtils.doLog("Loading Building Manager Overrides"); #region Net Manager Hooks MethodInfo OnBuildingCreated = GetType().GetMethod("OnBuildingCreated", allFlags); MethodInfo OnBuildingReleased = GetType().GetMethod("OnBuildingReleased", allFlags); AddRedirect(typeof(BuildingManager).GetMethod("CreateBuilding", allFlags), null, OnBuildingCreated); AddRedirect(typeof(BuildingManager).GetMethod("ReleaseBuilding", allFlags), null, OnBuildingReleased); #endregion }
public override void AwakeBody() { KlyteUtils.doLog("Loading Net Manager Overrides"); #region Net Manager Hooks MethodInfo OnNodeChanged = GetType().GetMethod("OnNodeChanged", allFlags); MethodInfo OnSegmentCreated = GetType().GetMethod("OnSegmentCreated", allFlags); MethodInfo OnSegmentReleased = GetType().GetMethod("OnSegmentReleased", allFlags); MethodInfo OnSegmentNameChanged = GetType().GetMethod("OnSegmentNameChanged", allFlags); AddRedirect(typeof(NetManager).GetMethod("CreateNode", allFlags), null, OnNodeChanged); AddRedirect(typeof(NetManager).GetMethod("ReleaseNode", allFlags), null, OnNodeChanged); AddRedirect(typeof(NetManager).GetMethod("CreateSegment", allFlags), null, OnSegmentCreated); AddRedirect(typeof(NetManager).GetMethod("ReleaseSegment", allFlags), OnSegmentReleased); AddRedirect(typeof(NetManager).GetMethod("SetSegmentNameImpl", allFlags), null, OnSegmentNameChanged); #endregion }
protected void SaveConfig(Dictionary <T, string> target, K idx, bool global = false) { I loadedConfig; if (global && !AllowGlobal) { throw new Exception("CONFIGURAÇÂO NÃO GLOBAL TENTOU SER SALVA COMO GLOBAL: " + typeof(U)); } if (global) { loadedConfig = Singleton <I> .instance.getConfig2(); } else { loadedConfig = Singleton <I> .instance.currentLoadedCityConfig; } var value = RecursiveEncode(target, 1); KlyteUtils.doLog("saveConfig ({0}) NEW VALUE: {1}", idx, value); loadedConfig.setString(idx, value); }
protected Dictionary <T, string> LoadConfigSingle(K idx, bool global = false) { var result = new Dictionary <T, string>(); KlyteUtils.doLog("{0} load()", idx); string itemList; if (global && !AllowGlobal) { throw new Exception("CONFIGURAÇÂO NÃO GLOBAL TENTOU SER CARREGADA COMO GLOBAL: " + typeof(U)); } if (global) { itemList = Singleton <I> .instance.getConfig2().getString(idx); } else { itemList = Singleton <I> .instance.currentLoadedCityConfig.getString(idx); } return(GetValueFromStringArray(itemList)); }
private void loadLocaleIntern(string localeId, bool setLocale, string prefix, string packagePrefix) { KlyteUtils.doLog($"{GetType()} localeId: {localeId}"); string load = Singleton <R> .instance.loadResourceString("UI.i18n." + localeId + ".properties"); if (load == null) { KlyteUtils.doLog("File UI.i18n." + localeId + ".properties not found. Probably this translation doesn't exists for this mod."); load = ""; } var locale = KlyteUtils.GetPrivateField <Locale>(LocaleManager.instance, "m_Locale"); Locale.Key k; foreach (var myString in load.Split(lineSeparator.ToCharArray(), StringSplitOptions.RemoveEmptyEntries)) { if (myString.StartsWith(commentChar)) { continue; } if (!myString.Contains(kvSeparator)) { continue; } bool noPrefix = myString.StartsWith(ignorePrefixChar); var array = myString.Split(kvSeparator.ToCharArray(), 2); string value = array[1]; int idx = 0; string localeKey = null; if (array[0].Contains(idxSeparator)) { var arrayIdx = array[0].Split(idxSeparator.ToCharArray()); if (!int.TryParse(arrayIdx[1], out idx)) { continue; } array[0] = arrayIdx[0]; } if (array[0].Contains(localeKeySeparator)) { array = array[0].Split(localeKeySeparator.ToCharArray()); localeKey = array[1]; } k = new Locale.Key() { m_Identifier = noPrefix ? array[0].Substring(1) : prefix + array[0], m_Key = localeKey, m_Index = idx }; if (!locale.Exists(k)) { locale.AddLocalizedString(k, value.Replace("\\n", "\n")); } } if (localeId != "en") { loadLocaleIntern("en", false, prefix, packagePrefix); } if (setLocale) { language = localeId; } }
public override void doLog(string fmt, params object[] args) { KlyteUtils.doLog(fmt, args); }
public override void doLog(string text, params object[] param) { KlyteUtils.doLog(text, param); }