少年修仙传客户端代码仓库
client_Wu Xijin
2018-11-21 7414f3313de0df9b1de313951d4d53bf74877ee5
4906 【前端】【1.3】各平台强更开发
5个文件已修改
4个文件已添加
255 ■■■■ 已修改文件
Core/GameEngine/Login/Launch.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/ApkUpdateUrlConfig.cs 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/ApkUpdateUrlConfig.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/ConfigManager.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/TelPartialConfig/ApkUpdateUrlConfig.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/TelPartialConfig/ApkUpdateUrlConfig.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/SDK/SDKUtility.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/ClientVersion/VersionUpdateWin.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/ClientVersion/VersionUtility.cs 140 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Login/Launch.cs
@@ -77,6 +77,7 @@
            SDKUtility.Instance.CopyOneAsset("config/HelpInfo.txt.7z");
            SDKUtility.Instance.CopyOneAsset("config/PriorBundle.txt.7z");
            SDKUtility.Instance.CopyOneAsset("config/PriorLanguage.txt.7z");
            SDKUtility.Instance.CopyOneAsset("config/ApkUpdateUrl.txt.7z");
            AssetDeCompressTask.Decompress(ResourcesPath.Instance.ExternalStorePath);
            LocalSave.SetString("BuiltInAssetCopyCompleted_Android", VersionConfig.Get().version);
Core/GameEngine/Model/Config/ApkUpdateUrlConfig.cs
New file
@@ -0,0 +1,44 @@
//--------------------------------------------------------
//    [Author]:            第二世界
//    [  Date ]:           Wednesday, November 21, 2018
//--------------------------------------------------------
using UnityEngine;
using System;
namespace TableConfig {
    public partial class ApkUpdateUrlConfig : ConfigBase {
        public string appid { get ; private set; }
        public int branch { get ; private set ; }
        public string url { get ; private set; }
        public override string getKey()
        {
            return appid.ToString();
        }
        public override void Parse() {
            try
            {
                appid = rawContents[0].Trim();
                branch=IsNumeric(rawContents[1]) ? int.Parse(rawContents[1]):0;
                url = rawContents[2].Trim();
            }
            catch (Exception ex)
            {
                DebugEx.Log(ex);
            }
        }
    }
}
Core/GameEngine/Model/Config/ApkUpdateUrlConfig.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 00d6c64e5ac1b3041baeaac6c354b2ba
timeCreated: 1542780814
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/GameEngine/Model/ConfigManager.cs
@@ -35,6 +35,7 @@
    public void PreLoadConfigs()
    {
        StartSyncTask<ApkUpdateUrlConfig>();
        StartSyncTask<PriorBundleConfig>();
        StartSyncTask<PriorLanguageConfig>();
        StartSyncTask<ContactConfig>();
Core/GameEngine/Model/TelPartialConfig/ApkUpdateUrlConfig.cs
New file
@@ -0,0 +1,36 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace TableConfig
{
    public partial class ApkUpdateUrlConfig : ConfigBase, IConfigPostProcess
    {
        static Dictionary<string, Dictionary<int, ApkUpdateUrlConfig>> configs = new Dictionary<string, Dictionary<int, ApkUpdateUrlConfig>>();
        public void OnConfigParseCompleted()
        {
            if (!configs.ContainsKey(this.appid))
            {
                configs[this.appid] = new Dictionary<int, ApkUpdateUrlConfig>();
            }
            configs[this.appid][this.branch] = this;
        }
        public static ApkUpdateUrlConfig Get(string appId, int branch)
        {
            if (configs.ContainsKey(appId) && configs[appId].ContainsKey(branch))
            {
                return configs[appId][branch];
            }
            else
            {
                return null;
            }
        }
    }
}
Core/GameEngine/Model/TelPartialConfig/ApkUpdateUrlConfig.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 68ca325799263d647b31cb23a12863ba
timeCreated: 1542781008
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/SDK/SDKUtility.cs
@@ -262,6 +262,11 @@
#endif
    }
    public string GetPackageFlag()
    {
        return string.Empty;
    }
    #endregion
    #region 处理与SDK交互的底层方法
System/ClientVersion/VersionUpdateWin.cs
@@ -100,7 +100,7 @@
                    m_ProgressSlider.value = VersionUtility.Instance.progress;
                    var downLoadedSize = ((float)RemoteFile.TotalDownloadedSize / DownLoadAndDiscompressTask.BYTE_PER_MILLIONBYTE).ToString("f1");
                    var totalSize = ((float)VersionUtility.Instance.versionInfo.GetLatestVersion().file_size * 1024 / DownLoadAndDiscompressTask.BYTE_PER_MILLIONBYTE).ToString("f1");
                    var totalSize = ((float)VersionUtility.Instance.GetApkSize() * 1024 / DownLoadAndDiscompressTask.BYTE_PER_MILLIONBYTE).ToString("f1");
                    m_Progress.text = Language.GetFromLocal(13, StringUtility.Contact(downLoadedSize, "M", "/", totalSize, "M"));
