Пример #1
0
        public override void Update()
        {
            var position = GetComponent <PositionComponent>();

            if (_triggered)
            {
                return;
            }

            foreach (PlayerComponent player in SceneMgr.CurrentScene.GetComponentList <PlayerComponent>())
            {
                var playerPosition = player.Owner.GetComponent <PositionComponent>();
                var playerActor    = player.Owner.GetComponent <StackableActorComponent>();

                if (
                    playerActor.LogicStateMachine.CurrentState != ActorStates.Dead &&
                    GameMath.PointInRectangleBySize(playerPosition.Position, position.Position, Size)
                    )
                {
                    new LevelRestartEffect(GameplayController.GUILayer, true);
                    StackableActorSystem.Kill(playerActor, true);
                    _triggered = true;
                }
            }
        }
Пример #2
0
        public override void Update()
        {
            var position = GetComponent <PositionComponent>();

            foreach (StackableActorComponent actor in SceneMgr.CurrentScene.GetComponentList <StackableActorComponent>())
            {
                var actorPosition = actor.Owner.GetComponent <PositionComponent>();

                if (GameMath.PointInRectangleBySize(actorPosition.Position, position.Position, Size))
                {
                    StackableActorSystem.Kill(actor, true);
                }
            }
        }
Пример #3
0
        public override void Update()
        {
            // Spikes are harmful only from one side.
            var solid = GetComponent <SolidComponent>();

            if (solid.CollisionV == _harmVector.Y && solid.CollisionH == _harmVector.X)
            {
                Entity collidedObject;
                if (_harmVector.X == 0)
                {
                    collidedObject = solid.CollidedObjectV;
                }
                else
                {
                    collidedObject = solid.CollidedObjectH;
                }


                if (collidedObject.TryGetComponent(out StackableActorComponent actor))
                {
                    StackableActorSystem.Damage(actor);
                }
            }
        }
Пример #4
0
        public override void Update()
        {
            var position = GetComponent <PositionComponent>();

            if (!_dead)
            {
                position.Position += _direction * TimeKeeper.GlobalTime(_speed);

                _collider.Position         = position.Position;
                _collider.PreviousPosition = position.PreviousPosition;

                if (!CollisionDetector.CheckCollision(_collider, _myCannon.GetComponent <SolidComponent>().Collider))
                {
                    foreach (SolidComponent solid in Scene.GetComponentList <SolidComponent>())
                    {
                        var solidPosition = solid.Owner.GetComponent <PositionComponent>();
                        solid.Collider.Position         = solidPosition.Position;
                        solid.Collider.PreviousPosition = solidPosition.PreviousPosition;
                        if (CollisionDetector.CheckCollision(_collider, solid.Collider))
                        {
                            Die();
                        }
                    }
                }

                var actors = SceneMgr.CurrentScene.GetEntityListByComponent <StackableActorComponent>();
                foreach (var actorEntity in actors)
                {
                    var playerActor = actorEntity.GetComponent <StackableActorComponent>();

                    var playerPosition = actorEntity.GetComponent <PositionComponent>();
                    var playerPhysics  = actorEntity.GetComponent <PhysicsComponent>();

                    // Setting up colliders.
                    playerPhysics.Collider.Position         = playerPosition.Position;
                    playerPhysics.Collider.PreviousPosition = playerPosition.PreviousPosition;
                    // Seting up colliders.

                    if (CollisionDetector.CheckCollision(_collider, playerPhysics.Collider))
                    {
                        StackableActorSystem.Damage(actorEntity.GetComponent <StackableActorComponent>());
                        Die();
                        break;
                    }
                }
            }
            else
            {
                _deadSpeed.Y      += TimeKeeper.GlobalTime(_deadGravity);
                position.Position += TimeKeeper.GlobalTime(_deadSpeed);
            }

            if (_dead)
            {
                var inBounds = false;
                foreach (var camera in SceneMgr.CurrentScene.GetEntityList <GameCamera>())
                {
                    if (camera.InBounds(position.Position))
                    {
                        inBounds = true;
                        break;
                    }
                }

                if (!inBounds)
                {
                    DestroyEntity();
                }
            }

            if (_lifetimeAlarm.Update())
            {
                DestroyEntity();
            }
        }