/// <summary> /// Unregisters mission data from cache details. /// If the mission's SDK version is no longer referenced, it will be deleted. /// </summary> public static void RemoveMissionData(uint missionID) { // Find and remove the mission int index = m_MissionList.FindIndex((mission) => mission.missionID == missionID); if (index < 0) { return; } MissionData missionData = m_MissionList[index]; m_MissionList.RemoveAt(index); // Remove reference to SDK version string sdkVersion = CachePath.GetSDKVersion(missionData); if (string.IsNullOrEmpty(sdkVersion)) { return; } if (RemoveReference(sdkVersion)) { File.Delete(CachePath.GetSDKFilePath(sdkVersion)); } if (RemoveReference("DotNetInterop")) { File.Delete(CachePath.GetInteropFilePath()); interopVersion = null; } }
/// <summary> /// Reads MissionData for each mission directory stored in the cached details.txt. /// </summary> public static void Initialize() { // Parse cached mission directories foreach (string directory in Directory.EnumerateDirectories(CachePath.GetCachePath())) { uint missionID; if (!uint.TryParse(new DirectoryInfo(directory).Name, out missionID)) { continue; } // Register all details for mission string detailsPath = CachePath.GetMissionDetailsFilePath(missionID); if (!File.Exists(detailsPath)) { // Folder is corrupted, delete it Directory.Delete(directory, true); continue; } string json = File.ReadAllText(detailsPath); MissionData localData = JsonUtility.FromJson <MissionData>(json); AddMissionData(localData); } }
/// <summary> /// Registers mission data with cache details. /// Adds a reference to the mission's sdk version. /// </summary> public static void AddMissionData(MissionData missionData) { m_MissionList.Add(missionData); // Add reference to SDK version string sdkVersion = CachePath.GetSDKVersion(missionData); if (string.IsNullOrEmpty(sdkVersion)) { return; } // Cached DotNetInterop is always the newest cached sdkVersion if (CachePath.IsNewerVersion(sdkVersion, interopVersion)) { interopVersion = sdkVersion; } AddReference(sdkVersion); AddReference("DotNetInterop"); }
/// <summary> /// Initializes installed file references based on the cached installed.txt for each mission directory. /// </summary> public static void Initialize() { // Parse cached mission directories foreach (string directory in Directory.EnumerateDirectories(CachePath.GetCachePath())) { uint missionID; if (!uint.TryParse(directory, out missionID)) { continue; } // Register all installed files for mission string installedFilesPath = CachePath.GetMissionInstalledMetaFilePath(missionID); string[] installedFiles = File.ReadAllLines(installedFilesPath); foreach (string fileName in installedFiles) { AddReference(fileName); } } }