public static EndTurnEvent alloc(TurnTimeline p_turnTimeline, EventQueue p_entityTurnActionQueue, Entity p_entity) { EndTurnEvent l_instance = new EndTurnEvent(); l_instance.TurnTimeline = p_turnTimeline; l_instance.EntityActionQueue = p_entityTurnActionQueue; l_instance.Entity = p_entity; return(l_instance); }
public override void Execute(EventQueue p_eventQueue) { Entity l_nextTurnEntity = TurnTimelineAlgorithm.IncrementTimeline(TurnTimeline); if (l_nextTurnEntity != null) { ActionPoint.resetActionPoints(EntityComponent.get_component <ActionPoint>(l_nextTurnEntity)); MyEvent <Entity> .broadcast(ref l_nextTurnEntity.OnEntityTurnStart, ref l_nextTurnEntity); // We wait for the EntityActionQueue to finish. EventQueue.enqueueEvent(p_eventQueue, IterateAndWaitForEmptyQueue.alloc(EntityActionQueue)); // We enqueue an EndTurnEvent to trigger end turn related events. The EndTurnEvent will enqueue another StartTurnEvent on completion. EventQueue.enqueueEvent(p_eventQueue, EndTurnEvent.alloc(TurnTimeline, EntityActionQueue, l_nextTurnEntity)); EventQueue.clearAll(EntityActionQueue); EventQueue.enqueueEvent(EntityActionQueue, EntityTurnIterationEvent.alloc(l_nextTurnEntity)); } }