public TexturesRepository(MissedTextureFactory missedTextureFactory, GameObjectSize defaultSize, Dictionary <string, Image> texturesCache) { this.missedTextureFactory = missedTextureFactory; this.defaultSize = defaultSize; this.texturesCache = texturesCache; }
public Image Get(GameObjectSize size) { if (texturesCache.TryGetValue(size, out var image)) { return(image); } image = CreateDefaultTexture(size); texturesCache.Add(size, image); return(image); }
private static EnemyModel CreateEnemyModel(GameObjectSize size = null, InGamePosition position = null, IEnemyBehavior enemyBehavior = null) { return(new EnemyModel(enemyBehavior, new GameObjectParameters { Position = position ?? new InGamePosition { X = 3, Y = 5 }, Size = size ?? new GameObjectSize { Width = 17, Height = 13 } })); }
private static Image CreateDefaultTexture(GameObjectSize size) { var segmentSize = new Size(size.Width / 2, size.Height / 2); var bitmap = new Bitmap(size.Width, size.Height); using var graphics = Graphics.FromImage(bitmap); graphics.FillRectangle(Brushes.Magenta, new Rectangle(new Point(0, 0), segmentSize)); graphics.FillRectangle(Brushes.Black, new Rectangle(new Point(segmentSize.Width, 0), segmentSize)); graphics.FillRectangle(Brushes.Magenta, new Rectangle(new Point(segmentSize.Width, segmentSize.Height), segmentSize)); graphics.FillRectangle(Brushes.Black, new Rectangle(new Point(0, segmentSize.Height), segmentSize)); return(bitmap); }
public void MoveBaseOffset() { var gameState = new GameState(new GameFieldSize(100, 300), 23, 31); var enemyPosition = new InGamePosition { X = 3, Y = 5 }; var enemySize = new GameObjectSize { Height = 137, Width = 253 }; var enemyBehavior = CreateBehavior((state, parameters) => { Assert.That(state.Score, Is.EqualTo(gameState.Score)); Assert.That(state.Speed, Is.EqualTo(gameState.Speed)); Assert.That(state.FieldSize.Height, Is.EqualTo(gameState.FieldSize.Height)); Assert.That(state.FieldSize.Width, Is.EqualTo(gameState.FieldSize.Width)); Assert.That(parameters.Position, Is.EqualTo(enemyPosition)); Assert.That(parameters.Size, Is.EqualTo(enemySize)); return(new InGamePosition { X = 0, Y = 0 }); }); var enemyModel = CreateEnemyModel(position: enemyPosition, enemyBehavior: enemyBehavior, size: enemySize); Assert.That(enemyModel.Position.X, Is.EqualTo(3)); Assert.That(enemyModel.Position.Y, Is.EqualTo(5)); Assert.That(enemyModel.EnemyBehavior, Is.InstanceOf <TestingEnemyBehavior>()); Assert.That(enemyBehavior.InvocationsCount, Is.Zero); enemyModel.Tick(gameState, new InGamePosition { X = 1000, Y = -1000 }); Assert.That(enemyBehavior.InvocationsCount, Is.EqualTo(1)); Assert.That(enemyModel.Position.X, Is.EqualTo(1000d)); Assert.That(enemyModel.Position.Y, Is.EqualTo(-1000d)); }