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("获取服务器的版本信息失败"); } }
/// <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); }