Esempio n. 1
0
    /** 继续使用当前的app版本 */
    private void continueCurrentApp(VersionSaveData localVersionData)
    {
        //当前版本够
        if (localVersionData.resourceVersion >= _versionData.currentResourceVersion)
        {
            doVersionNext(true);
        }
        else
        {
            //读取cdn版本
            ResourceInfoControl.loadCDNVersion(_versionData.currentResourceVersion, cdnVersion =>
            {
                //需要强制资源更新或之前未完全更完
                if (localVersionData.resourceVersion < _versionData.leastResourceVersion || !ResourceInfoControl.isVersionDataReady())
                {
                    ResourceInfoControl.mergeVersion(cdnVersion);
                    doVersionNext(true);
                    return;
                }

                //计算更新量
                ResourceInfoControl.countNewVersionSize(cdnVersion, _versionRe);

                _downloadSize = StringUtils.toMBString(_versionRe.size);

                //更新资源选择
                showAlertInWifi(Alert_GetNewResource, () =>
                {
                    ResourceInfoControl.mergeVersion(cdnVersion);
                    doVersionNext(false);
                }, versionUpdateOver);
            });
        }
    }
Esempio n. 2
0
    /** 连接游戏服成功 */
    public void connectGameSuccess()
    {
        if (!_running)
        {
            return;
        }

        _connectGaming.unlock();
        Ctrl.debugLog("连接game成功");

        if (_isSwitching)
        {
            _isSwitching = false;
            PlayerSwitchGameRequest.create(_gameInfo.token).send();
        }
        else
        {
            //可以停了
            _httpLoginAffair.stop();

            VersionSaveData versionSaveData = ResourceInfoControl.getVersion();
            int             resourceVersion = versionSaveData != null ? versionSaveData.resourceVersion : 100000;
            LoginGameRequest.create(_gameInfo.token, CodeCheckRecord.msgDataVersion, BaseC.config.getMsgDataVersion(), resourceVersion).send();
        }
    }
Esempio n. 3
0
    public virtual void makeClientLoginData(ClientLoginData data)
    {
        //游客
        if (platform == PlatformType.Visitor)
        {
            uid = getVisitorUID();
        }

        data.uid                    = uid;
        data.countryID              = countryID;
        data.platform               = platform;
        data.clientPlatformType     = SystemControl.clientPlatform;
        data.deviceType             = SystemInfo.deviceType.ToString();
        data.deviceUniqueIdentifier = SystemInfo.deviceUniqueIdentifier;
        data.visitorUID             = "";

        VersionSaveData localVersionData = ResourceInfoControl.getVersion();

        data.appVersion      = localVersionData.appVersion;
        data.resourceVersion = localVersionData.resourceVersion;

        ClientLoginCacheData loginCacheData = GameC.save.loadLoginCache();

        //游客平台,为自动绑定
        if (loginCacheData != null && loginCacheData.platform == PlatformType.Visitor && data.platform != PlatformType.Visitor)
        {
            data.visitorUID = loginCacheData.uid;
        }
    }
Esempio n. 4
0
        /** 写出版本 */
        private void writeVersion()
        {
            VersionSaveData  versionSaveData = _newVersion.createOriginalData();
            BytesWriteStream stream          = new BytesWriteStream();

            stream.writeVersion(ShineGlobal.versionInfoVersion);
            versionSaveData.writeBytes(stream);
            FileUtils.writeFileForBytesWriteStream(getTargetSourcePath() + "/" + ShineGlobal.versionInfoPath, stream);

            // XML vXml=new XML();
            // vXml.name="info";
            // vXml.setProperty("version",ShineToolSetting.bundlePackVersion);
            // FileUtils.writeFileForXML(ShineToolGlobal.clientBundleRecordPath,vXml);

            //发布包
            if (_isReleasePack)
            {
                EditorPrefs.SetString("AssetBundleWindow_version", _newVersion.version);

                stream.clear();
                stream.writeVersion(ShineGlobal.versionInfoVersion);
                _newVersion.writeBytes(stream);

                FileUtils.writeFileForBytesWriteStream(getTargetSavePath() + "/" + ShineGlobal.versionInfoPath, stream);

                VersionRecordData recordData = _newVersion.createRecordData();
                XML xml = recordData.writeXML();
                FileUtils.writeFileForXML(getTargetSavePath() + "/" + "versionRecord.xml", xml);

                Ctrl.print("已覆盖原记录,当前版本为:", _newVersion.version);
            }
        }
Esempio n. 5
0
    protected virtual void doSendGetVersion()
    {
        //本地版本数据
        VersionSaveData localVersionData = ResourceInfoControl.getVersion();

        //发送当前的本地版本
        ClientGetVersionHttpRequest.create(SystemControl.clientPlatform, localVersionData.resourceVersion).send();
    }
