public void TurnBaseProcess_TwoPlayersOneByOne_TurnsAppliedOneByOne() { var entities = new EntityList(); var systems = new EntitySystemList(entities); systems.Add(new DumbPlayerSystem()); systems.Add(new TurnSelectorUpdateSystem()); systems.Add(new DumbGameLogicSystem()); systems.AddExecutionOrder <DumbPlayerSystem, TurnSelectorUpdateSystem>(); systems.AddExecutionOrder <TurnSelectorUpdateSystem, DumbGameLogicSystem>(); var player1 = new Entity("player1"); var player1Turn = player1.AddComponent <PlayerTurnComponent>(); player1Turn.TurnData = new TurnData(5); entities.Add(player1); var player2 = new Entity("player2"); var player2Turn = player2.AddComponent <PlayerTurnComponent>(); player2Turn.TurnData = new TurnData(7); entities.Add(player2); var gameRule = new Entity(); gameRule.AddComponent(new PlayerSwitcherComponent(PlayerSwitcherComponent.PlayerSwitchType.OneByOne, player1Turn, player2Turn)); gameRule.AddComponent(new ApplyTurnComponent()); var gameState = gameRule.AddComponent <DumbGameState>(); entities.Add(gameRule); entities.CommitChanges(); // Player 1 make turn, selector put turn to be applied, game logic apply turn systems.NotifyDoAction(TimeSpan.Zero); Assert.AreEqual(5, gameState.State.Data); // Player 2 enabled to make its turn systems.NotifyDoAction(TimeSpan.Zero); // Player 2 make turn, selector put turn to be applied, game logic apply turn systems.NotifyDoAction(TimeSpan.Zero); Assert.AreEqual(12, gameState.State.Data); // Player 1 enabled to make its turn systems.NotifyDoAction(TimeSpan.Zero); // Player 1 make turn, selector put turn to be applied, game logic apply turn systems.NotifyDoAction(TimeSpan.Zero); Assert.AreEqual(17, gameState.State.Data); // Player 2 enabled to make its turn systems.NotifyDoAction(TimeSpan.Zero); // Player 2 make turn, selector put turn to be applied, game logic apply turn systems.NotifyDoAction(TimeSpan.Zero); Assert.AreEqual(24, gameState.State.Data); }
public Scene() { this.Content = new GlobalContentManager(); this.Camera = new Camera(); this.entities = new EntityList(); this.entitySystems = new EntitySystemList(this.entities); this.Renderers = new RendererList(); this.renderProcessors = new RenderProcessorList(this); this.AddEntitySystem(new InputMouseUpdateSystem()); this.AddEntitySystem(new InputTouchUpdateSystem()); this.AddEntitySystem(new InputGamePadUpdateSystem()); this.AddEntitySystem(new InputKeyboardUpdateSystem()); this.AddEntitySystem(new InputVirtualUpdateSystem()); this.AddEntitySystem(new FollowCursorUpdateSystem(this)); this.AddEntitySystem(new CursorOverMouseSpriteUpdateSystem(this)); this.AddEntitySystem(new CursorOverTouchSpriteUpdateSystem()); this.AddEntitySystem(new ColorCyclerUpdateSystem()); this.AddEntitySystem(new FollowCameraUpdateSystem()); this.AddEntitySystem(new CameraShakeUpdateSystem()); this.AddEntitySystem(new MaterialEffectUpdateSystem()); this.AddEntitySystem(new AnimationSpriteUpdateSystem()); this.AddEntitySystem(new SpriteMeshGeneratorSystem()); this.AddEntitySystemExecutionOrder <InputMouseUpdateSystem, InputVirtualUpdateSystem>(); this.AddEntitySystemExecutionOrder <InputTouchUpdateSystem, InputVirtualUpdateSystem>(); this.AddEntitySystemExecutionOrder <InputGamePadUpdateSystem, InputVirtualUpdateSystem>(); this.AddEntitySystemExecutionOrder <InputKeyboardUpdateSystem, InputVirtualUpdateSystem>(); this.AddEntitySystemExecutionOrder <InputMouseUpdateSystem, FollowCursorUpdateSystem>(); this.AddEntitySystemExecutionOrder <InputTouchUpdateSystem, FollowCursorUpdateSystem>(); this.AddEntitySystemExecutionOrder <InputMouseUpdateSystem, CursorOverMouseSpriteUpdateSystem>(); this.AddEntitySystemExecutionOrder <InputTouchUpdateSystem, CursorOverTouchSpriteUpdateSystem>(); this.AddEntitySystemExecutionOrder <AnimationSpriteUpdateSystem, SpriteMeshGeneratorSystem>(); var renderCollectionUpdateSystem = new RenderCollectionUpdateSystem(); this.entitySystemsRender = new EntitySystemList(this.entities); this.entitySystemsRender.Add(renderCollectionUpdateSystem); this.AddRenderProcessor(new EntityRendererProcessor(false, this, renderCollectionUpdateSystem.Entities, -1)); this.AddRenderProcessor(new EntityRendererProcessor(true, this, renderCollectionUpdateSystem.Entities, int.MaxValue - 2)); this.AddRenderProcessor(new ScreenShotRenderProcessor(int.MaxValue - 1)); this.AddRenderProcessor(new FinalRenderRenderProcessor(Graphic.DefaultSamplerState, int.MaxValue)); // setup our resolution policy. we'll commit it in begin this.resolutionPolicy = defaultSceneResolutionPolicy; this.DesignResolutionSize = defaultDesignResolutionSize; }
public void BeforeFirstCommit_NoEntitiesHandled() { var entity = new Entity(); var component = new Component(); var system = new EntitySystems(); var entities = new EntityList(); var entitySystems = new EntitySystemList(entities); entities.Add(entity); entitySystems.Add(system); entity.AddComponent(component); entitySystems.NotifyDoAction(TimeSpan.Zero); Assert.AreEqual(0, system.Counter); }
public void NotifyDoAction_SubsystemDisableEntity_OtherSubsystemsShouldReceiveNotification() { var entity = new Entity(); var component = new Component(); var system = new EntitySystems(); var disabler = new DisablerSystem(); var entities = new EntityList(); var entitySystems = new EntitySystemList(entities); entities.Add(entity); entitySystems.Add(disabler); entitySystems.Add(system); entity.AddComponent(component); entities.CommitChanges(); entitySystems.NotifyDoAction(TimeSpan.Zero); Assert.AreEqual(11, system.Counter); }
public void DisableComponent_EntityRemovedFromSystem() { var entity = new Entity(); var component = new Component(); var system = new EntitySystems(); var entities = new EntityList(); var entitySystems = new EntitySystemList(entities); entities.Add(entity); entitySystems.Add(system); entity.AddComponent(component); entities.CommitChanges(); component.Enabled = false; entities.CommitChanges(); entitySystems.NotifyDoAction(TimeSpan.Zero); Assert.AreEqual(110, system.Counter); }
public void EnableEntity_EntityAddedToSystem() { var entity = new Entity(); var component = new Component(); var system = new EntitySystems(); var entities = new EntityList(); var entitySystems = new EntitySystemList(entities); entities.Add(entity); entitySystems.Add(system); entity.AddComponent(component); entity.Enabled = false; entities.CommitChanges(); entity.Enabled = true; entities.CommitChanges(); entitySystems.NotifyDoAction(TimeSpan.Zero); Assert.AreEqual(11, system.Counter); }
public void ComponentEnabled_WhenEntityDisabled_NoNotification() { var entity = new Entity(); var component = new Component(); var system = new EntitySystems(); var entities = new EntityList(); var entitySystems = new EntitySystemList(entities); entities.Add(entity); entitySystems.Add(system); entity.AddComponent(component); entity.Enabled = false; component.Enabled = false; entities.CommitChanges(); component.Enabled = true; entities.CommitChanges(); entitySystems.NotifyDoAction(TimeSpan.Zero); Assert.AreEqual(0, system.Counter); }