@@ -128,7 +128,7 @@
                case VersionUtility.Step.DownLoadPrepared:
                    if (Application.platform == RuntimePlatform.Android)
                    {
                        var totalSize = VersionUtility.Instance.versionInfo.GetLatestVersion().file_size;
                        var totalSize = VersionUtility.Instance.GetApkSize();
                        var sizeDescription = ((float)totalSize / DownLoadAndDiscompressTask.BYTE_PER_KILOBYTE).ToString("f1");
                        switch (Application.internetReachability)
                        {
System/ClientVersion/VersionUtility.cs
@@ -11,24 +11,26 @@
using System.IO;
using Snxxz.UI;
using System.Text;
using TableConfig;
[XLua.LuaCallCSharp]
public class VersionUtility : Singleton<VersionUtility>
{
    public static readonly string[] VERSION_URL = new string[] { "http://pub.game.2460web.com:11000/appversion/?" ,
    "http://111.230.234.252:11000/appversion/?"};
    const string VERSION_URL_PURE = "http://111.230.234.252:11000/purge/appversion/?";
    public static readonly string[] VERSION_URL = new string[] {
        "http://pub.game.2460web.com:11000/appversion/?" ,
        "http://111.230.234.252:11000/appversion/?"};
    public string androidRoot { get { return StringUtility.Contact(SDKUtility.Instance.DeviceRootPath, "/", VersionConfig.Get().bundleIdentifier); } }
    public float progress {
        get { return RemoteFile.TotalDownloadedSize / ((float)versionInfo.GetLatestVersion().file_size * 1024); }
        get { return RemoteFile.TotalDownloadedSize / ((float)GetApkSize() * 1024); }
    }
    public VersionInfo versionInfo { get; private set; }
    public JsonData maoerVersion;
    Dictionary<string, ApkDownUrl> apkDownUrls = new Dictionary<string, ApkDownUrl>();
    public bool completed { get { return step == Step.Completed; } }
    Step m_Step = Step.None;
@@ -72,27 +74,13 @@
            versionInfo = JsonMapper.ToObject<VersionInfo>(_result);
            if (NeedNormalUpdate())
            {
                switch (Application.platform)
                if (Application.isMobilePlatform)
                {
                    case RuntimePlatform.Android:
                        if (File.Exists(GetApkLocalUrl()))
                        {
                            step = Step.ApkExist;
                            WindowCenter.Instance.OpenFromLocal<VersionUpdateWin>();
                        }
                        else
                        {
                            step = Step.DownLoadPrepared;
                            WindowCenter.Instance.OpenFromLocal<VersionUpdateWin>();
                        }
                        break;
                    case RuntimePlatform.IPhonePlayer:
                        step = Step.DownLoadPrepared;
                        WindowCenter.Instance.OpenFromLocal<VersionUpdateWin>();
                        break;
                    default:
                        step = Step.Completed;
                        break;
                    RequestApkDownConfigs();
                }
                else
                {
                    step = Step.Completed;
                }
            }
            else
@@ -110,6 +98,53 @@
        {
            step = Step.None;
            Clock.Create(DateTime.Now + new TimeSpan(TimeSpan.TicksPerSecond), RequestVersionCheck);
        }
    }
    public void RequestApkDownConfigs()
    {
        var config = ApkUpdateUrlConfig.Get(VersionConfig.Get().appId, VersionConfig.Get().branch);
        HttpRequest.Instance.RequestHttpGet(config.url, HttpRequest.defaultHttpContentType, 1, OnGetApkDownConfigs);
    }
    private void OnGetApkDownConfigs(bool _ok, string _result)
    {
        if (_ok)
        {
            var lines = _result.Split(new string[] { FileExtersion.lineSplit }, StringSplitOptions.RemoveEmptyEntries);
            apkDownUrls.Clear();
            for (int i = 0; i < lines.Length; i++)
            {
                var apkDownUrl = new ApkDownUrl(lines[i]);
                apkDownUrls[apkDownUrl.flag] = apkDownUrl;
            }
            switch (Application.platform)
            {
                case RuntimePlatform.Android:
                    if (File.Exists(GetApkLocalUrl()))
                    {
                        step = Step.ApkExist;
                        WindowCenter.Instance.OpenFromLocal<VersionUpdateWin>();
                    }
                    else
                    {
                        step = Step.DownLoadPrepared;
                        WindowCenter.Instance.OpenFromLocal<VersionUpdateWin>();
                    }
                    break;
                case RuntimePlatform.IPhonePlayer:
                    step = Step.DownLoadPrepared;
                    WindowCenter.Instance.OpenFromLocal<VersionUpdateWin>();
                    break;
                default:
                    step = Step.Completed;
                    break;
            }
        }
        else
        {
            Clock.Create(DateTime.Now + new TimeSpan(TimeSpan.TicksPerSecond), RequestApkDownConfigs);
        }
    }
@@ -171,8 +206,40 @@
        }
        else
        {
            var version = versionInfo.GetLatestVersion();
            return version.download_url;
            var flag = SDKUtility.Instance.GetPackageFlag();
            if (apkDownUrls.ContainsKey(flag))
            {
                return apkDownUrls[flag].url;
            }
            else
            {
                return string.Empty;
            }
        }
    }
    public int GetApkSize()
    {
        if (versionInfo == null)
        {
            return 0;
        }
        if (IsMaoErGame())
        {
            return versionInfo.GetLatestVersion().file_size;
        }
        else
        {
            var flag = SDKUtility.Instance.GetPackageFlag();
            if (apkDownUrls.ContainsKey(flag))
            {
                return apkDownUrls[flag].size;
            }
            else
            {
                return 0;
            }
        }
    }
@@ -400,7 +467,6 @@
    {
        public int is_fullpackage;
        public int file_size;
        public string download_url;
        public string version_desc;
        public DateTime public_time;
        public int update_force;
@@ -415,6 +481,22 @@
        public string url;
    }
    public struct ApkDownUrl
    {
        public string flag;
        public string url;
        public int size;
        public ApkDownUrl(string content)
        {
            var strings = content.Split('\t');
            flag = strings[0];
            url = strings[1];
            int.TryParse(strings[2], out size);
        }
    }
    public enum Step
    {
        None,