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; } } }
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); } } }
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); } } }
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(); } }