namespace ObjectManagementExamples
{
public class EnemySpriteFactory
{
private Texture2D enemySpritesheet;
// More private Texture2Ds follow
// ...
private static EnemySpriteFactory instance = new EnemySpriteFactory();
public static EnemySpriteFactory Instance
{
get
{
return instance;
}
}
private EnemySpriteFactory()
{
}
public void LoadAllTextures(ContentManager content)
{
enemySpriteSheet = content.Load<Texture2D>("enemy");
// More Content.Load calls follow
//...
}
public ISprite CreateSmallEnemySprite()
{
return new EnemySprite(enemySpritesheet, 32, 32);
}
public ISprite CreateBigEnemySprite()
{
return new EnemySprite(enemySpritesheet, 64, 64);
}
public ISprite CreateTintedEnemySprite(ILevel level)
{
return new EnemySprite(enemySpritesheet, level.ColorTheme);
}
// More public ISprite returning methods follow
// ...
}
}
// Client code in main game class' LoadContent method:
EnemySpriteFactory.Instance.LoadAllTextures(Content);
// Client code in Goomba class:
ISprite mySprite = EnemySpriteFactory.Instance.CreateBigEnemySprite();