private void UpdateAnimationState(StateChangeEvent stateChangeEvent) { var entityId = stateChangeEvent.EntityId; if (!ComponentManager.ContainsAllComponents( entityId, typeof(SpriteAnimationBindings) )) { return; } var animationBindings = ComponentManager.GetEntityComponentOrDefault <SpriteAnimationBindings>(entityId); var spriteAnimation = ComponentManager.GetEntityComponentOrDefault <SpriteAnimationComponent>(entityId); if (spriteAnimation == null) { spriteAnimation = new SpriteAnimationComponent(); ComponentManager.AddComponentToEntity(spriteAnimation, entityId); spriteAnimation.AnimationStarted = stateChangeEvent.EventTime; } var binding = animationBindings.Bindings .FirstOrDefault(e => BindingsMatch(e.StateConditions, stateChangeEvent.NewState)); if (binding == null) { spriteAnimation.NextAnimatedState = null; } else { spriteAnimation.NextAnimatedState = binding; } }
/// <summary> /// Creates Power Upp component and adds it to an entity /// </summary> /// <param name="id"></param> public void OnPowerUpPicup(int id) { BallOfSpikesPowerUpComponent temp = ComponentManager.Instance.GetEntityComponent <BallOfSpikesPowerUpComponent>(id); if (temp == null) { ComponentManager test = ComponentManager.Instance; BallOfSpikesPowerUpComponent ball = new BallOfSpikesPowerUpComponent(5); DrawableComponent newDraw = test.GetEntityComponent <DrawableComponent>(id); AnimationComponent anima = test.GetEntityComponent <AnimationComponent>(id); ball.prevTexture = newDraw.texture; newDraw.texture = ball.SpikeTexture; if (anima != null) { ball.anime = anima; ComponentManager.Instance.RemoveComponentFromEntity(id, anima); } test.AddComponentToEntity(id, ball); CollisionRectangleComponent rec = ComponentManager.Instance.GetEntityComponent <CollisionRectangleComponent>(id); PositionComponent pos = ComponentManager.Instance.GetEntityComponent <PositionComponent>(id); rec.CollisionRec = new Rectangle((int)pos.position.X, (int)pos.position.Y, newDraw.texture.Width, newDraw.texture.Height); rec.CollisionRec.X = (int)pos.position.X; rec.CollisionRec.Y = (int)pos.position.Y; rec.CollisionRec.Width = newDraw.texture.Width; rec.CollisionRec.Height = newDraw.texture.Height; } else { temp.lifeTime += 10; } }
private AnimationComponent GetOrCreateDefault(int entityId) { var animationComponent = ComponentManager.GetEntityComponentOrDefault <AnimationComponent>(entityId); if (animationComponent == null) { animationComponent = new AnimationComponent(); ComponentManager.AddComponentToEntity(animationComponent, entityId); } return(animationComponent); }
/* * This function tags the pickup for deletion. * Should only be called when the pickup was actually used up. */ private void DeletePickup(int pickup) { var tagComponent = ComponentManager.GetEntityComponentOrDefault <TagComponent>(pickup); if (tagComponent == null) { tagComponent = new TagComponent(); ComponentManager.AddComponentToEntity(tagComponent, pickup); } tagComponent.Tags.Add(Tag.Delete); }
// This method is called in the handleFireWeapon method to create the bullet // that is fired from the entity. It will give the bullet all the necessary components. public void CreateBullet(InputEvent inputEvent, SpriteComponent bulletSpriteComponent, WeaponComponent weaponComponent, MoveComponent moveComponent, RenderComponent renderComponent, PositionComponent positionComponent) { // We create an new position instance for the bullet that starts from the player but should // not be the same as the players, as we found out when we did our test, otherwise the player // will follow the same way ass the bullet. var bulletPositionComponent = new PositionComponent() { Position = new Vector2(positionComponent.Position.X, positionComponent.Position.Y), ZIndex = positionComponent.ZIndex }; int bulletEntityId = EntityManager.GetEntityManager().NewEntity(); var bulletRenderComponent = new RenderComponent() { DimensionsComponent = new DimensionsComponent() { Height = 10, Width = 10 } }; var bulletMoveComponent = new MoveComponent() { AccelerationSpeed = 0, Speed = 1000, MaxVelocitySpeed = 1000, Direction = moveComponent.Direction }; var bulletComponent = new BulletComponent() { Damage = weaponComponent.Damage, ShooterEntityId = inputEvent.EntityId }; var bulletCollisionComponent = new CollisionComponent(); var animationComponent = new AnimationComponent(); ComponentManager.AddComponentToEntity(bulletPositionComponent, bulletEntityId); ComponentManager.AddComponentToEntity(bulletComponent, bulletEntityId); ComponentManager.AddComponentToEntity(bulletSpriteComponent, bulletEntityId); ComponentManager.AddComponentToEntity(bulletMoveComponent, bulletEntityId); ComponentManager.AddComponentToEntity(bulletRenderComponent, bulletEntityId); ComponentManager.AddComponentToEntity(bulletCollisionComponent, bulletEntityId); ComponentManager.AddComponentToEntity(animationComponent, bulletEntityId); var animation = new GeneralAnimation() { AnimationType = "BulletAnimation", StartOfAnimation = inputEvent.EventTime, Length = 2000, Unique = true }; NewBulletAnimation(animation, bulletEntityId); animationComponent.Animations.Add(animation); }
private void CreateEntities() { var playerSprite = Content.Load <Texture2D>("Illuminati"); var enemySprite = Content.Load <Texture2D>("Dorito"); ComponentManager cm = ComponentManager.Instance; //Create Player int playerId = cm.CreateNewEntity(new SpriteComponent() { Texture = playerSprite, Rectangle = new Rectangle(0, 0, 30, 30) }); cm.AddComponentToEntity(playerId, new PositionComponent() { Position = new Vector2(0, 0) }); cm.AddComponentToEntity(playerId, new InputComponent() { Up = Keys.W, Down = Keys.S, Left = Keys.A, Right = Keys.D }); cm.AddComponentToEntity(playerId, new CollisionComponent()); cm.AddComponentToEntity(playerId, new PlayerComponent()); //Create Enemy int enemyId = cm.CreateNewEntity(new SpriteComponent() { Texture = enemySprite, Rectangle = new Rectangle(50, 60, 30, 30) }); cm.AddComponentToEntity(enemyId, new PositionComponent() { Position = new Vector2(20, 0) }); cm.AddComponentToEntity(enemyId, new CollisionComponent()); cm.AddComponentToEntity(enemyId, new EnemyComponent()); }