Ejemplo n.º 1
0
        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
        }
Ejemplo n.º 2
0
 /// <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);
     }
 }
Ejemplo n.º 3
0
 internal void AddHotloopProcessor <T>(IHotloopProcessor processor) where T : BaseDataBlob
 {
     _hotloopProcessors.Add(typeof(T), processor);
 }