コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: Scene.cs プロジェクト: ApmeM/FloodItBot
        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;
        }
コード例 #3
0
ファイル: ComplextTest.cs プロジェクト: ApmeM/LocomotorECS
        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);
        }
コード例 #4
0
ファイル: ComplextTest.cs プロジェクト: ApmeM/LocomotorECS
        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);
        }
コード例 #5
0
ファイル: ComplextTest.cs プロジェクト: ApmeM/LocomotorECS
        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);
        }
コード例 #6
0
ファイル: ComplextTest.cs プロジェクト: ApmeM/LocomotorECS
        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);
        }
コード例 #7
0
ファイル: ComplextTest.cs プロジェクト: ApmeM/LocomotorECS
        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);
        }