예제 #1
0
 public WaitForSubmissionEnumerator(IEntityFunctions entityFunctions, IEntityFactory entityFactory,
                                    IEntitiesDB entitiesDb)
 {
     _entityFactory   = entityFactory;
     _entityFunctions = entityFunctions;
     _entitiesDB      = entitiesDb;
 }
예제 #2
0
 void SwapMinNeededForException(IEntityFunctions entityFunctions)
 {
     entityFunctions.SwapEntityGroup <TestDescriptorEntityView>(18, group1, group2);
     entityFunctions.SwapEntityGroup <TestDescriptorEntityView>(19, group1, group2);
     entityFunctions.SwapEntityGroup <TestDescriptorEntityView>(20, group1, group2);
     entityFunctions.SwapEntityGroup <TestDescriptorEntityView>(21, group1, group2);
     entityFunctions.SwapEntityGroup <TestDescriptorEntityView>(22, group1, group2);
     entityFunctions.SwapEntityGroup <TestDescriptorEntityView>(17, group1, group2);
     entityFunctions.SwapEntityGroup <TestDescriptorEntityView>(16, group1, group2);
     entityFunctions.SwapEntityGroup <TestDescriptorEntityView>(15, group1, group2);
     entityFunctions.SwapEntityGroup <TestDescriptorEntityView>(14, group1, group2);
     entityFunctions.SwapEntityGroup <TestDescriptorEntityView>(13, group1, group2);
     entityFunctions.SwapEntityGroup <TestDescriptorEntityView>(11, group1, group2);
     entityFunctions.SwapEntityGroup <TestDescriptorEntityView>(9, group1, group2);
     entityFunctions.SwapEntityGroup <TestDescriptorEntityView>(6, group1, group2);
     entityFunctions.SwapEntityGroup <TestDescriptorEntityView>(5, group1, group2);
     entityFunctions.SwapEntityGroup <TestDescriptorEntityView>(4, group1, group2);
     entityFunctions.SwapEntityGroup <TestDescriptorEntityView>(3, group1, group2);
     entityFunctions.SwapEntityGroup <TestDescriptorEntityView>(2, group1, group2);
     entityFunctions.SwapEntityGroup <TestDescriptorEntityView>(0, group1, group2);
     entityFunctions.SwapEntityGroup <TestDescriptorEntityView>(24, group1, group2);
     entityFunctions.SwapEntityGroup <TestDescriptorEntityView>(25, group1, group2);
     entityFunctions.SwapEntityGroup <TestDescriptorEntityView>(26, group1, group2);
     entityFunctions.SwapEntityGroup <TestDescriptorEntityView>(27, group1, group2);
     entityFunctions.SwapEntityGroup <TestDescriptorEntityView>(28, group1, group2);
     entityFunctions.SwapEntityGroup <TestDescriptorEntityView>(23, group1, group2);
     entityFunctions.SwapEntityGroup <TestDescriptorEntityView>(8, group1, group2);
     entityFunctions.SwapEntityGroup <TestDescriptorEntityView>(7, group1, group2);
     entityFunctions.SwapEntityGroup <TestDescriptorEntityView>(1, group1, group2);
     entityFunctions.SwapEntityGroup <TestDescriptorEntityView>(12, group1, group2);
     entityFunctions.SwapEntityGroup <TestDescriptorEntityView>(10, group1, group2);
 }
예제 #3
0
 public ValidateDisplayGUIInputEngine(IServiceRequestsFactory serviceFactory,
                                      IEntityStreamConsumerFactory buttonEntityConsumer, IEntityFunctions entitiesFunction)
 {
     _serviceFactory       = serviceFactory;
     _buttonEntityConsumer = buttonEntityConsumer;
     _entitiesFunction     = entitiesFunction;
 }
예제 #4
0
 public EnemyAnimationEngine(ITime time, EnemyDeathSequencer enemyDeadSequencer,
                             IEntityFunctions entityFunctions)
 {
     _time = time;
     _enemyDeadSequencer = enemyDeadSequencer;
     _entityFunctions    = entityFunctions;
 }
        public ClientPlayerSpawnerEngine(IClientFactory clientPlayerFactory,
                                         IEntityFunctions entityFunctions)
        {
            _entityFunctions = entityFunctions;
            _clientFactory   = clientPlayerFactory;
//            num = 1;
            num = PhotonNetwork.room.playerCount;
        }
