5 using System.Collections.Generic;
19 private HashSet<Generator> generatorsWithTicket =
new HashSet<Generator>();
24 private List<Generator> generators =
new List<Generator>();
50 this.carsManager = carsManager;
51 this.transitionFunctionParameters = transitionFunctionParameters;
52 this.gpsRecordsManager = gpsRecordsManager;
59 internal void ProcessGenerators(TimeSpan currentModelTime)
63 List<Generator> generatorsNowWithoutTicket =
new List<Generator>();
67 foreach (
Generator generator
in generatorsWithTicket)
69 bool generatorNowWithoutTicket;
70 Car newCar = generator.GetNewCar(out generatorNowWithoutTicket, transitionFunctionParameters);
73 carsManager.AddNewCar(newCar, generator.ConnectedCell);
76 Point = generator.ConnectedCell.Location,
77 DirectionNormalizedVector = generator.ConnectedCell.NormalizedDirectionVector,
78 Time = currentModelTime,
79 CarHashCode = newCar.GetHashCode()
82 if (generatorNowWithoutTicket)
83 generatorsNowWithoutTicket.Add(generator);
86 generatorsNowWithoutTicket.ForEach(generatorNowWithoutTicket =>
87 generatorsWithTicket.Remove(generatorNowWithoutTicket));
96 internal void InitializeGeneratorForSimulation(
Generator generator,
97 List<ISimulationEventsGenerator> simulationEventsGenerators)
99 simulationEventsGenerators.Add(generator);
100 generators.Add(generator);
101 generator.WasZeroTicketsNowOneTicketIsAvailable += ZeroToOneTicketsInGenerator;
109 foreach (
Generator generator
in generators)
111 generator.WasZeroTicketsNowOneTicketIsAvailable -= ZeroToOneTicketsInGenerator;
122 private void ZeroToOneTicketsInGenerator(
object sender, EventArgs e)
124 generatorsWithTicket.Add(sender as
Generator);
130 internal void InitializeGenerators()
132 foreach (
Generator generator
in generators)
134 generator.InitializeTickets();
137 (generator as Sensor).LoadInputRecords();
145 internal void FinalizeGeneratorsWork()
147 generatorsWithTicket.Clear();
148 foreach (
Generator generator
in generators)
152 (generator as Sensor).SaveInputRecords();
Represents generator of cars.
Manages GPS records for cellular topology.
Class representing sensor.
Class containing parameters of transition function.
void DetachFromGeneratorEvents()
Detaches event handler ZeroToOneTicketsInGenerator from its publisher in generator.
Manages generators and sensors in topology.
Structure representing car's location in time.
Manages cars in cellular topology.