server-master/srcs/_plugins/WingsEmu.Plugins.GameEvents/DataHolder/InstantBattleInstance.cs
2026-02-10 18:21:30 +01:00

49 lines
No EOL
1.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using WingsEmu.Game.GameEvent;
using WingsEmu.Game.GameEvent.Configuration;
using WingsEmu.Game.Maps;
using WingsEmu.Plugins.GameEvents.Configuration.InstantBattle;
namespace WingsEmu.Plugins.GameEvents.DataHolder
{
public class InstantBattleInstance : IGameEventInstance
{
public InstantBattleInstance(IMapInstance mapInstance, InstantBattleConfiguration configuration)
{
MapInstance = mapInstance;
InternalConfiguration = configuration;
ClosingTimeWarnings = configuration.TimeLeftWarnings.ToList();
AvailableWaves = configuration.Waves.Select(x => new InstantBattleInstanceWave(x)).ToList();
StartDate = DateTime.UtcNow;
DestroyDate = StartDate + configuration.ClosingTime;
}
public DateTime StartDate { get; }
public bool Finished { get; set; }
public List<TimeSpan> ClosingTimeWarnings { get; }
public List<InstantBattleInstanceWave> AvailableWaves { get; }
public InstantBattleConfiguration InternalConfiguration { get; }
public GameEventType GameEventType => GameEventType.InstantBattle;
public DateTime DestroyDate { get; set; }
public IMapInstance MapInstance { get; }
public IGameEventConfiguration Configuration => InternalConfiguration;
}
public class InstantBattleInstanceWave
{
public InstantBattleInstanceWave(InstantBattleWave configuration)
{
Configuration = configuration;
MonsterSpawn = DateTime.UtcNow;
}
public InstantBattleWave Configuration { get; }
public bool PreWaveLongWarningDone { get; set; }
public bool PreWaveSoonWarningDone { get; set; }
public bool StartedWave { get; set; }
public DateTime MonsterSpawn { get; set; }
}
}