예제 #6
0
        public void Init()
        {
            _simpleSubmissionEntityViewScheduler = new SimpleEntitiesSubmissionScheduler();
            _enginesRoot = new EnginesRoot(_simpleSubmissionEntityViewScheduler);

            _entityFactory   = _enginesRoot.GenerateEntityFactory();
            _entityFunctions = _enginesRoot.GenerateEntityFunctions();
        }
예제 #7
0
        private void SetupEnginesAndEntities()
        {
            _EnginesRoot   = new EnginesRoot(new UnitySumbmissionEntityViewScheduler());
            _EntityFactory = _EnginesRoot.GenerateEntityFactory();
            IEntityFunctions  entityFunctions   = _EnginesRoot.GenerateEntityFunctions();
            GameObjectFactory gameObjectFactory = new GameObjectFactory();

            Sequencer damageSequence = new Sequencer();
            Sequencer roundSequence  = new Sequencer();

            ITime time = new Time();

            //Construct Tank(Player) engines
            TankSpawnerEngine  tankSpawnerEngine  = new TankSpawnerEngine(gameObjectFactory, _EntityFactory);
            TankMovementEngine tankMovementEngine = new TankMovementEngine(time);
            TankHudEngine      tankHudEngine      = new TankHudEngine();
            HealthEngine       healthEngine       = new HealthEngine(damageSequence);

            //Construct Weapon engines
            ShellSpawnerEngine shellSpawnerEngine = new ShellSpawnerEngine(gameObjectFactory, _EntityFactory, time);
            ShellDamageEngine  shellDamageEngine  = new ShellDamageEngine(damageSequence);

            //Construct Camera engines
            CameraEngine cameraEngine = new CameraEngine(time);

            //Add tanks engines
            _EnginesRoot.AddEngine(tankSpawnerEngine);
            _EnginesRoot.AddEngine(new TankInputEngine());
            _EnginesRoot.AddEngine(tankMovementEngine);
            _EnginesRoot.AddEngine(new TankMovementEffectsEngine());
            _EnginesRoot.AddEngine(tankHudEngine);
            _EnginesRoot.AddEngine(healthEngine);

            //Add weapon engines
            _EnginesRoot.AddEngine(new TankShootingEngine());
            _EnginesRoot.AddEngine(shellSpawnerEngine);
            _EnginesRoot.AddEngine(shellDamageEngine);

            //Add camera engines
            _EnginesRoot.AddEngine(cameraEngine);

            damageSequence.SetSequence(
                new Steps
            {
                { shellDamageEngine,
                  new To {
                      new IStep[] { healthEngine }
                  } },
                { healthEngine,
                  new To {
                      { (int)DamageCondition.DAMAGE,
                            new IStep[] { tankHudEngine } },
                      { (int)DamageCondition.DEAD,
                            new IStep[] { tankMovementEngine } }
                  } }
            }
                );
        }
 public CoinSpawningEngine(uint seed, CoinDefinition coinDefinition, IEntityFactory entityFactory, GameObjectFactory gameObjectFactory, IEntityFunctions functions, ITime time)
 {
     _entityFactory     = entityFactory;
     _gameObjectFactory = gameObjectFactory;
     _functions         = functions;
     _coinDefinition    = coinDefinition;
     _time   = time;
     _random = new Random(seed);
 }
예제 #9
0
    public void Init()
    {
        _scheduler   = new SimpleEntitiesSubmissionScheduler();
        _enginesRoot = new EnginesRoot(_scheduler);
        _factory     = _enginesRoot.GenerateEntityFactory();
        _functions   = _enginesRoot.GenerateEntityFunctions();
        _engine      = new TestEngine();

        _enginesRoot.AddEngine(_engine);
    }
예제 #10
0
        private void BootstrapEnginesRoot()
        {
            var scheduler = new MonoGameNezUpdateScheduler();

            registerGlobalManager(scheduler.scheduler);
            gameEnginesRoot = new EnginesRoot(scheduler);


            gameEngineEntityFactory   = gameEnginesRoot.GenerateEntityFactory();
            gameEngineEntityFunctions = gameEnginesRoot.GenerateEntityFunctions();
        }
