Exemple #1
0
        private static PropInfo FindProp(string prefabName, string packageName)
        {
            var prefab = PrefabCollection <PropInfo> .FindLoaded(prefabName) ??
                         PrefabCollection <PropInfo> .FindLoaded(prefabName + "_Data") ??
                         PrefabCollection <PropInfo> .FindLoaded(PathEscaper.Escape(prefabName) + "_Data") ??
                         PrefabCollection <PropInfo> .FindLoaded(packageName + "." + prefabName + "_Data") ??
                         PrefabCollection <PropInfo> .FindLoaded(packageName + "." + PathEscaper.Escape(prefabName) + "_Data");

            return(prefab);
        }
        private BuildingInfo FindPrefab(string prefabName, string packageName)
        {
            var prefab = PrefabCollection <BuildingInfo> .FindLoaded(prefabName);

            if (prefab == null)
            {
                prefab = PrefabCollection <BuildingInfo> .FindLoaded(prefabName + "_Data");
            }
            if (prefab == null)
            {
                prefab = PrefabCollection <BuildingInfo> .FindLoaded(PathEscaper.Escape(prefabName) + "_Data");
            }
            if (prefab == null)
            {
                prefab = PrefabCollection <BuildingInfo> .FindLoaded(packageName + "." + prefabName + "_Data");
            }
            if (prefab == null)
            {
                prefab = PrefabCollection <BuildingInfo> .FindLoaded(packageName + "." + PathEscaper.Escape(prefabName) + "_Data");
            }

            return(prefab);
        }
Exemple #3
0
        public static bool SaveTemplateAsset(TemplateAsset templateAsset)
        {
            Mod.Logger.Debug($"Start save template asset {templateAsset}");
            try
            {
                var meta = new CustomAssetMetaData()
                {
                    name      = $"{templateAsset.Template.Name}_{Guid.NewGuid().Unique()}",
                    timeStamp = DateTime.Now,
                    type      = CustomAssetMetaData.Type.Unknown,
                    dlcMask   = SteamHelper.DLC_BitMask.None,
                    steamTags = new string[] { "Marking" },
                    guid      = templateAsset.Template.Id.ToString(),
                };

                var package = new Package(templateAsset.IsWorkshop ? templateAsset.WorkshopId.ToString() : meta.name)
                {
                    packageMainAsset = meta.name,
                    packageAuthor    = $"steamid:{TemplateManager.UserId}",
                };

                var gameObject  = new GameObject(typeof(MarkingInfo).Name);
                var markingInfo = gameObject.AddComponent <MarkingInfo>();
                markingInfo.data = GetString(templateAsset.Template.ToXml());
                meta.assetRef    = package.AddAsset($"{meta.name}_Data", markingInfo.gameObject);

                if (templateAsset.Preview is Image image)
                {
                    meta.imageRef = package.AddAsset(templateAsset.MetaPreview, image, false, Image.BufferFileFormat.PNG, false, false);
                }

                if (templateAsset.SeparatePreview && templateAsset.SteamPreview is Image steamImage)
                {
                    meta.steamPreviewRef = package.AddAsset(templateAsset.MetaSteamPreview, steamImage, false, Image.BufferFileFormat.PNG, false, false);
                }
                else
                {
                    meta.steamPreviewRef = meta.imageRef;
                }

                package.AddAsset(meta.name, meta, UserAssetType.CustomAssetMetaData);

                var path = Path.Combine(DataLocation.assetsPath, PathUtils.AddExtension(PathEscaper.Escape(templateAsset.FileName), PackageManager.packageExtension));
                package.Save(path);

                Mod.Logger.Debug($"Template asset saved to {path}");

                return(true);
            }
            catch (Exception error)
            {
                Mod.Logger.Error($"Could not save template asset", error);
                return(false);
            }
        }
Exemple #4
0
        private string GetSavePathName(string saveName)
        {
            string path = PathUtils.AddExtension(PathEscaper.Escape(saveName), PackageManager.packageExtension);

            return(Path.Combine(DataLocation.assetsPath, path));
        }