예제 #1
0
        /// <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;
            }
        }
예제 #2
0
        /// <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);
            }
        }
예제 #3
0
        /// <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");
        }
예제 #4
0
        /// <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);
                }
            }
        }