public override void Process(Entity entity) { SpriteComponent sprite = entity.GetComponent <SpriteComponent>(); if (sprite.Name == null) { sprite.Index = 0; sprite.Texture = null; sprite.Speed = new double[1] { 0 }; sprite.Anchor = Vector2.Zero; return; } if (sprite.Name == sprite.CurrentName) { return; } Texture2D newTexture = entity.GetComponent <ContentManagerComponent>().ContentManager.Load <Texture2D>(sprite.Name); MetaSprite metaSprite = MetaSprite.MetaSpriteDict[sprite.Name]; sprite.Index = 0; sprite.Texture = newTexture; sprite.Speed = metaSprite.Speed; sprite.Anchor = metaSprite.Anchor; }
protected override void LoadContent() { base.LoadContent(); this.spriteBatch = new SpriteBatch(this.GraphicsDevice); EntitySystem.BlackBoard.SetEntry <SpriteBatch>("SpriteBatch", this.spriteBatch); EntitySystem.BlackBoard.SetEntry <Map>("Map", Content.Load <Map>("Test")); MetaSprite.LoadContent(this.Content); // Link. Entity link = this.world.CreateEntity(); link.AddComponent(new ContentManagerComponent(this.Content)); link.AddComponent(new EventSenderComponent()); link.AddComponent(new SpriteComponent()); link.AddComponent(new PositionComponent(new Vector2(250, 100))); // Default position. link.AddComponent(new SpeedComponent(Vector2.Zero)); link.AddComponent(new GoalSpeedComponent(Vector2.Zero, Vector2.Zero)); link.AddComponent(new AABBComponent(new Rectangle(8, 49, 16, 49))); // AABB boundaries. link.AddComponent(new PlayerInputComponent()); link.AddComponent(new InputIntentComponent()); link.AddComponent(new BinaryDirectionComponent()); link.AddComponent(new FSMComponent( new Dictionary <string, IComponent>() { // walkSpeed is a separate component because two states have to access it. { "walkSpeed", new LinkWalkSpeedStateComponent(60) }, // Max walking speed. { "onGround", new LinkOnGroundStateComponent(370, 270) }, // Running and walking acceleration/deceleration, jump force. { "idle", new LinkIdleStateComponent() }, { "walk", new LinkWalkStateComponent() }, { "run", new LinkRunStateComponent(150) }, // Max running speed. { "onAir", new LinkOnAirStateComponent(450, 630) }, // Max vertical speed and gravity. }, new Dictionary <string, List <string> >() { { "idle", new List <string>() { "onGround", "idle" } }, { "walk", new List <string>() { "onGround", "walk", "walkSpeed" } }, { "run", new List <string>() { "onGround", "run" } }, { "onAir", new List <string>() { "onAir", "walkSpeed" } } }, link, "idle")); // Map. Entity map = this.world.CreateEntity(); map.AddComponent(new MapComponent(EntitySystem.BlackBoard.GetEntry <Map>("Map"))); }