예제 #11
0
 public EnemyDeathEngine(IEntityFunctions entityFunctions, IEntityStreamConsumerFactory consumerFactory,
                         ITime time, WaitForSubmissionEnumerator waitForSubmission)
 {
     _entityFunctions   = entityFunctions;
     _consumerFactory   = consumerFactory;
     _time              = time;
     _waitForSubmission = waitForSubmission;
     _animations        = new FasterList <IEnumerator>();
     _consumer          = _consumerFactory.GenerateConsumer <DeathComponent>(
         ECSGroups.EnemiesGroup, "EnemyDeathEngine", 10);
 }
예제 #12
0
 public ShipSpawningEngine(uint seed, IEntityFactory entityFactory, IEntityFunctions functions, GameObjectFactory gameObjectFactory, Transform[] spawnPoints, ShipDefinition shipDefinition)
 {
     _entityFactory     = entityFactory;
     _functions         = functions;
     _gameObjectFactory = gameObjectFactory;
     _spawnPoints       = spawnPoints;
     _shipDefinition    = shipDefinition;
     _respawnWait       = new WaitForSecondsEnumerator(_shipDefinition.TimeToRespawn);
     _transitionWait    = new WaitForSecondsEnumerator(_shipDefinition.RespawnTransitionTime);
     _animationWait     = new WaitForSecondsEnumerator(_shipDefinition.BlinkAnimationTime);
     _random            = new Random(seed);
 }
예제 #13
0
        public override void SetupEntities(IEntityFactory factory, IEntityFunctions functions)
        {
            //create the "stub implementor" (note this could actually be used already in gameplay,
            // but never mix testing stuff inside gamemplay)

            stub = new MovingPositionStub
            {
                Position = new Vector2(2, 2),
                Movement = new Vector2(3, 3)
            };

            factory.BuildEntity <MovingPositionStubber>(1, new object[] { stub });
        }
예제 #14
0
        public void RunTest()
        {
            var ecs = new EnginesRoot(GenerateMySubmissionScheduler());

            IEntityFactory   entityFactory   = ecs.GenerateEntityFactory();
            IEntityFunctions entityFunctions = ecs.GenerateEntityFunctions();

            SetupEngines(ecs, entityFactory, entityFunctions);

            SetupEntities(entityFactory, entityFunctions);

            StartCoroutine(UpdateTest());
        }
예제 #15
0
 public SECSContext()
 {
     Runner = new GameRunner();
     Root   = new EnginesRoot(Runner.SubmissionScheduler);
     Engine = new DummyEngine();
     Root.AddEngine(Engine);
     EntitiesDB        = Engine.entitiesDB;
     EntityFactory     = Root.GenerateEntityFactory();
     EntityFunctions   = Root.GenerateEntityFunctions();
     ConsumerFactory   = Root.GenerateConsumerFactory();
     Scheduler         = Runner.SubmissionScheduler;
     GameObjectFactory = new GameObjectFactory();
     Time = Runner.Time;
 }
예제 #16
0
        public BattleInitEngine(IEntityFunctions entityFunctions, PrefabsDictionary prefabsDictionary, IEntityFactory entityFactory)
        {
            _entityFunctions   = entityFunctions;
            _prefabsDictionary = prefabsDictionary;
            _entityFactory     = entityFactory;

            var go           = _prefabsDictionary.Istantiate("BattleEntity");
            var implementors = new List <IImplementor> {
                new BattleImplementor()
            };

            _entityFactory.BuildEntity <BattleEntityDescriptor>(
                go.GetInstanceID(), implementors.ToArray());
        }
        public override void SetupEntities(IEntityFactory factory, IEntityFunctions functions)
        {
            stubParent = new LifterParentStub
            {
            };

            stubChild = new LiftableChildStub
            {
                Id = 20
            };

            factory.BuildEntity <LifterStubber>(10, new object[] { stubParent });
            factory.BuildEntity <LifterChildStubber>(20, new object[] { stubChild });
        }
