/// <summary> /// Initializes a new instance of the <see cref="RealTimeHumanAIBase{TCitizen}"/> class. /// </summary> /// /// <exception cref="ArgumentNullException">Thrown when any argument is null.</exception> /// /// <param name="config">A configuration to use with this custom logic.</param> /// <param name="connections">An object providing the proxies that connect the method calls to the game methods.</param> /// <param name="eventManager">A reference to an <see cref="IRealTimeEventManager"/> instance.</param> protected RealTimeHumanAIBase(RealTimeConfig config, GameConnections <TCitizen> connections, IRealTimeEventManager eventManager) { Config = config ?? throw new ArgumentNullException(nameof(config)); EventMgr = eventManager ?? throw new ArgumentNullException(nameof(eventManager)); if (connections == null) { throw new ArgumentNullException(nameof(connections)); } CitizenMgr = connections.CitizenManager; BuildingMgr = connections.BuildingManager; TransferMgr = connections.TransferManager; CitizenProxy = connections.CitizenConnection; TimeInfo = connections.TimeInfo; Random = connections.Random; WeatherInfo = connections.WeatherInfo; CitizenInstancesMaxCount = CitizenMgr.GetMaxInstancesCount(); }