示例#1
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;
        }
    }
示例#2
0
    /// <summary>
    /// 是否数据一致
    /// </summary>
    protected override bool toDataEquals(BaseData data)
    {
        ClientLoginCacheData mData = (ClientLoginCacheData)data;

        if (this.uid != mData.uid)
        {
            return(false);
        }

        if (this.platform != mData.platform)
        {
            return(false);
        }

        if (this.areaID != mData.areaID)
        {
            return(false);
        }

        if (this.lastPlayerID != mData.lastPlayerID)
        {
            return(false);
        }

        if (this.serverBornCode != mData.serverBornCode)
        {
            return(false);
        }

        return(true);
    }
示例#3
0
 /** 清除登录数据(注销后调用) */
 public void clearLoginCache()
 {
     if (_loginData != null)
     {
         FileUtils.deleteFile(_loginDataPath);
         _loginData = null;
     }
 }
示例#4
0
    protected override void doStepInputUser(ClientLoginCacheData data, bool canOffline)
    {
        Ctrl.print("账号输入过程", data);
        // base.doStepInputUser(data,canOffline);
        // inputUserOver(createClientLoginData());

        HGameUI.login.show(data);
    }
示例#5
0
    /** 保存登录缓存数据 */
    private void saveLoginCache(ClientLoginCacheData data)
    {
        _loginData = data;
        BytesWriteStream stream = new BytesWriteStream();

        stream.writeVersion(ShineGlobal.loginDataVersion);
        data.writeBytesFull(stream);
        FileUtils.writeFileForBytesWriteStream(_loginDataPath, stream);
    }
示例#6
0
    /** 保存areaID */
    public void saveByAreaID(int areaID)
    {
        ClientLoginCacheData cacheData = loadLoginCache();

        if (cacheData == null)
        {
            Ctrl.throwError("此时不该没有登录数据");
            return;
        }

        cacheData.areaID = areaID;
        saveLoginCache(cacheData);
    }
示例#7
0
    public void saveByServerBornCode(int serverBornCode)
    {
        ClientLoginCacheData cacheData = loadLoginCache();

        if (cacheData == null)
        {
            Ctrl.throwError("此时不该没有登录数据");
            return;
        }

        cacheData.serverBornCode = serverBornCode;
        saveLoginCache(cacheData);
    }
示例#8
0
    /** 通过登录数据,保存缓存数据 */
    public void saveByLogin(ClientLoginData data)
    {
        if (_loginData == null)
        {
            _loginData = new ClientLoginCacheData();
            _loginData.serverBornCode = -1;          //没有的时候
        }

        _loginData.uid      = data.uid;
        _loginData.platform = data.platform;

        //保存本次登录数据
        saveLoginCache(_loginData);
    }
示例#9
0
    /** 绑定平台的存储 */
    public void saveByBindPlatform(string uid, string platform)
    {
        ClientLoginCacheData cacheData = loadLoginCache();

        if (cacheData == null)
        {
            Ctrl.throwError("此时不该没有登录数据");
            return;
        }

        cacheData.uid      = uid;
        cacheData.platform = platform;

        saveLoginCache(cacheData);
    }
示例#10
0
    /// <summary>
    /// 复制(潜拷贝)
    /// </summary>
    protected override void toShadowCopy(BaseData data)
    {
        if (!(data is ClientLoginCacheData))
        {
            return;
        }

        ClientLoginCacheData mData = (ClientLoginCacheData)data;

        this.uid            = mData.uid;
        this.platform       = mData.platform;
        this.areaID         = mData.areaID;
        this.lastPlayerID   = mData.lastPlayerID;
        this.serverBornCode = mData.serverBornCode;
    }
示例#11
0
    /** 登录离线数据 */
    public bool offlineLogin()
    {
        ClientLoginCacheData data = GameC.save.loadLoginCache();

        if (data == null)
        {
            Ctrl.errorLog("不能找不到缓存数据");
            return(false);
        }

        if (data.lastPlayerID <= 0)
        {
            Ctrl.errorLog("不该没有上次登录角色ID");
            return(false);
        }

        GameC.offline.loadPlayer(data.lastPlayerID);

        PlayerListData listData = GameC.offline.getListData();

        if (listData == null)
        {
            Ctrl.errorLog("找不到角色缓存数据,或角色数据失效");
            return(false);
        }

        GameC.player.readListData(listData);

        if (GameC.player.hasEmptyData())
        {
            Ctrl.errorLog("离线登录时,存在空数据");
            return(false);
        }

        //初始化离线数据
        initClient(listData, false);

        //先切换到预备游戏
        _stepTool.doStepAbs(PreGameStart);

        //不考虑有场景的情况,目前直接进入空场景
        GameC.scene.onEnterNoneScene();

        beginLoginHttp();

        return(true);
    }