예제 #18
0
파일: Walker.cs 프로젝트: versus-fm/walker
        protected override void LoadContent()
        {
            IsMouseVisible = true;
            spriteBatch    = new SpriteBatch(GraphicsDevice);
            graphics.SynchronizeWithVerticalRetrace = false;
            IsFixedTimeStep = false;

            graphics.PreferredBackBufferWidth  = 1280;
            graphics.PreferredBackBufferHeight = 720;
            graphics.ApplyChanges();

            enginesRoot     = new EnginesRoot(new SimpleSubmissionEntityViewScheduler());
            entityFactory   = enginesRoot.GenerateEntityFactory();
            entityFunctions = enginesRoot.GenerateEntityFunctions();

            objects.RegisterInstance(spriteBatch);
            objects.RegisterInstance(graphics);
            objects.RegisterInstance(GraphicsDevice);
            objects.RegisterInstance(Content);
            objects.RegisterInstance(typeof(IEntityFactory), entityFactory);
            objects.RegisterInstance(typeof(IEntityFunctions), entityFunctions);

            objects.DiscoverServices();

            objects.Verify();

            objects.DoOnAttribute <SystemAttribute>((attribute, type) =>
            {
                if (type.Implements <IEngine>())
                {
                    var engine = (IEngine)objects.Get(type);
                    enginesRoot.AddEngine(engine);
                }
            });

            parts = objects.Get <PartManager>();

            parts.Load();
            var resourceLoader = objects.Get <ResourceLoader>();

            resourceLoader.Process();
            var repository = objects.Get <SpriteRepository>();

            repository.PlaceInternalCache();



            parts.Ready();
        }
예제 #19
0
        public override void SetupEntities(IEntityFactory factory, IEntityFunctions functions)
        {
            // another way to create entities it to search for existing Game Objects,
            // as you see it is perfectly valid for Implementors to be MonoBehaviours
            // attached to some gameobject

            liftableStub = FindObjectOfType <SystemTestLiftableImplementor>();
            lifterStub   = FindObjectOfType <SystemTestLifterImplementor>();

            // we start the game with the liftable parented to the lifter

            liftableStub.Id      = 2;
            liftableStub.Carrier = 1;
            lifterStub.CarriedThings.Add(2);

            factory.BuildEntity <LifterStubber>(1, new object[] { lifterStub });
            factory.BuildEntity <LiftableStubber>(2, new object[] { liftableStub });
        }
예제 #20
0
        /// <summary>
        /// Wire all the game logic and setup the engines
        /// </summary>
        private IEnumerator SetupEngines(EnginesRoot ecs)
        {
            IEntityFactory   entityFactory   = ecs.GenerateEntityFactory();
            IEntityFunctions entityFunctions = ecs.GenerateEntityFunctions();

            MovementScheduler movementPhaser = new MovementScheduler();
            Sequencer         landingEventResponseSequence = new Sequencer();

            var lifterCollection = new LifterCollectionEngine();
            var lifterMovement   = new LifterMovementEngine(movementPhaser);
            var movingPosition   = new MovingPositionEngine(movementPhaser);
            var lifterSnap       = new AnyLifterSnapEngine(movementPhaser, landingEventResponseSequence);

            ecs.AddEngine(lifterCollection);
            ecs.AddEngine(lifterMovement);
            ecs.AddEngine(movingPosition);

            // a sequence is just a set of "labels" each label can be triggered by the owning engine
            // and cause the listed engines to receive the messages.
            landingEventResponseSequence.SetSequence
            (
                new Steps
            {
                {               // LABEL
                    // owning engine
                    lifterSnap, // when lifterSnap calls "next" the message is delivered "To"...

                    //listed engines
                    new To
                    {
                        lifterCollection     //.. lifterCollection
                    }
                }
            }
            );

            while (true)
            {
                movementPhaser.ScheduleMovement();
                yield return(null);
            }
        }
예제 #21
0
        public void RunTest()
        {
            var ecs = new EnginesRoot(GenerateMySubmissionScheduler());

            IEntityFactory   entityFactory   = ecs.GenerateEntityFactory();
            IEntityFunctions entityFunctions = ecs.GenerateEntityFunctions();

            SetupEngines(ecs, entityFactory, entityFunctions);

            SetupEntities(entityFactory, entityFunctions);

            Tick();
            CheckPreconditions();

            Tick();
            DoStuff();

            Tick();
            CheckPostconditions();
        }
