private void CreateProcessors(Game game) { /* * AddHotloopProcessor<EntityResearchDB>(new ResearchProcessor(game.StaticData)); * AddHotloopProcessor<MiningDB>(new MineResourcesProcessor(_staticData)); * AddHotloopProcessor<RefineAbilityDB>(new RefineResourcesProcessor(_staticData.ProcessedMaterials)); * AddHotloopProcessor<ConstructAbilityDB>(new ConstructEntitiesProcessor()); * AddHotloopProcessor<PropulsionDB>(new ShipMovement()); * AddHotloopProcessor<OrbitDB>(new OrbitProcessor()); * AddHotloopProcessor<NewtonBalisticDB>(new NewtonBalisticProcessor()); * AddHotloopProcessor<OrderableDB>(new OrderableProcessor(game)); * AddHotloopProcessor<TranslateMoveDB>(new TranslateMoveProcessor()); * //AddHotloopProcessor<SensorProfileDB>(new SetReflectedEMProfile()); */ var hotloopTypes = GetDerivedTypesFor(typeof(IHotloopProcessor)); foreach (var hotloopType in hotloopTypes) { IHotloopProcessor processor = (IHotloopProcessor)Activator.CreateInstance(hotloopType); processor.Init(game); Type type = processor.GetParameterType; _hotloopProcessors.Add(type, processor); } var instanceTypes = GetDerivedTypesFor(typeof(IInstanceProcessor)); foreach (var itemType in instanceTypes) { IInstanceProcessor processor = (IInstanceProcessor)Activator.CreateInstance(itemType); _instanceProcessors.Add(processor.TypeName, processor); } ///AddRecalcProcessor }
/// <summary> /// this type of interupt will attempt to run the action processor on all entities within the system /// </summary> /// <param name="nextDateTime"></param> /// <param name="action"></param> internal void AddSystemInterupt(DateTime nextDateTime, IHotloopProcessor actionProcessor) { if (!QueuedProcesses.ContainsKey(nextDateTime)) { QueuedProcesses.Add(nextDateTime, new ProcessSet()); } if (!QueuedProcesses[nextDateTime].SystemProcessors.Contains(actionProcessor)) { QueuedProcesses[nextDateTime].SystemProcessors.Add(actionProcessor); } }
internal void AddHotloopProcessor <T>(IHotloopProcessor processor) where T : BaseDataBlob { _hotloopProcessors.Add(typeof(T), processor); }