/// <summary>Initializes a new instance of the <see cref="RealTimeEventManager"/> class.</summary> /// <param name="config">The configuration to run with.</param> /// <param name="eventProvider">The city event provider implementation.</param> /// <param name="eventManager"> /// A proxy object that provides a way to call the game-specific methods of the <see cref="global::EventManager"/> class. /// </param> /// <param name="buildingManager"> /// A proxy object that provides a way to call the game-specific methods of the <see cref="global::BuildingManager"/> class. /// </param> /// <param name="randomizer"> /// An object that implements of the <see cref="IRandomizer"/> interface. /// </param> /// <param name="timeInfo">The time information source.</param> /// <exception cref="ArgumentNullException">Thrown when any argument is null.</exception> public RealTimeEventManager( RealTimeConfig config, ICityEventsProvider eventProvider, IEventManagerConnection eventManager, IBuildingManagerConnection buildingManager, IRandomizer randomizer, ITimeInfo timeInfo) { this.config = config ?? throw new ArgumentNullException(nameof(config)); this.eventProvider = eventProvider ?? throw new ArgumentNullException(nameof(eventProvider)); this.eventManager = eventManager ?? throw new ArgumentNullException(nameof(eventManager)); this.buildingManager = buildingManager ?? throw new ArgumentNullException(nameof(buildingManager)); this.randomizer = randomizer ?? throw new ArgumentNullException(nameof(randomizer)); this.timeInfo = timeInfo ?? throw new ArgumentNullException(nameof(timeInfo)); upcomingEvents = new LinkedList <ICityEvent>(); }
/// <summary>Initializes a new instance of the <see cref="RealTimeEventManager"/> class.</summary> /// <param name="config">The configuration to run with.</param> /// <param name="eventProvider">The city event provider implementation.</param> /// <param name="eventManager"> /// A proxy object that provides a way to call the game-specific methods of the <see cref="EventManager"/> class. /// </param> /// <param name="buildingManager"> /// A proxy object that provides a way to call the game-specific methods of the <see cref="BuildingManager"/> class. /// </param> /// <param name="randomizer"> /// An object that implements of the <see cref="IRandomizer"/> interface. /// </param> /// <param name="timeInfo">The time information source.</param> /// <param name="attendingTimeMargin">The time margin in hours specifying the maximum time before an event /// can be attended by the citizen.</param> /// <exception cref="ArgumentNullException">Thrown when any argument is null.</exception> public RealTimeEventManager( RealTimeConfig config, ICityEventsProvider eventProvider, IEventManagerConnection eventManager, IBuildingManagerConnection buildingManager, IRandomizer randomizer, ITimeInfo timeInfo, float attendingTimeMargin) { this.config = config ?? throw new ArgumentNullException(nameof(config)); this.eventProvider = eventProvider ?? throw new ArgumentNullException(nameof(eventProvider)); this.eventManager = eventManager ?? throw new ArgumentNullException(nameof(eventManager)); this.buildingManager = buildingManager ?? throw new ArgumentNullException(nameof(buildingManager)); this.randomizer = randomizer ?? throw new ArgumentNullException(nameof(randomizer)); this.timeInfo = timeInfo ?? throw new ArgumentNullException(nameof(timeInfo)); this.attendingTimeMargin = attendingTimeMargin; upcomingEvents = new LinkedList <ICityEvent>(); eventsCache = new List <ICityEvent>(); readonlyEventsCache = new ReadOnlyList <ICityEvent>(eventsCache); eventsToAttend = new List <ICityEvent>(); EventsToAttend = new ReadOnlyList <ICityEvent>(eventsToAttend); }