/// <summary> /// Initializes a new instance of the <see cref="RealTimeTouristAI{TAI, TCitizen}"/> class. /// </summary> /// /// <param name="config">The configuration to run with.</param> /// <param name="connections">A <see cref="GameConnections{T}"/> instance that provides the game connection implementation.</param> /// <param name="touristAI">A connection to game's tourist AI.</param> /// <param name="eventManager">The custom event manager.</param> /// <param name="spareTimeBehavior">A behavior that provides simulation info for the citizens spare time.</param> /// /// <exception cref="ArgumentNullException">Thrown when any argument is null.</exception> public RealTimeTouristAI( RealTimeConfig config, GameConnections <TCitizen> connections, TouristAIConnection <TAI, TCitizen> touristAI, IRealTimeEventManager eventManager, ISpareTimeBehavior spareTimeBehavior) : base(config, connections, eventManager) { this.touristAI = touristAI ?? throw new ArgumentNullException(nameof(touristAI)); this.spareTimeBehavior = spareTimeBehavior ?? throw new ArgumentNullException(nameof(spareTimeBehavior)); }
/// <summary>Initializes a new instance of the <see cref="RealTimeResidentAI{TAI, TCitizen}"/> class.</summary> /// <exception cref="ArgumentNullException">Thrown when any argument is null.</exception> /// <param name="config">A <see cref="RealTimeConfig"/> instance containing the mod's configuration.</param> /// <param name="connections">A <see cref="GameConnections{T}"/> instance that provides the game connection implementation.</param> /// <param name="residentAI">A connection to the game's resident AI.</param> /// <param name="eventManager">An <see cref="IRealTimeEventManager"/> instance.</param> /// <param name="buildingAI">The custom building AI.</param> /// <param name="workBehavior">A behavior that provides simulation info for the citizens work time.</param> /// <param name="spareTimeBehavior">A behavior that provides simulation info for the citizens spare time.</param> /// <param name="travelBehavior">A behavior that provides simulation info for the citizens traveling.</param> public RealTimeResidentAI( RealTimeConfig config, GameConnections <TCitizen> connections, ResidentAIConnection <TAI, TCitizen> residentAI, IRealTimeEventManager eventManager, IRealTimeBuildingAI buildingAI, IWorkBehavior workBehavior, ISpareTimeBehavior spareTimeBehavior, ITravelBehavior travelBehavior) : base(config, connections, eventManager) { this.residentAI = residentAI ?? throw new ArgumentNullException(nameof(residentAI)); this.buildingAI = buildingAI ?? throw new ArgumentNullException(nameof(buildingAI)); this.workBehavior = workBehavior ?? throw new ArgumentNullException(nameof(workBehavior)); this.spareTimeBehavior = spareTimeBehavior ?? throw new ArgumentNullException(nameof(spareTimeBehavior)); this.travelBehavior = travelBehavior ?? throw new ArgumentNullException(nameof(travelBehavior)); residentSchedules = new CitizenSchedule[CitizenMgr.GetMaxCitizensCount()]; }