示例#12
0
    protected override void onEnter()
    {
        base.onEnter();

        ClientLoginCacheData cacheData = (ClientLoginCacheData)_showArgs[0];

        if (cacheData == null)
        {
            setClickPageOpen(false);
            setLoginButtonsVisible(true);
        }
        else
        {
            setClickPageOpen(true);
            setLoginButtonsVisible(false);
        }
    }
示例#13
0
    /** 读取登录数据缓存 */
    public ClientLoginCacheData loadLoginCache()
    {
        if (_loginData != null)
        {
            return(_loginData);
        }

        BytesReadStream stream = FileUtils.readFileForBytesReadStream(_loginDataPath);

        if (stream != null && stream.checkVersion(ShineGlobal.loginDataVersion))
        {
            _loginData = new ClientLoginCacheData();
            _loginData.readBytesFull(stream);
            return(_loginData);
        }

        return(null);
    }
示例#14
0
    /** 用户账号输入过程 */
    protected virtual void stepInputUser()
    {
        if (CommonSetting.isSingleGame)
        {
            // doStepInputUser
            doStepInputUser(null, true);
        }
        else
        {
            //先读取历史信息
            ClientLoginCacheData cacheData = GameC.save.loadLoginCache();

            //读取数据
            if (cacheData != null)
            {
                uid      = cacheData.uid;
                platform = cacheData.platform;
                areaID   = cacheData.areaID;
            }

            bool hasCache = cacheData != null && CommonSetting.useOfflineGame && GameC.save.hasLastLoginPlayer();

            if (SystemControl.isNetOpen())
            {
                doStepInputUser(cacheData, hasCache);
            }
            else
            {
                if (CommonSetting.useOfflineGame)
                {
                    doStepInputUser(cacheData, hasCache);
                }
                else
                {
                    //TODO:此处暂时未做网络恢复的继续工作,如以后有需要就补上
                    GameC.ui.alert(TextEnum.NetNotOpen, exit);
                }
            }
        }
    }
示例#15
0
        protected override void doStepInputUser(ClientLoginCacheData data, bool canOffline)
        {
            if (!_g10)
            {
                _m10 = instance.Type.GetMethod("doStepInputUser", 2);
                _g10 = true;
            }

            if (_m10 != null && !_b10)
            {
                _b10   = true;
                _p2[0] = data;
                _p2[1] = canOffline;
                appdomain.Invoke(_m10, instance, _p2);
                _p2[0] = null;
                _p2[1] = null;
                _b10   = false;
            }
            else
            {
                base.doStepInputUser(data, canOffline);
            }
        }
示例#16
0
    /** 回复角色列表 */
    public void onRePlayerList(SList <PlayerLoginData> list, int serverBornCode)
    {
        if (!_running)
        {
            return;
        }

        Ctrl.log("回复角色列表", list.length());

        _playerList = list;

        ClientLoginCacheData loadLoginCache = GameC.save.loadLoginCache();

        bool serverChanged = loadLoginCache != null && loadLoginCache.serverBornCode != -1 && loadLoginCache.serverBornCode != serverBornCode;

        //保存出生码
        GameC.save.saveByServerBornCode(serverBornCode);

        //有数据
        if (CommonSetting.useOfflineGame && GameC.player.system.isOfflineRunning() && !_playerList.isEmpty())
        {
            stepPlayerLogin();
        }
        else
        {
            if (ShineSetting.openCheck)
            {
                if (_stepTool.isComplete(CheckCreatePlayer))
                {
                    Ctrl.errorLog("step不该已完成:CheckCreatePlayer");
                }
            }

            _stepTool.completeStepAbs(ConnectGame);
        }
    }
示例#17
0
    /** 获取缓存服务器生成码 */
    public int getCacheServerBornCode()
    {
        ClientLoginCacheData data = loadLoginCache();

        return(data != null ? data.serverBornCode : -1);
    }
示例#18
0
    /** 是否有上次登录的角色 */
    public bool hasLastLoginPlayer()
    {
        ClientLoginCacheData data = loadLoginCache();

        return(data != null && data.lastPlayerID > 0);
    }
示例#19
0
 /** 执行用户账号输入(data:上次的记录数据) */
 protected virtual void doStepInputUser(ClientLoginCacheData data, bool canOffline)
 {
     TimeDriver.instance.setTimeOut(inputUserOver, 100);
 }