예제 #1
0
        public void CheckHeroValidTimer(long curTime)
        {
            //通知客户端 英雄过期
            GSToGC.NotifyGoodsExpired sMsg = new GSToGC.NotifyGoodsExpired();
            List <uint> expired            = new List <uint>();

            foreach (KeyValuePair <uint, UserHeroDBData> kv in this.userDbData.heroListMap)
            {
                UserHeroDBData pData = kv.Value;
                if (pData.endTime == Consts.PERSIST_TIME_ALWAYS)
                {
                    continue;
                }
                if (pData.buyTime + pData.endTime < curTime)
                {
                    sMsg.Commondityid.Add(( int )pData.un32HeroID);
                    expired.Add(kv.Key);
                    //todo
                    //CCSUserDbDataMgr::GetDelUserDbHerosSql( GetGUID(), pData.un32HeroID, expireSql );
                }
            }

            int count = expired.Count;

            for (int i = 0; i < count; i++)
            {
                this.userDbData.heroListMap.Remove(expired[i]);
            }

            this.PostMsgToGC(sMsg, ( int )GSToGC.MsgID.EMsgToGcfromBsNotifyGoodsExpired);

            //通知从数据库删除
            //todo
            //CS.instance.userMgr.PostUserCacheMsgToDBThread( GetGUID(), expireSql );
        }
예제 #2
0
 public void AddHero(UserHeroDBData db)
 {
     this.userDbData.heroListMap.Add(db.un32HeroID, db);
     //todo
     //将英雄加入数据库!
     //string sql;
     //CCSUserDbDataMgr::GetNewUserDbHerosData( m_sUserDBData.sPODUsrDBData.un64ObjIdx, db, sql );
     //GetCSUserMgrInstance()->PostUserCacheMsgToDBThread( GetGUID(), sql );
 }
예제 #3
0
        private ErrorCode SynHandleQueryUserCallback(GBuffer buffer)
        {
            DBToCS.QueryUser msg = new DBToCS.QueryUser();
            msg.MergeFrom(buffer.GetBuffer(), 0, ( int )buffer.length);

            GCToCS.Login login = new GCToCS.Login();
            login.MergeFrom(ByteString.CopyFromUtf8(msg.Login));

            UserNetInfo netInfo = new UserNetInfo(msg.Gsid, ( uint )msg.Gcnetid);

            if (this.ContainsUser(netInfo))
            {
                Logger.Warn("invalid netInfo");
                return(ErrorCode.InvalidNetState);
            }

            UserDBData userDbData;

            using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(msg.Db)))
            {
                userDbData = Serializer.Deserialize <UserDBData>(ms);
            }

            CSUser user = this.GetUser(userDbData.usrDBData.un64ObjIdx);

            if (null != user)
            {
                user.OnOnline(netInfo, login, false, false);
                return(ErrorCode.Success);
            }

            user = new CSUser();

            userDbData.szUserName             = login.Name;
            userDbData.szUserPwd              = login.Passwd;
            userDbData.szNickName             = msg.Nickname;
            userDbData.usrDBData.userPlatform = ( UserPlatform )login.Sdk;
            userDbData.szTaskData             = msg.TaskData;

            bool newUser = userDbData.usrDBData.tRegisteUTCMillisec < 1;

            user.LoadDBData(userDbData);
            user.userDbData.guideSteps.szCSContinueGuide = msg.Guidestr;

            for (int i = 0; i < msg.Rsinfo.Count; i++)
            {
                user.LoadUserSNSList(msg.Rsinfo[i]);
            }

            for (int i = 0; i < msg.ItemInfo.Count; i++)
            {
                user.AddUserItems(msg.ItemInfo[i]);
            }

            for (int i = 0; i < msg.MailInfo.Count; ++i)
            {
                CS.instance.mailMgr.UpdatePerMailList(msg.MailInfo[i].Mailid, userDbData.usrDBData.un64ObjIdx, ( MailCurtState )msg.MailInfo[i].State);
            }

            //todo
            //user.GetUserBattleInfoEx().mDebugName = pLogin.Name;

            if (!newUser)
            {
                long curTime = TimeUtils.utcTime;
                for (int i = 0; i < msg.Herocfg.Count; ++i)
                {
                    DBToCS.HeroCfg heroCfg = msg.Herocfg[i];
                    if (heroCfg.Expiredtime != Consts.PERSIST_TIME_ALWAYS && heroCfg.Expiredtime < curTime)
                    {
                        continue;
                    }

                    UserHeroDBData userHeroDbData = new UserHeroDBData(heroCfg.Commodityid, heroCfg.Expiredtime, heroCfg.Buytime);
                    user.AddHero(userHeroDbData);
                }
                for (int i = 0; i < msg.Runeinfo.Count; ++i)
                {
                    DBToCS.RuneInfo runeInfo = msg.Runeinfo[i];
                    user.InitRunes(runeInfo.BagStr, runeInfo.SlotStr);
                }
            }

            ErrorCode errorCode = this.AddUser(user);

            if (errorCode != ErrorCode.Success)
            {
                return(errorCode);
            }

            user.OnOnline(netInfo, login, newUser, true);
            return(ErrorCode.Success);
        }