Ejemplo n.º 1
0
        private void SpawnItemsRandomly(int levelIndex, MapGeneratorBSP mapGen)
        {
            //Item catalogue

            List<Item> meleeRelatedItems = new List<Item>();
            meleeRelatedItems.Add(new Items.Vibroblade());
            meleeRelatedItems.Add(new Items.Pistol());
            meleeRelatedItems.Sort((x,y) => x.ItemCost().CompareTo(y.ItemCost()));

            List<Item> rangedRelatedItems = new List<Item>();
            rangedRelatedItems.Add(new Items.Shotgun());
            rangedRelatedItems.Add(new Items.Laser());
            rangedRelatedItems.Add(new Items.Pistol());
            rangedRelatedItems.Sort((x,y) => x.ItemCost().CompareTo(y.ItemCost()));

            List<Item> grenadeRelatedItems = new List<Item>();
            grenadeRelatedItems.Add(new Items.SoundGrenade());
            grenadeRelatedItems.Add(new Items.FragGrenade());
            grenadeRelatedItems.Add(new Items.StunGrenade());
            grenadeRelatedItems.Sort((x,y) => x.ItemCost().CompareTo(y.ItemCost()));

            List<Item> healingRelatedItems = new List<Item>();
            healingRelatedItems.Add(new Items.NanoRepair());
            healingRelatedItems.Add(new Items.TacticalOverlay());
            healingRelatedItems.Add(new Items.StealthCloak());
            healingRelatedItems.Sort((x,y) => x.ItemCost().CompareTo(y.ItemCost()));

            List<List<Item>> itemCatalogue = new List<List<Item>>();
            itemCatalogue.Add(meleeRelatedItems);
            itemCatalogue.Add(rangedRelatedItems);
            itemCatalogue.Add(healingRelatedItems);
            //Grenades go in last to suck up any left-over budget
            itemCatalogue.Add(grenadeRelatedItems);

            //Calculate the budget we have to spend
            int itemBudget = 60 + (levelIndex - 5) * 10;

            //Divide between different types

            List<double> budgetRatios = new List<double>();

            double meleeRelatedBudgetRatio = Game.Random.NextDouble();
            budgetRatios.Add(meleeRelatedBudgetRatio);

            double firingRelatedBudgetRatio = 1 - meleeRelatedBudgetRatio;
            budgetRatios.Add(firingRelatedBudgetRatio);

            double grenadeRelatedBudgeRadio = Game.Random.NextDouble();
            budgetRatios.Add(grenadeRelatedBudgeRadio);

            double healingRelatedBudgeRadio = Game.Random.NextDouble();
            budgetRatios.Add(healingRelatedBudgeRadio);

            //Calculate budget split
            double totalRatio = 0.0;
            foreach(double d in budgetRatios) {
                totalRatio += d;
            }

            double ratioToTotalBudget = itemBudget / totalRatio;

            double remainder = 0.0;

            //To hold all the items to place
            List<Item> itemsToPlace = new List<Item>();

            //Spend budget on each catalogue, depending upon ratio
            for (int i = 0; i < itemCatalogue.Count; i++)
            {
                double categoryBudget = budgetRatios[i] * ratioToTotalBudget + remainder;
                remainder = (double)SpendItemBudget((int)categoryBudget, itemCatalogue[i], itemsToPlace);
            }

            LogFile.Log.LogEntryDebug("SpawnItemsRandomly: level: " + levelIndex + " total budget: " + itemBudget + " remainder: " + remainder, LogDebugLevel.High);

            //Add any standard items

            //1 healing kit
            itemsToPlace.Add(new Items.NanoRepair());

            //Actually add the items
            List<RoomCoords> allRooms = mapGen.GetAllRooms();

            AddItemsEqualDistribution(itemsToPlace, levelIndex, mapGen);

            //Pistol at start location
            AddItemAtLocation(new Items.Pistol(), levelIndex, mapGen.GetPlayerStartLocation());
        }
Ejemplo n.º 2
0
        private void SpawnItemsLevel4(int levelIndex, MapGeneratorBSP mapGen)
        {
            List<RoomCoords> allRooms = mapGen.GetAllRooms();

            //Pistol at start location
            AddItemAtLocation(new Items.Pistol(), levelIndex, mapGen.GetPlayerStartLocation());

            //Spawn some items

            List<Item> itemsToPlace = new List<Item>();

            itemsToPlace.Add(new Items.SoundGrenade());
            itemsToPlace.Add(new Items.SoundGrenade());
            itemsToPlace.Add(new Items.SoundGrenade());
            itemsToPlace.Add(new Items.SoundGrenade());
            itemsToPlace.Add(new Items.FragGrenade());
            itemsToPlace.Add(new Items.FragGrenade());

            itemsToPlace.Add(new Items.NanoRepair());

            AddItemsEqualDistribution(itemsToPlace, levelIndex, mapGen);
        }
Ejemplo n.º 3
0
        private void SpawnItemsLevel6(int levelIndex, MapGeneratorBSP mapGen)
        {
            List<RoomCoords> allRooms = mapGen.GetAllRooms();

            //Pistol at start location
            AddItemAtLocation(new Items.Laser(), levelIndex, mapGen.GetPlayerStartLocation());
            AddItemAtLocation(new Items.StealthCloak(), levelIndex, mapGen.GetPlayerStartLocation());

            //Spawn some items

            List<Item> itemsToPlace = new List<Item>();

            itemsToPlace.Add(new Items.TacticalOverlay());
            itemsToPlace.Add(new Items.StealthCloak());

            AddItemsEqualDistribution(itemsToPlace, levelIndex, mapGen);
        }
Ejemplo n.º 4
0
        private void SpawnItemsLevel2(int levelIndex, MapGeneratorBSP mapGen)
        {
            List<RoomCoords> allRooms = mapGen.GetAllRooms();

            //Spawn some items

            List<Item> itemsToPlace = new List<Item>();

            //Tempt the player with the shotgun
            //AddItemCloseToLocation(new Items.Shotgun(), 0, mapGen.GetPlayerStartLocation());
            AddItemAtLocation(new Items.Shotgun(), levelIndex, mapGen.GetPlayerStartLocation());

            //Vibroblade is a better choice
            itemsToPlace.Add(new Items.Vibroblade());
            //Another shotty
            itemsToPlace.Add(new Items.Shotgun());

            AddItemsEqualDistribution(itemsToPlace, levelIndex, mapGen);
        }