public void SetData(List <string> pFileList) { TreeView.Nodes.Clear(); FileHierarchy = null; FileList = null; if ((pFileList == null) || (pFileList.Count == 0)) { return; } if (pFileList == null) { return; } FileList = pFileList; FileHierarchy = new FileHierarchy(pFileList); DisplayNode(null, FileHierarchy.Root); TreeView.ExpandAll(); }
public bool Run(IFile romFile, out IFileHierarchy hierarchy) { Asserts.Equal( ".iso", romFile .Extension, $"Cannot dump ROM because it is not an ISO: {romFile}"); Asserts.True( romFile.Exists, $"Cannot dump ROM because it does not exist: {romFile}"); var didChange = false; var finalDirectoryPath = romFile.FullNameWithoutExtension; var finalDirectory = new FinDirectory(finalDirectoryPath); if (!finalDirectory.Exists) { didChange = true; this.DumpRom_(romFile); Asserts.True(finalDirectory.Exists, $"Directory was not created: {finalDirectory}"); } hierarchy = new FileHierarchy(finalDirectory); return(didChange); }
public IModelDirectory <GloModelFileBundle>?GatherModelFileBundles( bool assert) { var gloverSteamDirectory = SteamUtils.GetGameDirectory("Glover", assert); if (gloverSteamDirectory == null) { return(null); } var rootModelDirectory = new ModelDirectory <GloModelFileBundle>("glover"); var parentObjectDirectory = rootModelDirectory.AddSubdir("data") .AddSubdir("objects"); var gloverFileHierarchy = new FileHierarchy(gloverSteamDirectory); var topLevelObjectDirectory = gloverFileHierarchy.Root.TryToGetSubdir("data/objects"); foreach (var objectDirectory in topLevelObjectDirectory.Subdirs) { this.AddObjectDirectory( parentObjectDirectory.AddSubdir(objectDirectory.Name), gloverFileHierarchy, objectDirectory); } return(rootModelDirectory); }
public bool Equals(VersionData versionData) => RepositoryName.Equals(versionData.RepositoryName) && BranchName.Equals(versionData.BranchName) && ParentBranchName.Equals(versionData.BranchName) && NewBranch.Equals(versionData.NewBranch) && DeltaContent.Equals(versionData.DeltaContent) && FileHierarchy.All(versionData.FileHierarchy.Contains) && FileHierarchy.Count.Equals(versionData.FileHierarchy.Count) && EventId.Equals(versionData.EventId);
//==================================================================================================== //Ответ на попытку авторизации private void AUTH_Send_Message() { this.response_buf = new byte[Client.command_length]; if (UsersData.IsUserExist(ref user_inf, ref Server.UserList)) { this.flag = true; //Взаимодействие с пользователем активировано this.folder = Encoding.Default.GetString(user_inf.login_hash) + "//"; //Задаём персональное имя папки пользователя //Отправляем ответ об успешной авторизации this.response_buf[0] = Convert.ToByte(ServerAnswers.OK); networkStream.Write(response_buf, 0, response_buf.Length); //Обмениваемся ключами и создаём секретный aes = new DIFFIE_HELMAN(); file.KeysExchange(client, networkStream, aes); //Ждать зашифрованные хэши while (client.Connected) { if (networkStream.DataAvailable) { byte[] login = null; FileProtocolReader.Read(ref login, networkStream); login = aes.Decript(login); byte[] password = null; FileProtocolReader.Read(ref password, networkStream); password = aes.Decript(password); SHA256 sHA = SHA256Managed.Create(); if (sHA.ComputeHash(login).ToString() == user_inf.login_hash.ToString() && sHA.ComputeHash(password).ToString() == user_inf.login_hash.ToString()) { this.response_buf[0] = Convert.ToByte(ServerAnswers.OK); networkStream.Write(response_buf, 0, response_buf.Length); //Посылаем информацию о названиях всех доступных файлах FileHierarchy fileHierarchy = new FileHierarchy(this.folder); fileHierarchy.NetworkSendInfo(networkStream, aes); } else { this.response_buf[0] = Convert.ToByte(ServerAnswers.NOPE); networkStream.Write(response_buf, 0, response_buf.Length); } break; } } } else { this.response_buf[0] = Convert.ToByte(ServerAnswers.NOPE); networkStream.Write(response_buf, 0, response_buf.Length); Disconnect(); } }
public IModelDirectory <IHaloWarsModelFileBundle>?GatherModelFileBundles( bool assert) { var haloWarsSteamDirectory = SteamUtils.GetGameDirectory("HaloWarsDE", assert); if (haloWarsSteamDirectory == null) { return(null); } var scratchDirectory = DirectoryConstants.ROMS_DIRECTORY .GetSubdir("halo_wars", true); var context = new HWContext(haloWarsSteamDirectory.FullName, scratchDirectory.FullName); // Expand all compressed/encrypted game files. This also handles the .xmb -> .xml conversion context.ExpandAllEraFiles(); var fileHierarchy = new FileHierarchy(scratchDirectory); var rootNode = new ModelDirectory <IHaloWarsModelFileBundle>("halo_wars"); var mapDirectories = fileHierarchy.Root .TryToGetSubdir("scenario/skirmish/design") .Subdirs; foreach (var srcMapDirectory in mapDirectories) { var xtdFile = srcMapDirectory.FilesWithExtension(".xtd").Single(); var xttFile = srcMapDirectory.FilesWithExtension(".xtt").Single(); rootNode.AddFileBundleRelative( new XtdModelFileBundle(xtdFile, xttFile, context)); } var artDirectory = fileHierarchy.Root.TryToGetSubdir("art"); var artSubdirQueue = new FinQueue <IFileHierarchyDirectory>(artDirectory); // TODO: Switch to DFS instead, it's more intuitive as a user while (artSubdirQueue.TryDequeue(out var artSubdir)) { // TODO: Skip a file if it's already been extracted // TODO: Parse UGX files instead, as long as they specify their own animations var visFiles = artSubdir.FilesWithExtension(".vis"); foreach (var visFile in visFiles) { rootNode.AddFileBundleRelative(new VisModelFileBundle(visFile, context)); } artSubdirQueue.Enqueue(artSubdir.Subdirs); } return(rootNode); }
/// <summary> /// Reads and parses a previously emitted XML document representing the project. /// </summary> protected void ParseProjectFile(XmlDocument document) { // Loading data from various XML nodes. XmlNode projectNode = document.SelectSingleNode("//project"); XmlNode gameNode = projectNode.SelectSingleNode("game"); string gameName = gameNode.Attributes["name"].Value; // Make sure that we have a valid platform here. string gamePlatform = gameNode.Attributes["platform"].Value; if (!Enum.IsDefined(typeof(Platform), gamePlatform)) { throw new ProjectFileNotValidException("The specified platform does not exist: " + gamePlatform); } Platform platform = (Platform)Enum.Parse(typeof(Platform), gamePlatform); if (GameDefinitionRequest != null) { GameDefinitionRequestEventArgs e = new GameDefinitionRequestEventArgs(gameName, platform); GameDefinitionRequest(this, e); game = e.GameDefinition; if (game == null) { throw new ProjectFileNotValidException("Could not identify the referenced game id: " + e.GameID); } } else { throw new Exception( "Cannot retrieve game definition - the GameDefinitionRequest event is not handled by the Core."); } XmlNode infoNode = projectNode.SelectSingleNode("info"); author = infoNode.SelectSingleNode("author").InnerText; description = infoNode.SelectSingleNode("description").InnerText; version = new ProjectVersion(infoNode.SelectSingleNode("version").InnerText); XmlNode templatesNode = projectNode.SelectSingleNode("template"); templateName = templatesNode.InnerText; XmlNode mapInfoNode = projectNode.SelectSingleNode("mapinfo"); mapName = mapInfoNode.SelectSingleNode("name").InnerText; filename = mapInfoNode.SelectSingleNode("filename").InnerText; uiText = mapInfoNode.SelectSingleNode("uitext").InnerText; uiScreenShotFile = mapInfoNode.SelectSingleNode("uiscreenshot").InnerText; projectReferencesTable = new FileHierarchy(); XmlNodeList referencesNodeList = projectNode.SelectNodes("references//tag"); foreach (XmlNode tagNode in referencesNodeList) { string path = tagNode.InnerText; AddTagReference(path); } templates = new TemplateTagList(game.GetProjectTemplate(templateName)); templates.FileAdded += templates_FileAdded; templates.FileRemoved += templates_FileRemoved; XmlNodeList templatesNodeList = projectNode.SelectNodes("essentialTags//tag"); foreach (XmlNode tagNode in templatesNodeList) { string templateID = tagNode.Attributes["template_id"].InnerText; TagPath path = new TagPath(tagNode.InnerText); templates.Add(templateID, path); } }
// -------------------------------------------------------------------------------------------------------------------------------------- public void Reset() { TreeView.Nodes.Clear(); FileHierarchy = null; }
static CacheManager() { FileHierarchy = FileHierarchy.GetInstance(); FileLogger = FileLogger.GetInstance(); }
public bool Run(IFile romFile, out IFileHierarchy hierarchy) { Asserts.Equal( ".cia", romFile.Extension, $"Cannot dump ROM because it is not a CIA: {romFile}"); Asserts.True( romFile.Exists, $"Cannot dump ROM because it does not exist: {romFile}"); var didChange = false; var finalDirectoryPath = romFile.FullName.Substring(0, romFile.FullName.Length - ".cia".Length); var finalDirectory = new FinDirectory(finalDirectoryPath); if (!finalDirectory.Exists) { didChange = true; var beforeFiles = ThreeDsToolsConstants.HACKING_TOOLKIT_9DS_DIRECTORY .GetExistingFiles() .ToHashSet(); var beforeSubdirs = ThreeDsToolsConstants.HACKING_TOOLKIT_9DS_DIRECTORY .GetExistingSubdirs() .ToHashSet(); var directoryPath = Path.Join( ThreeDsToolsConstants.HACKING_TOOLKIT_9DS_DIRECTORY.FullName, "ExtractedRomFS"); var directory = new FinDirectory(directoryPath); if (!directory.Exists) { this.DumpRom_(romFile); Asserts.True(directory.Exists, $"Failed to find expected HackingToolkit9ds directory:\n{directory}" + "\n\n" + "This is most likely due to not pre-installing " + "HackingToolkit9ds via the installer:\n" + "cli/tools/HackingToolkit9DSv12/SetupUS.exe"); } Directory.Move(directoryPath, finalDirectoryPath); Asserts.True(finalDirectory.Exists, $"Directory was not created: {finalDirectory}"); var afterFiles = ThreeDsToolsConstants.HACKING_TOOLKIT_9DS_DIRECTORY .GetExistingFiles() .ToArray(); var afterSubdirs = ThreeDsToolsConstants.HACKING_TOOLKIT_9DS_DIRECTORY .GetExistingSubdirs() .ToArray(); // Cleans up unneeded files & directories foreach (var afterFile in afterFiles) { if (!beforeFiles.Contains(afterFile)) { afterFile.Info.Delete(); } } foreach (var afterSubdir in afterSubdirs) { if (!beforeSubdirs.Contains(afterSubdir)) { afterSubdir.Info.Delete(true); } } } hierarchy = new FileHierarchy(finalDirectory); return(didChange); }