Ejemplo n.º 1
0
        public void GeneratePowerUps(GameMap map)
        {
            var powerUpOrder     = PlanPowerUpOrder();
            var powerUpDistances = PlanPowerUpDistribution(map, powerUpOrder);

            const int quadrants  = 4;
            var       translator = new CoordinateTranslator(map.MapWidth + 1, map.MapHeight + 1);
            GameBlock block;

            for (var quadrant = 0; quadrant < quadrants; quadrant++)
            {
                for (var powerUpCount = 0; powerUpCount < powerUpOrder.Count; powerUpCount++)
                {
                    block = GetRandomBlockFromQuadrantAtDistance(map, quadrant, translator, powerUpDistances[powerUpCount]);
                    _logger.LogDebug("Quadrant : " + quadrant + "; Distance: " + powerUpDistances[powerUpCount] + "; Block: " + (block == null ? "NULL" : block.Location.ToString()));
                    var powerUp = powerUpOrder[powerUpCount];
                    if (powerUp == '&')
                    {
                        block.SetPowerUpEntity((IPowerUpEntity)_entityFactory.ConstructEntity(EntityFactory.EntityType.BombBagPowerUp));
                    }
                    else if (powerUp == '!')
                    {
                        block.SetPowerUpEntity((IPowerUpEntity)_entityFactory.ConstructEntity(EntityFactory.EntityType.BombRaduisPowerUp));
                    }
                }
            }

            block = map.GetBlockAtLocation(map.MapWidth / 2 + 1, map.MapHeight / 2 + 1);
            block.SetEntity(null);
            block.SetPowerUpEntity((IPowerUpEntity)_entityFactory.ConstructEntity(EntityFactory.EntityType.SuperPowerUp));
        }
Ejemplo n.º 2
0
        private void GenerateIndesctructableWalls(GameMap gameMap)
        {
            //Generate Map Edges and created an indesctructable wall at every odd location
            using (var enumerator = gameMap.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    var block = enumerator.Current;

                    if (block == null || block.Entity != null)
                    {
                        continue;
                    }

                    var x = block.Location.X;
                    var y = block.Location.Y;
                    if (x == 1 || y == 1 || x == gameMap.MapWidth || y == gameMap.MapHeight)
                    {
                        block.SetEntity(_entityFactory.ConstructEntity(EntityFactory.EntityType.IndesctructibleWall));
                    }
                    else if (block.Location.IsOdd())
                    {
                        block.SetEntity(_entityFactory.ConstructEntity(EntityFactory.EntityType.IndesctructibleWall));
                    }
                }
            }
        }
Ejemplo n.º 3
0
        public void GeneratePowerUps(GameMap gameMap)
        {
            var bombagRandom    = Rand;
            var bombRadiiRandom = Rand;

            var quadrantWidth  = (gameMap.MapWidth) / 2 + 1;
            var quadrantHeight = (gameMap.MapWidth) / 2 + 1;

            const int quadrants  = 4;
            var       translator = new CoordinateTranslator(gameMap.MapWidth + 1, gameMap.MapHeight + 1);

            for (var i = 0; i < quadrants; i++)
            {
                var bomBags  = (Settings.Default.BombBagPowerUpMultiplier * gameMap.RegisteredPlayerEntities.Count) / quadrants;
                var bomRadii = (Settings.Default.BombRaduisPowerUpMultiplier * gameMap.RegisteredPlayerEntities.Count) / quadrants;

                while (bomBags > 0)
                {
                    var x = bombagRandom.Next(1, quadrantWidth);
                    var y = bombagRandom.Next(1, quadrantHeight);

                    x = x == 0 ? 1 : x;
                    y = y == 0 ? 1 : y;

                    var location = ToQuadrantLocation(translator, 4 - i, x, y);

                    var gameBlock = gameMap.GetBlockAtLocation(location.X, location.Y);
                    if (gameBlock.PowerUpEntity == null && gameBlock.Entity != null && gameBlock.Entity.GetType() == typeof(DestructibleWallEntity))
                    {
                        gameBlock.SetPowerUpEntity((IPowerUpEntity)_entityFactory.ConstructEntity(EntityFactory.EntityType.BombBagPowerUp));
                        bomBags--;
                    }
                }

                while (bomRadii > 0)
                {
                    var x = bombRadiiRandom.Next(1, quadrantWidth);
                    var y = bombRadiiRandom.Next(1, quadrantHeight);

                    var location = ToQuadrantLocation(translator, i, x, y);

                    var gameBlock = gameMap.GetBlockAtLocation(location.X, location.Y);
                    if (gameBlock.PowerUpEntity == null && gameBlock.Entity != null && gameBlock.Entity.GetType() == typeof(DestructibleWallEntity))
                    {
                        gameBlock.SetPowerUpEntity((IPowerUpEntity)_entityFactory.ConstructEntity(EntityFactory.EntityType.BombRaduisPowerUp));
                        bomRadii--;
                    }
                }
            }

            var block = gameMap.GetBlockAtLocation(gameMap.MapWidth / 2 + 1, gameMap.MapHeight / 2 + 1);

            block.SetEntity(null);
            block.SetPowerUpEntity((IPowerUpEntity)_entityFactory.ConstructEntity(EntityFactory.EntityType.SuperPowerUp));
        }