Ejemplo n.º 1
0
 public TexturesRepository(MissedTextureFactory missedTextureFactory, GameObjectSize defaultSize,
                           Dictionary <string, Image> texturesCache)
 {
     this.missedTextureFactory = missedTextureFactory;
     this.defaultSize          = defaultSize;
     this.texturesCache        = texturesCache;
 }
Ejemplo n.º 2
0
 public Image Get(GameObjectSize size)
 {
     if (texturesCache.TryGetValue(size, out var image))
     {
         return(image);
     }
     image = CreateDefaultTexture(size);
     texturesCache.Add(size, image);
     return(image);
 }
Ejemplo n.º 3
0
 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
         }
     }));
 }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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));
        }