void Write(BaseMapData existing, AssetInfo info, ISerializer s) { (byte[] bytes, string script) = existing switch { MapData2D map2d => Write2D(map2d, info), MapData3D map3d => Write3D(map3d, info), _ => (null, null) }; if (bytes != null) { s.Bytes(null, bytes, bytes.Length); } var disk = Resolve <IFileSystem>(); var scriptPattern = info.Get(AssetProperty.ScriptPattern, ""); if (script == null || string.IsNullOrEmpty(scriptPattern)) { return; } // TODO: Find a less hacky way of doing this var scriptPath = info.BuildFilename(scriptPattern, 0); var assetDir = GetAssetDir(info); if (!disk.DirectoryExists(assetDir)) { disk.CreateDirectory(assetDir); } disk.WriteAllText(Path.Combine(assetDir, scriptPath), script); }
static string GetScriptFilename(AssetInfo info) { var scriptPattern = info.Get(AssetProperty.ScriptPattern, ""); return(string.IsNullOrEmpty(scriptPattern) ? null : info.BuildFilename(scriptPattern, 0)); }