using System; using System.Collections.Generic; using System.Linq; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.GamerServices; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Media; namespace gamekomponenty.komponenty { /// <summary> /// This is a game component that implements IUpdateable. /// </summary> public class GameComponent1 : Microsoft.Xna.Framework.GameComponent { public GameComponent1(Game game) : base(game) { // TODO: Construct any child components here } /// <summary> /// Allows the game component to perform any initialization it needs to before starting /// to run. This is where it can query for any required services and load content. /// </summary> public override void Initialize() { // TODO: Add your initialization code here base.Initialize(); } /// <summary> /// Allows the game component to update itself. /// </summary> /// <param name="gameTime"> Provides a snapshot of timing values.</param> public override void Update(GameTime gameTime) { // TODO: Add your update code here base.Update(gameTime); } } }Tato komponenta má metodu Update()v které stejně jako v třídě Game probíhá nějaký kód, ale neumí vykreslovat.
Pokud chceme v komponentě vykreslovat musíme ji doplnit o další metody a dopsat typ komponenty na
public class GameComponent2 : Microsoft.Xna.Framework.DrawableGameComponent.
using System; using System.Collections.Generic; using System.Linq; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.GamerServices; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Media; namespace gamekomponenty.komponenty { ///<summary> /// This is a game component that implements IUpdateable. /// </summary> public class GameComponent2 : Microsoft.Xna.Framework.DrawableGameComponent // dopsáno Drawable { private SpriteFont font; private Hra hra; public GameComponent2(Hra hra) : base(hra) { // TODO: Construct any child components here this.hra = hra; //nastavení na zakladní třídu Hra } /// <summary> /// Allows the game component to perform any initialization it needs to before starting /// to run. This is where it can query for any required services and load content. /// </summary> public override void Initialize() { // TODO: Add your initialization code here base.Initialize(); } /// <summary> /// Allows the game component to update itself. /// </summary> /// <param name="gameTime">Provides a snapshot of timing values.</param> /// protected override void LoadContent() { font = hra.Content.Load< SpriteFont >("SpriteFont1"); base.LoadContent(); } public override void Update(GameTime gameTime) { // TODO: Add your update code here base.Update(gameTime); } public override void Draw(GameTime gameTime) { hra.spriteBatch.Begin(); hra.spriteBatch.DrawString(font, "ahoj", new Vector2(100, 100), Color.White); hra.spriteBatch.End(); base.Draw(gameTime); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics; namespace Had.components { public class Score :DrawableGameComponent { public int Value { get; set; } ContentManager contentManager; SpriteBatch spriteBatch; SpriteFont spriteFond; public Score(Game game) : base(game) { contentManager = new ContentManager(game.Services); contentManager.RootDirectory = "Content"; } protected override void LoadContent() { spriteBatch = new SpriteBatch(Game.GraphicsDevice); spriteFond = contentManager.Load < SpriteFont >("ScoreFont"); } protected override void UnloadContent() { contentManager.Unload(); } public override void Draw(GameTime gameTime) { spriteBatch.Begin(); spriteBatch.DrawString(spriteFond,Value.ToString(),new Vector2(10f,0f),Color.White); spriteBatch.End(); } } }
...
protected override void Initialize()
{
// TODO: Add your initialization logic here
GameComponent1 komponenta1 = new GameComponent1(this);
GameComponent2 komponenta2 = new GameComponent2(this);
Components.Add(komponenta2);
Components.Add(komponenta1);
base.Initialize();
}
...