public UniverseProperties(String seed)
        {
            UniverseProperties.seed = seed;
            Random universeRandom = new Random(seed.GetHashCode());


            berryTags = new List <int[]>();
            berryTags.Add(Item_Berry.getRandomTags(universeRandom));
            berryTags.Add(Item_Berry.getRandomTags(universeRandom));
            berryTags.Add(Item_Berry.getRandomTags(universeRandom));
            berryTags.Add(Item_Berry.getRandomTags(universeRandom));

            availableBerries = new List <Item_Berry>();
            availableBerries.Add(new Item_Berry_Type_0(1));
            availableBerries.Add(new Item_Berry_Type_1(1));
            availableBerries.Add(new Item_Berry_Type_2(1));
            availableBerries.Add(new Item_Berry_Type_3(1));

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

            rewardPrototype.Add(new Item_Sword(1));
            rewardPrototype.Add(new Item_Scizors(1));
            rewardPrototype.Add(new Item_Axe(1));
            rewardPrototype.Add(new Item_Spade(1));

            queuedRewardItems = new List <Item>();
            while (rewardPrototype.Count > 0)
            {
                int rewardIndex = universeRandom.Next(rewardPrototype.Count);
                queuedRewardItems.Add(rewardPrototype[rewardIndex]);
                rewardPrototype.RemoveAt(rewardIndex);
            }
        }
Exemplo n.º 2
0
        public ShrubManager(ChunkDecorator decorator)
        {
            if (decorator.worldGenSubtype != World.WorldGenSubtype.CENOTE)
            {
                //build grass and bushes
                grass              = generateGrass(decorator);
                bush               = generateBush(decorator);
                bush.harvestTicks += getRandValuePlusOrMinus(decorator.rand, Math.Max(decorator.metaDifficulty, 1) * 8);

                grass2              = generateGrass(decorator);
                bush2               = generateBush(decorator);
                bush2.harvestTicks += getRandValuePlusOrMinus(decorator.rand, Math.Max(decorator.metaDifficulty, 1) * 8);

                TileType.replaceTileInDictionary(TileTypeReferencer.REACTIVE_GRASS.TILEID, grass);
                TileType.replaceTileInDictionary(TileTypeReferencer.REACTIVE_BUSH_0.TILEID, bush);
                TileType.replaceTileInDictionary(TileTypeReferencer.REACTIVE_BUSH_1.TILEID, bush2);

                ItemDropper bushDrops = new ItemDropper();
                bushDrops.registerNewDrop(new Item_Grass(0), null, 1, 1f);
                ItemDropper bushDrops2 = new ItemDropper();
                bushDrops2.registerNewDrop(new Item_Grass(0), null, 1, 1f);

                if (decorator.world is World)
                {
                    if (decorator.rand.NextDouble() < .15)//chance to give the bush an interesting drop.
                    {
                        Item_Berry bushBerry = UniverseProperties.availableBerries[decorator.rand.Next(3)];

                        bushDrops.registerNewDrop(bushBerry, null, 1 + decorator.rand.Next(4), (float)(.05 + decorator.rand.NextDouble() * .3));
                    }
                    if (decorator.rand.NextDouble() < .15)//chance to give the bush an interesting drop.
                    {
                        Item_Berry bushBerry = UniverseProperties.availableBerries[decorator.rand.Next(3)];

                        bushDrops2.registerNewDrop(bushBerry, null, 1 + decorator.rand.Next(4), (float)(.05 + decorator.rand.NextDouble() * .3));
                    }
                }



                HarvestDictionary.registerNewHarvest(bush, new ItemDropper[] { bushDrops });
                HarvestDictionary.registerNewHarvest(bush2, new ItemDropper[] { bushDrops2 });

                for (int i = 0; i < 7 + decorator.rand.Next(7); i++)
                {
                    decorator.foliage.Add(new Decoration(new Point(0, 0), new TileType[, ] {
                        { bush },
                    }));
                    decorator.foliageBiome2.Add(new Decoration(new Point(0, 0), new TileType[, ] {
                        { bush2 },
                    }));
                }
            }
            else
            {
                for (int i = 0; i < 7 + decorator.rand.Next(7); i++)
                {
                    decorator.foliage.Add(new Decoration(new Point(0, 0), new TileType[, ] {
                        { TileTypeReferencer.STALAGMITE_TINY },
                    }));
                    decorator.foliageBiome2.Add(new Decoration(new Point(0, 0), new TileType[, ] {
                        { TileTypeReferencer.STALAGMITE_TINY },
                    }));
                }
            }

            //
        }