private void LoadServerVersionCallback(bool isOk, byte[] datas, string errorMessage)
        {
            if (isOk && datas != null && datas.Length > 0)
            {
                using (ByteBuffer buffer = new ByteBuffer(datas))
                {
                    platform = Singleton <GameEntry> .GetInstance().GetComponent <ResourceComponent>().PlatformName =
                        ValueParse.ReadValue(buffer, ValueParse.StringParse);

                    serverVersion = new Version.Version
                    {
                        MasterVersion  = ValueParse.ReadValue(buffer, ValueParse.IntParse),
                        MinorVersion   = ValueParse.ReadValue(buffer, ValueParse.IntParse),
                        RevisedVersion = ValueParse.ReadValue(buffer, ValueParse.IntParse)
                    };
                    Singleton <GameEntry> .GetInstance().GetComponent <ResourceComponent>().AssetBundleVariant =
                        ValueParse.ReadValue(buffer, ValueParse.StringParse);

                    serverBundleIsZip       = ValueParse.ReadValue(buffer, ValueParse.BoolParse);
                    serverBundleZipPassword = ValueParse.ReadValue(buffer, ValueParse.StringParse);
                }
                VersionCompareResult compareResult =
                    Version.Version.CompareResult(serverVersion, currentVersion, false);
                switch (compareResult)
                {
                case VersionCompareResult.Greater:
                    updatePanel.ShowMessageBox(UpdatePanel.enMessageBoxType.YesNo,
                                               UpdateStringConfig.UpdateStatusBeginUpdate,
                                               UpdateStringConfig.UpdateStringHasFatalErrorNeedReinstall,
                                               () =>
                    {
                        OpenAppStore(SingletonMono <GameFramework> .GetInstance().GetAppId());
                        if (Application.isPlaying)
                        {
                            Application.Quit();
                        }
                    }, () =>
                    {
                        if (Application.isPlaying)
                        {
                            Application.Quit();
                        }
                    });
                    break;

                case VersionCompareResult.Equal:
                case VersionCompareResult.Less:
                    UpdateResource();
                    break;
                }
            }
            else
            {
                //获取服务器的版本信息失败
                isUpdateDone = true;
                updateError("获取服务器的版本信息失败");
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Compare version for aa.bb.cc.dd format
        /// </summary>
        /// <returns>compare result</returns>
        public VersionCompareResult CompareVersionAABBCCDD(string ver1, string ver2)
        {
            VersionCompareResult ret = VersionCompareResult.IsInvalid;

            int[] ver1Array = FormatVersion(ver1.Split('.'));
            int[] ver2Array = FormatVersion(ver2.Split('.'));
            // Format for aa.bb.cc.dd
            if (ver1Array.Length == 4 && ver2Array.Length == 4)
            {
                if (ver1Array.SequenceEqual(ver2Array))
                {  //Same
                    ret = VersionCompareResult.IsSame;
                }
                else
                {
                    int ver1aabbcc = ver1Array[0] * 10000 + ver1Array[1] * 100 + ver1Array[2];
                    int ver2aabbcc = ver2Array[0] * 10000 + ver2Array[1] * 100 + ver2Array[2];
                    if (ver1aabbcc > ver2aabbcc)
                    {  //Bigger
                        ret = VersionCompareResult.IsBigger;
                    }
                    else if (ver1aabbcc < ver2aabbcc)
                    {  //Less
                        ret = VersionCompareResult.IsLess;
                    }
                    else
                    {  //Same, to compare dd, but for dd, 00 is biggest
                        int ver1dd = ver1Array[3];
                        int ver2dd = ver2Array[3];
                        if ((ver1dd > ver2dd && ver2dd != 0) ||
                            (ver1dd < ver2dd && ver1dd == 0))
                        {
                            //Bigger
                            ret = VersionCompareResult.IsBigger;
                        }
                        else
                        {  //Less
                            ret = VersionCompareResult.IsLess;
                        }
                    }
                }
            }
            return(ret);
        }