//Grow crops on this tile
        public static void growCrops(Terrain terrain, int x, int y, Quinoa quinoa)
        {
            if(TerrainManager.hasParameter(terrain, TerrainParameter.HAS_SEED))
            {
                if(quinoa.getLightMap().getCalc(x, y) >= TerrainManager.PLANT_LIGHT_LEVEL_MIN)
                {
                    SeedType seedType = (SeedType)Enum.Parse(typeof(SeedType), TerrainManager.getParameter(terrain, TerrainParameter.HAS_SEED));
                    switch(seedType)
                    {
                        case SeedType.CORN:
                        terrain.getParameters().Remove(TerrainParameter.HAS_SEED);
                        terrain.getParameters().Add(TerrainParameter.GROW_COUNTER, TerrainManager.GRASS_GROW_COUNT+"");

                        if(quinoa.getCurrentRegionHeader().getRegion().getItem(x, y) == null)
                        {
                            if(RandomNumber.RandomDouble() < 0.50)
                            {
                                Item cornSeed = new Item();
                                cornSeed.itemClass = ItemClass.CORN_SEED;
                                cornSeed.stackSize = RandomNumber.RandomInteger(9) + 1;
                                cornSeed.setPosition(x, y);
                                quinoa.getCurrentRegionHeader().getRegion().getItems().Add(cornSeed);
                            }

                            Item corn = new Item();
                            corn.itemClass = ItemClass.CORN;
                            corn.stackSize = RandomNumber.RandomInteger(3) + 1;
                            corn.setPosition(x, y);
                            quinoa.getCurrentRegionHeader().getRegion().getItems().Add(corn);
                        }
                        break;

                        case SeedType.PUMPKIN:
                        //reset the counter
                        terrain.getParameters().Add(TerrainParameter.GROW_COUNTER, (TerrainManager.PUMPKIN_GROW_COUNT / 2)+"");

                        //chance to produce a pumpkin
                        if(quinoa.getCurrentRegionHeader().getRegion().getItem(x, y) == null)
                        {
                            if(RandomNumber.RandomDouble() < TerrainManager.PUMPKIN_PRODUCTION_RATE)
                            {
                                Item pumpkinSeed = new Item();
                                pumpkinSeed.itemClass = ItemClass.PUMPKIN_SEED;
                                pumpkinSeed.stackSize = RandomNumber.RandomInteger(3) + 1;
                                pumpkinSeed.setPosition(x, y);
                                quinoa.getCurrentRegionHeader().getRegion().getItems().Add(pumpkinSeed);

                                Item pumpkin = new Item();
                                pumpkin.itemClass = ItemClass.PUMPKIN;
                                pumpkin.stackSize = 1;
                                pumpkin.setPosition(x, y);
                                quinoa.getCurrentRegionHeader().getRegion().getItems().Add(pumpkin);
                            }
                        }
                        break;
                    }
                }
            }
            else
            {
                //no seeds, just grow grass
                terrain.getParameters().Remove(TerrainParameter.GROW_COUNTER);
                terrain.setCode(TerrainCode.GRASS);

                if (RandomNumber.RandomDouble() < TerrainManager.TREE_REGROWTH_RATE)
                {
                    terrain.getParameters().Add(TerrainParameter.HAS_TREE, EnumUtil.EnumName<TreeCode>(TerrainManager.getRandomTree()));
                }
            }
        }