public void TestGenerateDelLily()
        {
            Enemy delLily = new Enemy();
            delLily.setDropAnythingRate(0.35);
            delLily.setRareRate(0.015625);
            delLily.setEquipmentDropType(ItemDropType.WEAPON);

            ItemDropGenerator itemDropGenerator = new ItemDropGenerator(new RandomGenerator());
            for(int i = 0; i < 10; i++)
            {
                ItemDropType result = itemDropGenerator.generateDrop(delLily);
                System.Console.WriteLine("Generated [" + result + "]");
            }
        }
        public void TestGenerateMeseta()
        {
            Enemy enemy = new Enemy();
            enemy.setDropAnythingRate(50.0);
            enemy.setRareRate(50.0);
            enemy.setEquipmentDropType(ItemDropType.WEAPON);

            // Rig the random to return true for the DAR check
            MockRandomGenerator mockRandomGenerator = new MockRandomGenerator();
            mockRandomGenerator.rigDropAnythingRate(true);
            mockRandomGenerator.rigRareRate(false);
            mockRandomGenerator.rigMesetaRate(true);

            ItemDropGenerator itemDropGenerator = new ItemDropGenerator(mockRandomGenerator);
            ItemDropType result = itemDropGenerator.generateDrop(enemy);

            Assert.AreEqual(ItemDropType.MESETA, result);
        }
 public ItemDropType generateDrop(Enemy enemy)
 {
     // First, check if we drop anything at all
     if (randomGenerator.rollDropAnythingRate(enemy.getDropAnythingRate(), 2))
     {
         // Next, check if we got a Rare or a Common
         if (randomGenerator.rollDropRareRate(enemy.getRareRate(), 6))
         {
             System.Console.WriteLine("Generated a [Rare] item");
             return ItemDropType.RARE;
         }
         else
         {
             System.Console.WriteLine("Generated a [Common] item...");
             // Decide if this is Meseta or an actual Item
             if (randomGenerator.rollMesetaRate(MESETA_RATE, 2))
             {
                 System.Console.WriteLine("Generated [Meseta] ");
                 return ItemDropType.MESETA;
             }
             else
             {
                 // Decide if this is a Tool or the assigned Equipment
                 if (randomGenerator.rollToolRate(TOOL_RATE, 2))
                 {
                     System.Console.WriteLine("Generated [Tool] ");
                     return ItemDropType.TOOL;
                 }
                 else
                 {
                     System.Console.WriteLine("Generated [" + enemy.getEquipmentDropType() + "]");
                     return enemy.getEquipmentDropType();
                 }
             }
         }
     }
     else
     {
         System.Console.WriteLine("Generated [Nothing]");
         return ItemDropType.NOTHING;
     }
 }