public static SceneSave FromFile(string fileName) { SceneSave tempScene = null; #if !FRB_MDX if (ManualDeserialization) { tempScene = DeserializeManually(fileName); } else #endif { tempScene = FileManager.XmlDeserialize <SceneSave>(fileName); } tempScene.mFileName = fileName; if (FileManager.IsRelative(fileName)) { tempScene.mSceneDirectory = FileManager.GetDirectory(FileManager.RelativeDirectory + fileName); } else { tempScene.mSceneDirectory = FileManager.GetDirectory(fileName); } return(tempScene); }
public AnimationChainList ToAnimationChainList(string contentManagerName, bool throwError) { mToRuntimeErrors.Clear(); AnimationChainList list = new AnimationChainList(); list.FileRelativeTextures = FileRelativeTextures; list.TimeMeasurementUnit = TimeMeasurementUnit; list.Name = mFileName; string oldRelativeDirectory = FileManager.RelativeDirectory; try { if (this.FileRelativeTextures) { FileManager.RelativeDirectory = FileManager.GetDirectory(mFileName); } foreach (AnimationChainSave animationChain in this.AnimationChains) { try { FlatRedBall.Graphics.Animation.AnimationChain newChain = null; newChain = animationChain.ToAnimationChain(contentManagerName, this.TimeMeasurementUnit, this.CoordinateType); newChain.mIndexInLoadedAchx = list.Count; newChain.ParentAchxFileName = mFileName; list.Add(newChain); } catch (Exception e) { mToRuntimeErrors.Add(e.ToString()); if (throwError) { throw new Exception("Error loading AnimationChain", e); } } } } finally { FileManager.RelativeDirectory = oldRelativeDirectory; } return(list); }
//AnimationChainList ToAnimationChainList(string contentManagerName, TextureAtlas textureAtlas, bool throwError) //{ // mToRuntimeErrors.Clear(); // AnimationChainList list = new AnimationChainList(); // list.FileRelativeTextures = FileRelativeTextures; // list.TimeMeasurementUnit = TimeMeasurementUnit; // list.Name = mFileName; // string oldRelativeDirectory = FileManager.RelativeDirectory; // try // { // if (this.FileRelativeTextures) // { // FileManager.RelativeDirectory = FileManager.GetDirectory(mFileName); // } // foreach (AnimationChainSave animationChain in this.AnimationChains) // { // try // { // FlatRedBall.Graphics.Animation.AnimationChain newChain = null; // if (textureAtlas == null) // { // newChain = animationChain.ToAnimationChain(contentManagerName, this.TimeMeasurementUnit, this.CoordinateType); // } // else // { // newChain = animationChain.ToAnimationChain(textureAtlas, this.TimeMeasurementUnit); // } // newChain.mIndexInLoadedAchx = list.Count; // newChain.ParentAchxFileName = mFileName; // list.Add(newChain); // } // catch (Exception e) // { // mToRuntimeErrors.Add(e.ToString()); // if (throwError) // { // throw new Exception("Error loading AnimationChain", e); // } // } // } // } // finally // { // FileManager.RelativeDirectory = oldRelativeDirectory; // } // return list; //} //public AnimationChainList ToAnimationChainList(Graphics.Texture.TextureAtlas textureAtlas) //{ // return ToAnimationChainList(null, textureAtlas, true); //} private void MakeRelative(string fileName) { string oldRelativeDirectory = FileManager.RelativeDirectory; string newRelativeDirectory = FileManager.GetDirectory(fileName); FileManager.RelativeDirectory = newRelativeDirectory; foreach (AnimationChainSave acs in AnimationChains) { acs.MakeRelative(); } FileManager.RelativeDirectory = oldRelativeDirectory; }
public void SetSceneDirectory() { if (string.IsNullOrEmpty(mFileName)) { return; } if (FileManager.IsRelative(mFileName)) { mSceneDirectory = FileManager.GetDirectory(FileManager.RelativeDirectory + mFileName); } else { mSceneDirectory = FileManager.GetDirectory(mFileName); } }
public List <string> GetReferencedFiles(RelativeType relativeType) { List <string> referencedFiles = new List <string>(); foreach (AnimationChainSave acs in this.AnimationChains) { //if(acs.ParentFile if (acs.ParentFile != null && acs.ParentFile.EndsWith(".gif")) { referencedFiles.Add(acs.ParentFile); } else { foreach (AnimationFrameSave afs in acs.Frames) { string texture = FileManager.Standardize(afs.TextureName, null, false); if (FileManager.GetExtension(texture).StartsWith("gif")) { texture = FileManager.RemoveExtension(texture) + ".gif"; } if (!string.IsNullOrEmpty(texture) && !referencedFiles.Contains(texture)) { referencedFiles.Add(texture); } } } } if (relativeType == RelativeType.Absolute) { string directory = FileManager.GetDirectory(FileName); for (int i = 0; i < referencedFiles.Count; i++) { referencedFiles[i] = directory + referencedFiles[i]; } } return(referencedFiles); }
public T LoadFromProject <T>(string assetName) { string oldRelativePath = FileManager.RelativeDirectory; FlatRedBall.IO.FileManager.RelativeDirectory = FileManager.GetDirectory(assetName); #if DEBUG bool shouldCheckForXnb = true; #if ANDROID if (typeof(T) == typeof(Song)) { shouldCheckForXnb = false; } #endif string fileToCheckFor = assetName + ".xnb"; if (shouldCheckForXnb && !FileManager.FileExists(fileToCheckFor)) { string errorString = "Could not find the file " + fileToCheckFor + "\n"; #if !WINDOWS_8 List <string> filesInDirectory = FileManager.GetAllFilesInDirectory(FileManager.GetDirectory(assetName), null, 0); errorString += "Found the following files:\n\n"; foreach (string s in filesInDirectory) { errorString += FileManager.RemovePath(s) + "\n"; } #endif throw new FileNotFoundException(errorString); } #endif #if XNA4 && !MONOGAME if (!FileManager.IsRelative(assetName)) { assetName = FileManager.MakeRelative( assetName, System.Windows.Forms.Application.StartupPath + "/"); } #endif #if USES_DOT_SLASH_ABOLUTE_FILES T asset; if (assetName.StartsWith(@".\") || assetName.StartsWith(@"./")) { asset = base.Load <T>(assetName.Substring(2)); } else { asset = base.Load <T>(assetName); } #else T asset = base.Load <T>(assetName); #endif if (!mAssets.ContainsKey(assetName)) { mAssets.Add(assetName, asset); } FileManager.RelativeDirectory = oldRelativePath; return(AdjustNewAsset(asset, assetName)); }
private void MakeAssetsRelative(string fileName) { string oldRelativeDirectory = FileManager.RelativeDirectory; if (FileManager.IsRelative(fileName)) { fileName = FileManager.MakeAbsolute(fileName); } FileManager.RelativeDirectory = FileManager.GetDirectory(fileName); #region SpriteSave - Make textures relative foreach (SpriteSave ss in SpriteList) { ss.MakeRelative(); } #endregion #region SpriteFrameSave - Make the textures relative foreach (SpriteFrameSave sfs in SpriteFrameSaveList) { sfs.ParentSprite.Texture = FileManager.MakeRelative(sfs.ParentSprite.Texture); if (string.IsNullOrEmpty(sfs.ParentSprite.AnimationChainsFile) == false) { sfs.ParentSprite.AnimationChainsFile = FileManager.MakeRelative(sfs.ParentSprite.AnimationChainsFile); } } #endregion #region SpriteGridSave - Make textures realtive foreach (SpriteGridSave sgs in SpriteGridList) { sgs.BaseTexture = FileManager.MakeRelative(sgs.BaseTexture); sgs.Blueprint.Texture = FileManager.MakeRelative(sgs.Blueprint.Texture); foreach (string[] row in sgs.GridTexturesArray) { for (int i = 0; i < row.Length; i++) { row[i] = FileManager.MakeRelative(row[i]); } } if (sgs.AnimationChainGridSave != null) { sgs.AnimationChainGridSave.MakeRelative(); } } #endregion #region TextSaves - Make textures and .fnt files relative foreach (TextSave textSave in TextSaveList) { textSave.FontTexture = FileManager.MakeRelative(textSave.FontTexture); textSave.FontFile = FileManager.MakeRelative(textSave.FontFile); } #endregion FileManager.RelativeDirectory = oldRelativeDirectory; }
public List <string> GetReferencedFiles(RelativeType relativeType) { List <string> referencedFiles = new List <string>(); foreach (SpriteSave spriteSave in SpriteList) { spriteSave.GetReferencedFiles(referencedFiles); } foreach (SpriteGridSave spriteGridSave in SpriteGridList) { if (!string.IsNullOrEmpty(spriteGridSave.BaseTexture) && !referencedFiles.Contains(spriteGridSave.BaseTexture)) { referencedFiles.Add(spriteGridSave.BaseTexture); } foreach (string[] stringArray in spriteGridSave.GridTexturesArray) { foreach (string texture in stringArray) { if (!string.IsNullOrEmpty(texture) && !referencedFiles.Contains(texture)) { referencedFiles.Add(texture); } } } } foreach (SpriteFrameSave spriteFrameSave in SpriteFrameSaveList) { if (!string.IsNullOrEmpty(spriteFrameSave.ParentSprite.Texture) && !referencedFiles.Contains(spriteFrameSave.ParentSprite.Texture)) { referencedFiles.Add(spriteFrameSave.ParentSprite.Texture); } if (!string.IsNullOrEmpty(spriteFrameSave.ParentSprite.AnimationChainsFile) && !referencedFiles.Contains(spriteFrameSave.ParentSprite.AnimationChainsFile)) { referencedFiles.Add(spriteFrameSave.ParentSprite.AnimationChainsFile); } } foreach (TextSave textSave in TextSaveList) { string fontFile = textSave.FontFile; bool isThereAFontFile = !string.IsNullOrEmpty(fontFile); if (isThereAFontFile && !referencedFiles.Contains(fontFile)) { referencedFiles.Add(fontFile); } string textureFile = textSave.FontTexture; if (!string.IsNullOrEmpty(textureFile)) { if (!referencedFiles.Contains(textureFile)) { referencedFiles.Add(textureFile); } } else if (isThereAFontFile) { // This may be a multi-texture font, so let's check for that string absoluteFontDirectory = this.mSceneDirectory + fontFile; if (FileManager.FileExists(absoluteFontDirectory)) { string fontDirectory = FileManager.GetDirectory(fontFile, FlatRedBall.IO.RelativeType.Relative); string contents = FileManager.FromFileText(absoluteFontDirectory); string[] textures = BitmapFont.GetSourceTextures(contents); for (int i = 0; i < textures.Length; i++) { string textureWithFontFileDirectory = textures[i]; //make the texture hae the font file's directory textureWithFontFileDirectory = fontDirectory + textureWithFontFileDirectory; if (!referencedFiles.Contains(textureWithFontFileDirectory)) { referencedFiles.Add(textureWithFontFileDirectory); } } } } } if (relativeType == RelativeType.Absolute) { string directory = this.ScenePath; for (int i = 0; i < referencedFiles.Count; i++) { if (FileManager.IsRelative(referencedFiles[i])) { referencedFiles[i] = directory + referencedFiles[i]; } } } return(referencedFiles); }