| | |
| | | public int realmExpTime { get; private set; }
|
| | | public long startExp { get; private set; }
|
| | |
|
| | | public uint buffAddRate { get; private set; }
|
| | | public uint buffSeconds { get; private set; }
|
| | | public DateTime buffStartTime { get; private set; }
|
| | |
|
| | | public long totalExp
|
| | | {
|
| | | get
|
| | | {
|
| | | var exp = startExp;
|
| | | float exp = startExp;
|
| | | var tick = (TimeUtility.ServerNow - expStartTime).Ticks;
|
| | | var singleTick = realmExpTime * TimeSpan.TicksPerSecond;
|
| | | var times = tick / singleTick;
|
| | |
|
| | | float expRate = 0;
|
| | | var config = RealmConfig.Get(PlayerDatas.Instance.baseData.realmLevel);
|
| | | if (config != null && config.expRate != 0)
|
| | | if (config != null)
|
| | | {
|
| | | exp = times * config.expRate + startExp;
|
| | | exp = exp > config.expLimit ? config.expLimit : exp;
|
| | | expRate = config.expRate;
|
| | | }
|
| | |
|
| | | return exp;
|
| | | }
|
| | | }
|
| | |
|
| | | public long exp
|
| | | {
|
| | | get
|
| | | {
|
| | | var exp = startExp;
|
| | | var tick = (TimeUtility.ServerNow - expStartTime).Ticks;
|
| | | var singleTick = realmExpTime * TimeSpan.TicksPerSecond;
|
| | | var times = (float)tick / singleTick;
|
| | |
|
| | | var config = RealmConfig.Get(PlayerDatas.Instance.baseData.realmLevel);
|
| | | if (config != null && config.expRate != 0)
|
| | | for (int i = 1; i <= times; i++)
|
| | | {
|
| | | exp = (long)(times * config.expRate) + startExp;
|
| | | exp = exp > config.expLimit ? config.expLimit : exp;
|
| | | var time = expStartTime.AddTicks(i * realmExpTime * TimeSpan.TicksPerSecond);
|
| | | if (IsBuffActive(time))
|
| | | {
|
| | | var rate = expRate + expRate * (buffAddRate / 10000f);
|
| | | exp += rate;
|
| | | }
|
| | | else
|
| | | {
|
| | | exp += expRate;
|
| | | }
|
| | | }
|
| | | return exp;
|
| | |
|
| | | exp = exp > config.expLimit ? config.expLimit : exp;
|
| | | return (long)exp;
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | expStartTime = DateTime.Now;
|
| | | startExp = 0;
|
| | | serverInited = false;
|
| | | buffSeconds = 0;
|
| | | buffAddRate = 0;
|
| | | SysNotifyMgr.Instance.OnSystemNotifyEvent -= OnSystemNotifyEvent;
|
| | | }
|
| | |
|
| | |
| | | return false;
|
| | | }
|
| | |
|
| | | public bool IsBuffActive(DateTime time)
|
| | | {
|
| | | return buffSeconds > 0
|
| | | && buffStartTime.AddTicks(TimeSpan.TicksPerSecond * buffSeconds) > time;
|
| | | }
|
| | |
|
| | | public int GetRealmStage(int realmLevel)
|
| | | {
|
| | | if (realmLevel == 0)
|
| | |
| | | if (FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Realm))
|
| | | {
|
| | | var realmLevel = PlayerDatas.Instance.baseData.realmLevel;
|
| | | if (realmLevel >= realmPoolOpenLevel)
|
| | | var config = RealmConfig.Get(realmLevel);
|
| | | if (realmLevel >= realmPoolOpenLevel && config.expRate != 0)
|
| | | {
|
| | | var config = RealmConfig.Get(realmLevel);
|
| | | if (exp < config.expLimit)
|
| | | if (totalExp < config.expLimit)
|
| | | {
|
| | | remainTime = realmExpTime * ((config.expLimit - exp) / (float)config.expRate);
|
| | | float surplusExp = config.expLimit - totalExp;
|
| | | if (buffSeconds > 0)
|
| | | {
|
| | | var expRate = config.expRate + config.expRate * (buffAddRate / 10000f);
|
| | | var times = buffSeconds / realmExpTime;
|
| | | if (times * expRate >= surplusExp)
|
| | | {
|
| | | remainTime = Mathf.CeilToInt(surplusExp / expRate) * realmExpTime;
|
| | | surplusExp = 0;
|
| | | }
|
| | | else
|
| | | {
|
| | | remainTime = times * realmExpTime;
|
| | | surplusExp = surplusExp - times * expRate;
|
| | | }
|
| | | }
|
| | | if (surplusExp > 0)
|
| | | {
|
| | | remainTime += Mathf.CeilToInt(surplusExp / config.expRate) * realmExpTime;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | | {
|
| | | expStartTime = TimeUtility.GetTime(package.BeginTime);
|
| | | startExp = (long)package.CurExpPoint * Constants.ExpPointValue + package.CurExp;
|
| | | buffAddRate = package.BuffAddRate;
|
| | | buffSeconds = package.BuffTime;
|
| | | buffStartTime = TimeUtility.ServerNow;
|
| | | if (realmExpRefresh != null)
|
| | | {
|
| | | realmExpRefresh();
|