public File OpenFileDirectly(string packagePath, string filePath, FileOpenMode mode) { File file = null; if ((mode & FileOpenMode.Write) != FileOpenMode.Write && System.IO.File.Exists(packagePath)) { PackagePak pak = new PackagePak("", packagePath); file = pak.GetFile(filePath, mode & FileOpenMode.Write); pak.Close(); } else if ((mode & FileOpenMode.Write) != FileOpenMode.Write && System.IO.File.Exists(packagePath + ".pak")) { PackagePak pak = new PackagePak("", packagePath + ".pak"); file = pak.GetFile(filePath, mode & FileOpenMode.Write); pak.Close(); } else if ((mode & FileOpenMode.Write) == FileOpenMode.Write || System.IO.File.Exists(packagePath + (packagePath != "" ? "/" : "") + filePath)) { file = new SystemFile(packagePath + (packagePath != "" ? "/" : "") + filePath, packagePath + ":" + filePath, (mode & FileOpenMode.Write) == FileOpenMode.Write); } return(file); }
public IPackage OpenPackage(string path, string subPath) { IPackage p = null; if (!subPath.EndsWith("/") && subPath != "") { subPath += "/"; } // first try as folder packages if (System.IO.Directory.Exists(path)) { p = new PackageFolder("", path, subPath); } // then try as pak packages else if (System.IO.File.Exists(path + ".pak")) { p = new PackagePak("", path, subPath); } return(p); }