From fe2baedc760c2f29e2c720f6b1132a2de33c5430 Mon Sep 17 00:00:00 2001 From: Mel Date: Sat, 8 Jul 2023 03:25:44 +0200 Subject: Use own size types --- src/World/Generation/Generator.hpp | 49 +++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 25 deletions(-) (limited to 'src/World/Generation/Generator.hpp') diff --git a/src/World/Generation/Generator.hpp b/src/World/Generation/Generator.hpp index c18de45..ee78dc5 100644 --- a/src/World/Generation/Generator.hpp +++ b/src/World/Generation/Generator.hpp @@ -1,48 +1,47 @@ #pragma once -#include - -#include "Decoration.hpp" +#include "../../Common/Sizes.hpp" #include "../Chunk.hpp" #include "../BiomeType.hpp" #include "../../Math/Perlin.hpp" #include "../../Math/Tensor.hpp" +#include "Decoration.hpp" namespace MC::World::Generation { class Generator { public: Generator() = default; - Chunk generate(int64_t chunk_x, int64_t chunk_y); + Chunk generate(I64 chunk_x, I64 chunk_y); private: template using Map2D = Matrix; template using Map3D = Tensor<3, V, Chunk::Width, Chunk::Height, Chunk::Width>; - Map2D generate_landmass_map(int64_t chunk_x, int64_t chunk_y); - Map2D generate_hill_map(int64_t chunk_x, int64_t chunk_y); - Map2D generate_height_map(Map2D& landmass_map, Map2D& hill_map); + Map2D generate_landmass_map(I64 chunk_x, I64 chunk_y); + Map2D generate_hill_map(I64 chunk_x, I64 chunk_y); + Map2D generate_height_map(Map2D& landmass_map, Map2D& hill_map); - Map2D generate_temperature_map(int64_t chunk_x, int64_t chunk_y); - Map2D generate_humidity_map(int64_t chunk_x, int64_t chunk_y); + Map2D generate_temperature_map(I64 chunk_x, I64 chunk_y); + Map2D generate_humidity_map(I64 chunk_x, I64 chunk_y); Map2D generate_biome_map( - Map2D& landmass_map, Map2D& hill_map, - Map2D& temperature_map, Map2D& humidity_map + Map2D& landmass_map, Map2D& hill_map, + Map2D& temperature_map, Map2D& humidity_map ); - Map3D generate_terrain(Map2D& height_map, int64_t chunk_x, int64_t chunk_y); + Map3D generate_terrain(Map2D& height_map, I64 chunk_x, I64 chunk_y); - void decorate_soil(Chunk& chunk, Map2D& biome_map, Map3D& terrain_map); + void decorate_soil(Chunk& chunk, Map2D& biome_map, Map3D& terrain_map); - [[nodiscard]] float get_landmass(Vector<2> pos) const; - [[nodiscard]] float get_hill(Vector<2> pos) const; + [[nodiscard]] Real get_landmass(Vector<2> pos) const; + [[nodiscard]] Real get_hill(Vector<2> pos) const; - [[nodiscard]] float get_humidity(Vector<2> pos) const; - [[nodiscard]] float get_temperature(Vector<2> pos) const; + [[nodiscard]] Real get_humidity(Vector<2> pos) const; + [[nodiscard]] Real get_temperature(Vector<2> pos) const; - [[nodiscard]] float get_density(Vector<3> pos) const; + [[nodiscard]] Real get_density(Vector<3> pos) const; - static Vector<2> chunk_position_to_world_vector(int64_t chunk_x, int64_t chunk_y, uint x, uint y); + static Vector<2> chunk_position_to_world_vector(I64 chunk_x, I64 chunk_y, UInt x, UInt y); static inline std::vector s_decorators = { new TreeDecorator(), @@ -60,14 +59,14 @@ private: enum class LandmassSlice { Land, Beach, Ocean }; enum class TemperatureZone { Hot, Fair, Cold }; enum class HumidityZone { Wet, Lush, Temperate, Dry }; - static constexpr uint HillSliceSize = (uint)HillSlice::Valley + 1; - static constexpr uint LandmassSliceSize = (uint)LandmassSlice::Ocean + 1; - static constexpr uint TemperatureZoneSize = (uint)TemperatureZone::Cold + 1; - static constexpr uint HumidityZoneSize = (uint)HumidityZone::Dry + 1; + static constexpr UInt HillSliceSize = (UInt)HillSlice::Valley + 1; + static constexpr UInt LandmassSliceSize = (UInt)LandmassSlice::Ocean + 1; + static constexpr UInt TemperatureZoneSize = (UInt)TemperatureZone::Cold + 1; + static constexpr UInt HumidityZoneSize = (UInt)HumidityZone::Dry + 1; - static constexpr size_t biome_lookup_table_size = (size_t)HillSliceSize * (size_t)LandmassSliceSize * (size_t)TemperatureZoneSize * (size_t)HumidityZoneSize; + static constexpr USize biome_lookup_table_size = (USize)HillSliceSize * (USize)LandmassSliceSize * (USize)TemperatureZoneSize * (USize)HumidityZoneSize; static std::array create_biome_lookup_table(); - static size_t biome_lookup_table_index(HillSlice hill_slice, LandmassSlice landmass_slice, TemperatureZone temperature_zone, HumidityZone humidity_zone); + static USize biome_lookup_table_index(HillSlice hill_slice, LandmassSlice landmass_slice, TemperatureZone temperature_zone, HumidityZone humidity_zone); static BiomeType lookup_biome(HillSlice hill_slice, LandmassSlice landmass_slice, TemperatureZone temperature_zone, HumidityZone humidity_zone); static inline std::array biome_lookup_table = create_biome_lookup_table(); }; -- cgit 1.4.1