초기커밋
This commit is contained in:
89
GameServer/Global/SeasonPass/SeasonPassManager.cs
Normal file
89
GameServer/Global/SeasonPass/SeasonPassManager.cs
Normal file
@@ -0,0 +1,89 @@
|
||||
using MetaAssets;
|
||||
using ServerCommon;
|
||||
using ServerCore; using ServerBase;
|
||||
using META_ID = System.UInt32;
|
||||
|
||||
namespace GameServer
|
||||
{
|
||||
public class SeasonPassManager : EntityBase
|
||||
{
|
||||
private List<SeasonPassMetaData> seasonPassList = new();
|
||||
public META_ID currentSeasonPass { get; private set; } = 0;
|
||||
|
||||
public SeasonPassManager()
|
||||
: base(EntityType.SeasonPassManager)
|
||||
{
|
||||
}
|
||||
|
||||
public Result Init()
|
||||
{
|
||||
var result = new Result();
|
||||
|
||||
var current_time = DateTimeHelper.Current;
|
||||
|
||||
var season_pass_meta_datas = MetaData.Instance.SeasonPassMetaData;
|
||||
int new_season_pass_metaid = 0;
|
||||
|
||||
foreach (var meta_data in season_pass_meta_datas)
|
||||
{
|
||||
if (meta_data.Value.EndTime < current_time)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
seasonPassList.Add(meta_data.Value);
|
||||
|
||||
if (new_season_pass_metaid == 0 && meta_data.Value.StartTime < current_time && meta_data.Value.EndTime > current_time)
|
||||
{
|
||||
new_season_pass_metaid = meta_data.Value.Id;
|
||||
}
|
||||
}
|
||||
|
||||
currentSeasonPass = (META_ID)new_season_pass_metaid;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private META_ID getNewSeasonPassId()
|
||||
{
|
||||
var current_time = DateTimeHelper.Current;
|
||||
|
||||
int new_season_pass_metaid = 0;
|
||||
|
||||
var to_remove_season_passs_meta_datas = new List<SeasonPassMetaData>();
|
||||
|
||||
foreach (var meta_data in seasonPassList)
|
||||
{
|
||||
if (meta_data.EndTime < current_time)
|
||||
{
|
||||
to_remove_season_passs_meta_datas.Remove(meta_data);
|
||||
}
|
||||
|
||||
if (new_season_pass_metaid == 0 && meta_data.StartTime < current_time && meta_data.EndTime > current_time)
|
||||
{
|
||||
new_season_pass_metaid = meta_data.Id;
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var meta_data in to_remove_season_passs_meta_datas)
|
||||
{
|
||||
seasonPassList.Remove(meta_data);
|
||||
}
|
||||
|
||||
return (META_ID)new_season_pass_metaid;
|
||||
}
|
||||
|
||||
public (bool,META_ID) updateNewSeason()
|
||||
{
|
||||
META_ID old_season_pass = currentSeasonPass;
|
||||
currentSeasonPass = getNewSeasonPassId();
|
||||
|
||||
if(old_season_pass != currentSeasonPass)
|
||||
{
|
||||
return (true, currentSeasonPass);
|
||||
}
|
||||
|
||||
return (false, currentSeasonPass);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user