internal static void DoAction(PulseActionEnum action, Game game, SystemEntityJumpPair jumpPair) { _jumpPair = jumpPair; _game = game; EnumProcessorMap[action].DynamicInvoke(game, jumpPair); }
internal static void DoAction(PulseActionEnum action, EntityManager manager, Entity entity) { _currentManager = manager; _currentEntity = entity; EnumProcessorMap[action].DynamicInvoke(entity); }
/// <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, PulseActionEnum action) { if (!EntityDictionary.ContainsKey(nextDateTime)) { EntityDictionary.Add(nextDateTime, new Dictionary <PulseActionEnum, List <Entity> >()); } if (!EntityDictionary[nextDateTime].ContainsKey(action)) { EntityDictionary[nextDateTime].Add(action, new List <Entity>()); //null); } }
/// <summary> /// adds a system(non pausing) interupt, causing this system to process an entity with a given processor on a specific datetime /// </summary> /// <param name="nextDateTime"></param> /// <param name="action"></param> /// <param name="entity"></param> internal void AddEntityInterupt(DateTime nextDateTime, PulseActionEnum action, Entity entity) { if (!EntityDictionary.ContainsKey(nextDateTime)) { EntityDictionary.Add(nextDateTime, new Dictionary <PulseActionEnum, List <Entity> >()); } if (!EntityDictionary[nextDateTime].ContainsKey(action)) { EntityDictionary[nextDateTime].Add(action, new List <Entity>()); } EntityDictionary[nextDateTime][action].Add(entity); }
/// <summary> /// Adds an interupt where systems are interacting (ie an entity jumping between systems) /// this forces all systems to synch at this datetime. /// </summary> /// <param name="datetime"></param> /// <param name="action"></param> /// <param name="jumpPair"></param> internal void AddSystemInteractionInterupt(DateTime datetime, PulseActionEnum action, SystemEntityJumpPair jumpPair) { if (!EntityDictionary.ContainsKey(datetime)) { EntityDictionary.Add(datetime, new Dictionary <PulseActionEnum, List <SystemEntityJumpPair> >()); } if (!EntityDictionary[datetime].ContainsKey(action)) { EntityDictionary[datetime].Add(action, new List <SystemEntityJumpPair>()); } EntityDictionary[datetime][action].Add(jumpPair); }