Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        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");
            }
        }
Ejemplo n.º 4
0
        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);
            }
        }
Ejemplo n.º 5
0
        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);
            }
        }
Ejemplo n.º 6
0
        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);
            }
        }