Пример #1
0
        public VersionControl(string name, Version server, Version local, ModuleUpdateInfo info)
        {
            this.local = local;
            this.info  = info;

            // select update item by version numbers
            infoItem = null;
            bool merged = false;

            do
            {
                merged = false;

                foreach (ModuleUpdateInfoItem item in info.Items)
                {
                    if (infoItem == null && item.Base == local)
                    {
                        infoItem = item;
                        merged   = true;
                        break;
                    }
                    // make sure update is not higher than the requested version
                    else if (infoItem != null && item.Version <= server && item.Base == infoItem.Version)
                    {
                        // merge
                        infoItem = new ModuleUpdateInfoItem(infoItem, item);
                        merged   = true;
                        break;
                    }
                }

                // no update for our version found, fallback to full update
                if (infoItem == null)
                {
                    foreach (ModuleUpdateInfoItem item in info.Items)
                    {
                        if (item.Base == null && item.Version <= server)
                        {
                            infoItem = item;
                            merged   = true;
                            break;
                        }
                    }
                }
            } while (merged);
        }
Пример #2
0
        /// <summary>
        /// Get latest version of one file.
        /// </summary>
        /// <param name="fileName">file name</param>
        /// <returns>file path with version directory</returns>
        public ModuleUpdateFilePath GetLatestVersion(string fileName)
        {
            // download update info if not already downloaded
            if (!GetUpdateInfo())
            {
                return(null);
            }

            string moduleName = Path.GetFileNameWithoutExtension(fileName);

            if (updates.Modules.ContainsKey(moduleName))
            {
                ModuleUpdateInfo info = updates.Modules[moduleName];
                return(new ModuleUpdateFilePath(info.Stable, info.Base == "" ? info.Name : info.Base, fileName));
            }

            return(null);
        }
Пример #3
0
        public VersionControl CheckForUpdates(PackageInfo info)
        {
            if (info.GameName == "launcher")
            {
                // set current engine version number
                engineVersion = info.Version;
            }

            // download update info if not already downloaded
            if (!GetUpdateInfo())
            {
                return(null);
            }

            // cut .pak from package
            string package = Path.GetFileNameWithoutExtension(info.Package);

            // check only supported files
            if (!updates.Modules.ContainsKey(package))
            {
                return(null);
            }

            ModuleUpdateInfo moduleUpdateInfo = updates.Modules[package];

            // get versions
            Version localVersion  = info.Version;
            Version serverVersion = useUnstableVersion ? moduleUpdateInfo.Unstable : moduleUpdateInfo.Stable;

            // return null if not updateable
            if (serverVersion <= localVersion)
            {
                return(null);
            }

            return(new VersionControl(info.Package, serverVersion, localVersion, moduleUpdateInfo));
        }