| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476 |
- #include "biome.h"
- #include <utility>
- int BiomesManager::pickBiomeIndex(float randomNumber)
- {
- int pick = std::min(randomNumber, 0.99f) * biomeIndexes.size();
- return biomeIndexes[pick];
- }
- bool BiomesManager::loadAllBiomes()
- {
- *this = {};
- GrowElement grassGrowElement;
- grassGrowElement.block = BlockTypes::grass;
- GrowElement roseGrowElement;
- roseGrowElement.block = BlockTypes::rose;
- GrowElement basictreeElement;
- basictreeElement.treeType = Biome::treeNormal;
- GrowElement tallForestTrees;
- tallForestTrees.treeType = Biome::treeNormalTall;
- GrowElement tallSlimSpruceOakCenterTrees;
- tallSlimSpruceOakCenterTrees.treeType = Biome::treeSpruceTallOakCenter;
- GrowElement normalSpruceTree;
- normalSpruceTree.treeType = Biome::treeSpruce;
- GrowElement birchTree;
- birchTree.treeType = Biome::treeBirch;
- GrowElement tallBirchTree;
- tallBirchTree.treeType = Biome::treeBirchTall;
- GrowElement redBirchTree;
- redBirchTree.treeType = Biome::treeRedBirch;
- GrowElement redBirchTreeTall;
- redBirchTreeTall.treeType = Biome::treeRedBirchTall;
- GrowElement tallOakElement;
- tallOakElement.treeType = Biome::treeTallOak;
- StaticVector<BlockTypes, 5> growOnNormalPlants = {BlockTypes::grassBlock, BlockTypes::snow_dirt, BlockTypes::yellowGrass};
- GrowingThing growGrass;
- growGrass.elements.push_back(grassGrowElement);
- growGrass.growOn = growOnNormalPlants;
- GrowingThing growTree;
- growTree.elements.push_back(basictreeElement);
- growTree.growOn = growOnNormalPlants;
- GrowingThing grawTallTrees;
- grawTallTrees.elements.push_back(tallForestTrees);
- grawTallTrees.elements.push_back(tallForestTrees);
- grawTallTrees.elements.push_back(basictreeElement);
- grawTallTrees.growOn = growOnNormalPlants;
- GrowingThing grawTallSpruces;
- grawTallSpruces.elements.push_back(tallSlimSpruceOakCenterTrees);
- grawTallSpruces.elements.push_back(tallSlimSpruceOakCenterTrees);
- grawTallSpruces.elements.push_back(tallSlimSpruceOakCenterTrees);
- grawTallSpruces.elements.push_back(tallSlimSpruceOakCenterTrees);
- grawTallSpruces.elements.push_back(tallSlimSpruceOakCenterTrees);
- grawTallSpruces.elements.push_back(tallSlimSpruceOakCenterTrees);
- grawTallSpruces.elements.push_back(tallSlimSpruceOakCenterTrees);
- grawTallSpruces.elements.push_back(tallSlimSpruceOakCenterTrees);
- grawTallSpruces.elements.push_back(normalSpruceTree);
- grawTallSpruces.growOn = growOnNormalPlants;
- GrowingThing growThickSpruce;
- growThickSpruce.elements.push_back(normalSpruceTree);
- growThickSpruce.growOn = growOnNormalPlants;
- GrowingThing growBirch;
- growBirch.elements.push_back(birchTree);
- growBirch.growOn = growOnNormalPlants;
- GrowingThing growTallOak;
- growTallOak.elements.push_back(tallOakElement);
- growTallOak.growOn = growOnNormalPlants;
- GrowingThing growRose;
- growRose.elements.push_back(roseGrowElement);
- growRose.elements.push_back(roseGrowElement);
- growRose.elements.push_back(grassGrowElement);
- growRose.elements.push_back(grassGrowElement);
- growRose.elements.push_back(grassGrowElement);
- growRose.growOn = growOnNormalPlants;
- GrowingThing growTreeOrBirch;
- growTreeOrBirch.elements.push_back(basictreeElement);
- growTreeOrBirch.elements.push_back(basictreeElement);
- growTreeOrBirch.elements.push_back(birchTree);
- growTreeOrBirch.growOn = growOnNormalPlants;
- GrowingThing growBirchForest;
- growBirchForest.elements.push_back(birchTree);
- growBirchForest.elements.push_back(birchTree);
- growBirchForest.elements.push_back(tallBirchTree);
- growBirchForest.growOn = growOnNormalPlants;
- GrowingThing growRedBirchForest;
- growRedBirchForest.elements.push_back(redBirchTree);
- growRedBirchForest.elements.push_back(redBirchTree);
- growRedBirchForest.elements.push_back(redBirchTreeTall);
- growRedBirchForest.growOn = growOnNormalPlants;
- VegetationSettings growFullGrassVegetation;
- growFullGrassVegetation.growThing = growGrass;
- growFullGrassVegetation.chanceRemap = {0.1, 0.5};
- VegetationSettings growNormalTree;
- growNormalTree.growThing = growTree;
- growNormalTree.minTresshold = 0.5;
- growNormalTree.chanceRemap = {0.01, 0.08};
- VegetationSettings growBirchVegetation;
- growBirchVegetation.growThing = growBirchForest;
- growBirchVegetation.minTresshold = 0.5;
- growBirchVegetation.chanceRemap = {0.012, 0.09};
- VegetationSettings growRedBirchVegetation;
- growRedBirchVegetation.growThing = growRedBirchForest;
- growRedBirchVegetation.minTresshold = 0.5;
- growRedBirchVegetation.chanceRemap = {0.015, 0.05};
- VegetationSettings growRandomTreesVegetation;
- growRandomTreesVegetation.growThing = growTreeOrBirch;
- growRandomTreesVegetation.minTresshold = 0.65;
- growRandomTreesVegetation.chanceRemap = {0.01, 0.04};
- VegetationSettings growRosePatchesVegetation;
- growRosePatchesVegetation.growThing = growRose;
- growRosePatchesVegetation.minTresshold = 0.9;
- growRosePatchesVegetation.chanceRemap = {0.1, 0.5};
- VegetationSettings tallSpruceForestVegetation;
- tallSpruceForestVegetation.growThing = grawTallSpruces;
- tallSpruceForestVegetation.minTresshold = 0.50;
- tallSpruceForestVegetation.chanceRemap = {0.01, 0.07};
- VegetationSettings ThickSpruce;
- ThickSpruce.growThing = growThickSpruce;
- ThickSpruce.minTresshold = 0.50;
- ThickSpruce.chanceRemap = {0.01, 0.04};
-
- VegetationSettings tallForestVegetation;
- tallForestVegetation.growThing = growTallOak;
- tallForestVegetation.minTresshold = 0.5;
- tallForestVegetation.chanceRemap = {0.03, 0.10};
- auto pushTreeVegetation = [&](VegetationSettings &v)
- {
- VegetationNoiseSettings noiseSettings;
- noiseSettings.entry.push_back(v);
- greenBiomesTrees.push_back(noiseSettings);
- };
-
- pushTreeVegetation(growNormalTree);
- pushTreeVegetation(growRandomTreesVegetation);
- pushTreeVegetation(growBirchVegetation);
- pushTreeVegetation(tallForestVegetation);
- pushTreeVegetation(tallSpruceForestVegetation);
- pushTreeVegetation(growRedBirchVegetation);
- pushTreeVegetation(ThickSpruce);
-
- {
- VegetationNoiseSettings noiseSettings;
- noiseSettings.entry.push_back(growFullGrassVegetation);
- greenBiomesGrass.push_back(noiseSettings);
- }
- //desert 0
- {
- Biome b;
- b.name = "desert";
- b.color = glm::vec3{212, 189, 99} / 255.f;
- b.surfaceBlock = BlockTypes::sand;
- b.secondaryBlock = BlockTypes::sand_stone;
- b.blockVariations.push_back({BlockTypes::sand, BlockTypes::sand_stone});
- b.blockVariations.push_back({BlockTypes::sand, BlockTypes::sand_stone});
- b.blockVariations.push_back({BlockTypes::sand, BlockTypes::sand_stone});
- b.blockVariations.push_back({BlockTypes::sand, BlockTypes::sand_stone});
- b.blockVariations.push_back({BlockTypes::sand, BlockTypes::sand_stone});
- b.blockVariations.push_back({BlockTypes::sand, BlockTypes::sand_stone});
- b.blockVariations.push_back({BlockTypes::sand_stone, BlockTypes::sand_stone});
- b.blockVariations.push_back({BlockTypes::hardSandStone, BlockTypes::hardSandStone});
- b.blockVariations.push_back({BlockTypes::hardSandStone, BlockTypes::hardSandStone});
- b.blockVariations.push_back({BlockTypes::sand, BlockTypes::hardSandStone});
- b.blockVariations.push_back({BlockTypes::sand, BlockTypes::hardSandStone});
- b.blockVariations.push_back({BlockTypes::sand, BlockTypes::hardSandStone});
- b.blockVariations.push_back({BlockTypes::sand, BlockTypes::sand_stone});
- b.blockVariations.push_back({BlockTypes::sand, BlockTypes::sand_stone});
- b.blockVariations.push_back({BlockTypes::stone, BlockTypes::stone});
- b.blockVariations.push_back({BlockTypes::sand, BlockTypes::sand_stone});
- b.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- b.blockVariations.push_back({BlockTypes::sand, BlockTypes::sand_stone});
- b.blockVariations.push_back({BlockTypes::sand, BlockTypes::sand_stone});
- b.blockVariations.push_back({BlockTypes::sand, BlockTypes::sand_stone});
- b.blockVariations.push_back({BlockTypes::sand, BlockTypes::sand_stone});
- //b.grassType = BlockTypes::dead_bush;
- //b.waterType = BlockTypes::water;
- //b.waterTypeSecond = BlockTypes::water;
-
- b.swampBlock.block.push_back(BlockTypes::sand);
- b.swampBlock.block.push_back(BlockTypes::stone);
- b.swampBlock.block.push_back(BlockTypes::stone);
- b.swampBlock.block.push_back(BlockTypes::stone);
- biomes.push_back(b);
- }
- //plains 1
- {
- Biome plains;
- plains.name = "plains";
- plains.color = {0.3,0.9,0.35};
- plains.surfaceBlock = BlockTypes::grassBlock;
- plains.secondaryBlock = BlockTypes::dirt;
- VegetationNoiseSettings noiseSettings;
- noiseSettings.entry.push_back(growRandomTreesVegetation);
- noiseSettings.entry.push_back(growFullGrassVegetation);
- VegetationNoiseSettings noiseSettings2;
- noiseSettings2.entry.push_back(growRosePatchesVegetation);
-
-
- //plains.vegetationNoises.push_back(noiseSettings);
- //plains.vegetationNoises.push_back(noiseSettings2);
- plains.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- plains.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- plains.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- plains.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- plains.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- plains.blockVariations.push_back({BlockTypes::yellowGrass, BlockTypes::dirt});
- plains.blockVariations.push_back({BlockTypes::yellowGrass, BlockTypes::dirt});
- plains.blockVariations.push_back({BlockTypes::yellowGrass, BlockTypes::dirt});
- plains.blockVariations.push_back({BlockTypes::yellowGrass, BlockTypes::dirt});
- plains.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- plains.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- plains.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- plains.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- plains.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- plains.blockVariations.push_back({BlockTypes::sand, BlockTypes::sand_stone});
- plains.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- plains.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- plains.blockVariations.push_back({BlockTypes::stone, BlockTypes::stone});
- plains.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- plains.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- plains.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- plains.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- plains.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- plains.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- plains.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- plains.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- plains.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- plains.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- plains.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- plains.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- plains.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- plains.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- //plains.grassType = BlockTypes::grass;
- //plains.waterType = BlockTypes::water;
- //plains.waterTypeSecond = BlockTypes::water;
- plains.swampBlock.block.push_back(BlockTypes::dirt);
- plains.swampBlock.block.push_back(BlockTypes::dirt);
- plains.swampBlock.block.push_back(BlockTypes::dirt);
- plains.swampBlock.block.push_back(BlockTypes::dirt);
- plains.swampBlock.block.push_back(BlockTypes::clay);
- biomes.push_back(plains);
- }
-
- //snow 2
- {
- Biome b;
- b.name = "snow";
- b.color = glm::vec3{199, 199, 199} / 255.f;
- b.surfaceBlock = BlockTypes::snow_dirt;
- b.secondaryBlock = BlockTypes::dirt;
- b.blockVariations.push_back({BlockTypes::snow_dirt, BlockTypes::dirt});
- b.blockVariations.push_back({BlockTypes::snow_dirt, BlockTypes::dirt});
- b.blockVariations.push_back({BlockTypes::snow_dirt, BlockTypes::dirt});
- b.blockVariations.push_back({BlockTypes::snow_dirt, BlockTypes::dirt});
- b.blockVariations.push_back({BlockTypes::snow_dirt, BlockTypes::dirt});
- b.blockVariations.push_back({BlockTypes::snow_dirt, BlockTypes::dirt});
- b.blockVariations.push_back({BlockTypes::snow_dirt, BlockTypes::dirt});
- b.blockVariations.push_back({BlockTypes::snow_dirt, BlockTypes::dirt});
- b.blockVariations.push_back({BlockTypes::stone, BlockTypes::stone});
- b.blockVariations.push_back({BlockTypes::snow_dirt, BlockTypes::dirt});
- b.blockVariations.push_back({BlockTypes::snow_dirt, BlockTypes::dirt});
- b.blockVariations.push_back({BlockTypes::snow_dirt, BlockTypes::dirt});
- b.blockVariations.push_back({BlockTypes::snow_dirt, BlockTypes::dirt});
- b.blockVariations.push_back({BlockTypes::snow_dirt, BlockTypes::dirt});
- b.blockVariations.push_back({BlockTypes::snow_dirt, BlockTypes::dirt});
- b.blockVariations.push_back({BlockTypes::snow_dirt, BlockTypes::dirt});
- b.blockVariations.push_back({BlockTypes::snow_dirt, BlockTypes::dirt});
- b.blockVariations.push_back({BlockTypes::snow_dirt, BlockTypes::dirt});
- b.blockVariations.push_back({BlockTypes::snow_dirt, BlockTypes::dirt});
- //b.treeType = Biome::treeSpruce;
- //b.forestTresshold = 0.9;
- //b.jusGrassTresshold = 0.3;
- //b.treeChanceRemap = {0.01, 0.06};
- //b.grassChanceForestRemap = {0.4, 0.6};
- //b.justGrassChanceRemap = {0.12, 0.4};
- //b.growTreesOn = BlockTypes::snow_dirt;
- //b.growGrassOn = BlockTypes::snow_dirt;
- b.swampBlock.block.push_back(BlockTypes::dirt);
- b.swampBlock.block.push_back(BlockTypes::dirt);
- b.swampBlock.block.push_back(BlockTypes::stone);
- b.swampBlock.block.push_back(BlockTypes::stone);
- b.swampBlock.block.push_back(BlockTypes::stone);
- b.swampBlock.block.push_back(BlockTypes::cobblestone);
- b.isICy = true;
- //b.grassType = 0;
- //b.waterType = BlockTypes::ice;
- //b.waterTypeSecond = BlockTypes::water;
- biomes.push_back(b);
- }
- //wasteLand 3
- {
- Biome b;
- b.name = "waste land";
- b.color = {0.3,0.2,0.2};
- b.surfaceBlock = BlockTypes::volcanicRock;
- b.secondaryBlock = BlockTypes::volcanicRock;
- b.blockVariations.push_back({BlockTypes::volcanicRock, BlockTypes::volcanicRock});
- b.blockVariations.push_back({BlockTypes::volcanicRock, BlockTypes::volcanicRock});
- b.blockVariations.push_back({BlockTypes::volcanicRock, BlockTypes::volcanicRock});
- //b.grassType = BlockTypes::grass;
- //b.waterType = BlockTypes::water;
- b.swampBlock.block.push_back(BlockTypes::volcanicRock);
- b.swampBlock.block.push_back(BlockTypes::volcanicRock);
- b.swampBlock.block.push_back(BlockTypes::volcanicRock);
- b.swampBlock.block.push_back(BlockTypes::volcanicRock);
- b.swampBlock.block.push_back(BlockTypes::volcanicRock);
- b.swampBlock.block.push_back(BlockTypes::volcanicHotRock);
- biomes.push_back(b);
- }
- //hayland 4
- {
- Biome hay;
- hay.name = "plains";
- hay.color = {0.3,0.9,0.35};
- hay.surfaceBlock = BlockTypes::grassBlock;
- hay.secondaryBlock = BlockTypes::dirt;
- VegetationNoiseSettings noiseSettings;
- noiseSettings.entry.push_back(growRandomTreesVegetation);
- noiseSettings.entry.push_back(growFullGrassVegetation);
- VegetationNoiseSettings noiseSettings2;
- noiseSettings2.entry.push_back(growRosePatchesVegetation);
- //hay.vegetationNoises.push_back(noiseSettings);
- //hay.vegetationNoises.push_back(noiseSettings2);
- hay.blockVariations.push_back({BlockTypes::yellowGrass, BlockTypes::dirt});
- hay.blockVariations.push_back({BlockTypes::yellowGrass, BlockTypes::dirt});
- hay.blockVariations.push_back({BlockTypes::yellowGrass, BlockTypes::dirt});
- hay.blockVariations.push_back({BlockTypes::yellowGrass, BlockTypes::dirt});
- hay.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- hay.blockVariations.push_back({BlockTypes::yellowGrass, BlockTypes::dirt});
- hay.blockVariations.push_back({BlockTypes::yellowGrass, BlockTypes::dirt});
- hay.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- hay.blockVariations.push_back({BlockTypes::yellowGrass, BlockTypes::dirt});
- hay.blockVariations.push_back({BlockTypes::yellowGrass, BlockTypes::dirt});
- hay.blockVariations.push_back({BlockTypes::stone, BlockTypes::stone});
- hay.blockVariations.push_back({BlockTypes::yellowGrass, BlockTypes::dirt});
- hay.blockVariations.push_back({BlockTypes::yellowGrass, BlockTypes::dirt});
- hay.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- hay.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- hay.blockVariations.push_back({BlockTypes::yellowGrass, BlockTypes::dirt});
- hay.blockVariations.push_back({BlockTypes::yellowGrass, BlockTypes::dirt});
- hay.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- hay.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- hay.blockVariations.push_back({BlockTypes::grassBlock, BlockTypes::dirt});
- hay.blockVariations.push_back({BlockTypes::yellowGrass, BlockTypes::dirt});
- hay.blockVariations.push_back({BlockTypes::yellowGrass, BlockTypes::dirt});
- //hay.grassType = BlockTypes::grass;
- //hay.waterType = BlockTypes::water;
- //hay.waterTypeSecond = BlockTypes::water;
- hay.swampBlock.block.push_back(BlockTypes::dirt);
- hay.swampBlock.block.push_back(BlockTypes::dirt);
- hay.swampBlock.block.push_back(BlockTypes::dirt);
- hay.swampBlock.block.push_back(BlockTypes::dirt);
- hay.swampBlock.block.push_back(BlockTypes::clay);
- biomes.push_back(hay);
- }
- biomeIndexes.push_back(BiomesManager::plains);
- biomeIndexes.push_back(BiomesManager::plains);
- biomeIndexes.push_back(BiomesManager::plains);
- biomeIndexes.push_back(BiomesManager::plains);
- biomeIndexes.push_back(BiomesManager::desert);
- biomeIndexes.push_back(BiomesManager::plains);
- biomeIndexes.push_back(BiomesManager::snow);
- biomeIndexes.push_back(BiomesManager::plains);
-
- //biomeIndexes.push_back(BiomesManager::wasteLand);
- biomeIndexes.push_back(BiomesManager::plains);
-
- biomeIndexes.push_back(BiomesManager::plains);
- return true;
- }
- Biome *BiomesManager::determineBiome(float t, float h)
- {
- return &this->biomes[determineBiomeIndex(t, h)];
- }
- int BiomesManager::determineBiomeIndex(float t, int h)
- {
-
- return 0;
- }
|