예제 #22
0
        void CompositionRoot(GameContext context)
        {
            _runner                = new GameRunner();
            _enginesRoot           = new EnginesRoot(_runner.SubmissionScheduler);
            _entityFactory         = _enginesRoot.GenerateEntityFactory();
            _entityFunctions       = _enginesRoot.GenerateEntityFunctions();
            _entityConsumerFactory = _enginesRoot.GenerateConsumerFactory();

            _gameObjectFactory = new GameObjectFactory();
            _gridUtils         = new GridUtils(context.GridDefinition);
            _seed = context.Seed == 0 ? (uint)Random.Range(int.MinValue, int.MinValue) : context.Seed;

            AddMatchEngines(context);
            AddGridEngines(context);
            AddShipEngines(context);
            AddPlayerEngines(context);
            AddAiEngines(context);
            AddCoinEngines(context);

            _runner.Play();
        }
        public override void SetupEntities(IEntityFactory factory, IEntityFunctions functions)
        {
            stubParent = new LifterMovementStub
            {
                Movement = new Vector2(2, 2)
            };

            stubParent.CarriedThings.Add(20);

            stubCarriedChild = new LiftableMovementStub
            {
                Movement = new Vector2(3, 3)
            };

            stubAloneChild = new LiftableMovementStub
            {
                Movement = new Vector2(3, 3)
            };

            factory.BuildEntity <LifterStubber>(10, new object[] { stubParent });
            factory.BuildEntity <LifterChildStubber>(20, new object[] { stubCarriedChild });
            factory.BuildEntity <LifterChildStubber>(30, new object[] { stubAloneChild });
        }
예제 #24
0
    void SetupEngines()
    {
        // "The core of Svelto.ECS" ???
        m_EnginesRoot = new EnginesRoot(new UnitySumbmissionEntityViewScheduler());

        // Factory for creating all entities (?)
        m_EntityFactory = m_EnginesRoot.GenerateEntityFactory();

        // ???
        IEntityFunctions entityFunctions = m_EnginesRoot.GenerateEntityFunctions();

        // Factory used to create Unity GameObjects (wrapper around GameObject.Instantiate)
        GameObjectFactory gameObjectFactory = new GameObjectFactory();

        IRayCaster rayCaster = new RayCaster();
        ITime      time      = new FrameTimer();

        PlayerInputEngine     playerInputEngine     = new PlayerInputEngine();
        AimingEngine          aimingEngine          = new AimingEngine();
        GunShootingEngine     gunShootingEngine     = new GunShootingEngine(rayCaster);
        GunEffectsEngine      gunEffectsEngine      = new GunEffectsEngine(gameObjectFactory);
        ZombieSpawnerEngine   zombieSpawnerEngine   = new ZombieSpawnerEngine(gameObjectFactory, m_EntityFactory);
        ZombieMovementEngine  zombieMovementEngine  = new ZombieMovementEngine(time);
        ZombieAnimationEngine zombieAnimationEngine = new ZombieAnimationEngine();
        HUDEngine             hudEngine             = new HUDEngine();
        DeathEngine           deathEngine           = new DeathEngine(entityFunctions);

        m_EnginesRoot.AddEngine(playerInputEngine);
        m_EnginesRoot.AddEngine(aimingEngine);
        m_EnginesRoot.AddEngine(gunShootingEngine);
        m_EnginesRoot.AddEngine(gunEffectsEngine);
        m_EnginesRoot.AddEngine(zombieSpawnerEngine);
        m_EnginesRoot.AddEngine(zombieMovementEngine);
        m_EnginesRoot.AddEngine(zombieAnimationEngine);
        m_EnginesRoot.AddEngine(hudEngine);
        m_EnginesRoot.AddEngine(deathEngine);
    }
 public PlayerDeathEngine(IEntityFunctions entityFunctions)
 {
     _entityFunctions = entityFunctions;
 }
예제 #26
0
 public EnemyDeathEngine(IEntityFunctions entityFunctions, ITime time)
 {
     _entityFunctions = entityFunctions;
     _time            = time;
 }
예제 #27
0
 public abstract void SetupEntities(IEntityFactory factory, IEntityFunctions functions);
예제 #28
0
 public abstract void SetupEngines(EnginesRoot enginesRoot, IEntityFactory factory, IEntityFunctions functions);
예제 #29
0
 public LookingForFoodDoofusesEngine(IEntityFunctions entityFunctions)
 {
     _entityFunctions = entityFunctions;
 }
 public override void SetupEngines(EnginesRoot enginesRoot, IEntityFactory factory, IEntityFunctions functions)
 {
     // add the lifter engine, it uses a fake MovementScheduler (mocked)
     movementEngine = new LifterMovementEngine(new MockedMovementScheduler());
     enginesRoot.AddEngine(movementEngine);
 }