public static void LoadTemplateAsset(GameObject gameObject, Package.Asset asset) { if (gameObject.GetComponent <MarkingInfo>() is not MarkingInfo markingInfo) { return; } Mod.Logger.Debug($"Start load template asset \"{asset.fullName}\" from {asset.package.packagePath}"); try { var templateConfig = XmlExtension.Parse(markingInfo.data); if (TemplateAsset.FromPackage(templateConfig, asset, out TemplateAsset templateAsset)) { templateAsset.Template.Manager.AddTemplate(templateAsset.Template); Mod.Logger.Debug($"Template asset loaded: {templateAsset} ({templateAsset.Flags})"); } else { Mod.Logger.Error($"Could not load template asset"); } } catch (Exception error) { Mod.Logger.Error($"Could not load template asset", error); } }
public override void OnAssetLoaded(string name, object asset, Dictionary <string, byte[]> userData) { if (asset is not BuildingInfo prefab || userData == null || !userData.TryGetValue(DataId, out byte[] data) || !userData.TryGetValue(MapId, out byte[] map)) { return; } Mod.Logger.Debug($"Start load prefab data \"{prefab.name}\""); try { var decompress = Loader.Decompress(data); var config = XmlExtension.Parse(decompress); var count = map.Length / 6; var segments = new ushort[count]; var nodes = new ushort[count * 2]; for (var i = 0; i < count; i += 1) { segments[i] = GetUShort(map[i * 6], map[i * 6 + 1]); nodes[i * 2] = GetUShort(map[i * 6 + 2], map[i * 6 + 3]); nodes[i * 2 + 1] = GetUShort(map[i * 6 + 4], map[i * 6 + 5]); } AssetMarkings[prefab] = new AssetMarking(config, segments, nodes); Mod.Logger.Debug($"Prefab data was loaded; Size = {data.Length} bytes"); } catch (Exception error) { Mod.Logger.Error("Could not load prefab data", error); } }
public override void OnLoadData() { Mod.Logger.Debug($"Start load map data"); if (serializableDataManager.LoadData(Loader.Id) is byte[] data) { try { var sw = Stopwatch.StartNew(); var decompress = Loader.Decompress(data); #if DEBUG Mod.Logger.Debug(decompress); #endif var config = XmlExtension.Parse(decompress); MarkupManager.FromXml(config, new ObjectsMap()); sw.Stop(); Mod.Logger.Debug($"Map data was loaded in {sw.ElapsedMilliseconds}ms; Size = {data.Length} bytes"); } catch (Exception error) { Mod.Logger.Error("Could not load map data", error); MarkupManager.SetFailed(); } } else { Mod.Logger.Debug($"Saved map data not founded"); } }
public override void Load() { try { Clear(); var xml = Saved.value; if (!string.IsNullOrEmpty(xml)) { var config = XmlExtension.Parse(xml); FromXml(config); } Mod.Logger.Debug($"{typeof(TemplateType).Name} was loaded: {TemplatesDictionary.Count} items"); } catch (Exception error) { Mod.Logger.Error($"Could not load {typeof(TemplateType).Name}", error); } }
protected override void LoadData() { try { ClearData(); var xml = Saved.value; if (!string.IsNullOrEmpty(xml)) { var config = XmlExtension.Parse(xml); FromXml(config); } SingletonMod <Mod> .Logger.Debug($"Road templates was loaded: {Templates.Count} items"); } catch (Exception error) { SingletonMod <Mod> .Logger.Error($"Could not load road templates", error); } }
private static bool ImportData(string file, Action <XElement> processData) { Mod.Logger.Debug($"Import data"); try { using var fileStream = File.OpenRead(file); using var reader = new StreamReader(fileStream); var xml = reader.ReadToEnd(); var config = XmlExtension.Parse(xml); processData(config); Mod.Logger.Debug($"Data was imported"); return(true); } catch (Exception error) { Mod.Logger.Error("Could not import data", error); return(false); } }