Esempio n. 6
0
    private void hotfixNext(ClientVersionData vData)
    {
        //读取cdn版本
        ResourceInfoControl.loadCDNVersion(vData.currentResourceVersion, sData =>
        {
            //计算更新量
            ResourceInfoControl.countNewVersionSize(sData, _versionRe);

            //只有配置
            if (_versionRe.isOnlyConfig)
            {
                ResourceInfoControl.mergeVersion(sData);
                doVersionNext(false, () =>
                {
                    if (GameC.main != null)
                    {
                        //热更配置
                        GameC.main.reloadConfig();
                        GameC.main.hotfixOver();
                    }
                });
            }
            //返回登录界面开始热更
            else
            {
                VersionSaveData localVersionData = ResourceInfoControl.getVersion();

                _downloadSize = StringUtils.toMBString(_versionRe.size);

                //需要强制更新
                if (localVersionData.resourceVersion < vData.leastResourceVersion)
                {
                    //更新资源选择,这里是在游戏内,必须弹窗确认
                    showAlert(Alert_GetNewResourceMust, () =>
                    {
                        doHotFix(sData);
                    }, exitGame);
                }
                else
                {
                    //更新资源选择,这里是在游戏内,必须弹窗确认
                    showAlert(Alert_GetNewResource, () => { doHotFix(sData); }, () =>
                    {
                        if (GameC.main != null)
                        {
                            GameC.main.hotfixOver();
                        }
                    });
                }
            }
        });
    }
Esempio n. 7
0
    /** 客户端版本更新(true:为不需要更新) */
    public bool clientHotfix(ClientVersionData vData)
    {
        if (ShineSetting.debugJumpResourceVersion || ShineSetting.localLoadWithOutBundle)
        {
            return(true);
        }

        //已处理过
        if (_versionData != null && vData != null && _versionData.currentResourceVersion >= vData.currentResourceVersion)
        {
            return(true);
        }

        VersionSaveData localVersionData = ResourceInfoControl.getVersion();

        if (vData == null)
        {
            Ctrl.log("离线游戏 或 服务器无此版本2");

            vData                   = new ClientVersionData();
            vData.version           = localVersionData.version;
            vData.currentAppVersion = localVersionData.appVersion;
            // _versionData.leastAppVersion=localVersionData.currentAppVersion;
            vData.currentResourceVersion = localVersionData.resourceVersion;
        }

        _versionData = vData;

        if (!ShineSetting.isRelease)
        {
            return(true);
        }
        else
        {
            //最低app版本不足
            if (localVersionData.appVersion < _versionData.leastAppVersion)
            {
                showAlert(Alert_GetNewAppMust, toGetNewApp, exitGame);
                return(false);
            }

            //有新的app
            if (localVersionData.appVersion < _versionData.currentAppVersion)
            {
                showAlert(Alert_GetNewApp, toGetNewApp, () => { hotfixNext(vData); });
                return(false);
            }

            hotfixNext(vData);
            return(false);
        }
    }
Esempio n. 8
0
    protected virtual void stepLoadResource()
    {
        if (ShineSetting.debugJumpResourceVersion || ShineSetting.localLoadWithOutBundle)
        {
            versionUpdateOver();
            return;
        }

        //本地版本数据
        VersionSaveData localVersionData = ResourceInfoControl.getVersion();

        //离线游戏 或 服务器无此版本
        if (_versionData == null)
        {
            Ctrl.log("离线游戏 或 服务器无此版本");

            _versionData                   = new ClientVersionData();
            _versionData.version           = localVersionData.version;
            _versionData.currentAppVersion = localVersionData.appVersion;
            // _versionData.leastAppVersion=localVersionData.currentAppVersion;
            _versionData.currentResourceVersion = localVersionData.resourceVersion;
            // _versionData.leastResourceVersion=localVersionData.leastResourceVersion;

            doVersionNext(true);
            return;
        }

        //最低app版本不足
        if (localVersionData.appVersion < _versionData.leastAppVersion && ShineSetting.isRelease)
        {
            showAlert(Alert_GetNewAppMust, toGetNewApp, exitGame);
            return;
        }

        //有新的app
        if (localVersionData.appVersion < _versionData.currentAppVersion && ShineSetting.isRelease)
        {
            showAlert(Alert_GetNewApp, toGetNewApp, () => { continueCurrentApp(localVersionData); });
            return;
        }

        continueCurrentApp(localVersionData);
    }
Esempio n. 9
0
    private void doHotFix(VersionSaveData sData)
    {
        _getVersionSended = false;

        if (GameC.main != null)
        {
            //回到登录界面
            GameC.main.backForHotfix();
        }

        //清空信息
        LoadControl.clearAllResource();
        LoadControl.clearResourceInfo();

        _stepTool.clearStates();
        _stepTool.completeStepPre(UpdateResource);

        ResourceInfoControl.mergeVersion(sData);
        doVersionNext(false);
    }
Esempio n. 10
0
        /** 创建原生数据 */
        public VersionSaveData createOriginalData()
        {
            VersionSaveData data = new VersionSaveData();

            data.appVersion      = appVersion;
            data.resourceVersion = resourceVersion;
            data.version         = version;
            data.isRelease       = isRelease;

            resourceDic.forEachValue(v =>
            {
                ResourceSaveData dd = new ResourceSaveData();
                dd.name             = v.name;
                dd.size             = v.size;
                dd.saveType         = v.saveType;
                dd.version          = v.version;
                dd.state            = ResourceSaveStateType.None;
                data.resourceDic.put(dd.name, dd);
            });

            return(data);
        }