diff options
Diffstat (limited to 'src/world.c')
-rw-r--r-- | src/world.c | 101 |
1 files changed, 61 insertions, 40 deletions
diff --git a/src/world.c b/src/world.c index 8547eef..1d0aa10 100644 --- a/src/world.c +++ b/src/world.c @@ -377,46 +377,6 @@ Seed putEntityInRandomPlace(const World* world, Seed seed, Entity* entity) return seed; } -Seed generateWorldPlants(World* world, Seed seed, int start, int end) -{ - for (int index = start; index < end; ++index) - { - FT_RANDOM16(seed); - - // Get id for plant. - EntityId plants[] = {TREE, BUSH, FLOWER}; - size_t plantsSize = 3; - EntityId id = plants[seed % plantsSize]; - - // Create entity. - Entity entity = createEntity(id, Vector3Zero()); - seed = putEntityInRandomPlace(world, seed, &entity); - - world->entities[index] = entity; - } - - return seed; -} - -Seed generateWorldItems(World* world, Seed seed, int start, int end) -{ - for (int index = start; index < end; ++index) - { - FT_RANDOM16(seed); - - EntityId items[] = {OLD_MINT, STICKY_NICKEL}; - size_t itemsSize = 2; - EntityId id = items[seed % itemsSize]; - - Entity entity = createEntity(id, Vector3Zero()); - seed = putEntityInRandomPlace(world, seed, &entity); - - world->entities[index] = entity; - } - - return seed; -} - Seed generatePond(World* world, Color* heightmap, WorldUID id, Seed seed) { // Create pond entity. @@ -492,6 +452,60 @@ Seed generatePond(World* world, Color* heightmap, WorldUID id, Seed seed) return seed; } +Seed generateWorldPlants(World* world, Seed seed, int start, int end) +{ + for (int index = start; index < end; ++index) + { + FT_RANDOM16(seed); + + // Get id for plant. + EntityId plants[] = {TREE, BUSH, FLOWER}; + size_t plantsSize = 3; + EntityId id = plants[seed % plantsSize]; + + // Create entity. + Entity entity = createEntity(id, Vector3Zero()); + seed = putEntityInRandomPlace(world, seed, &entity); + + world->entities[index] = entity; + } + + return seed; +} + +Seed generateWorldUtilityPoles(World* world, Seed seed, int start, int end) +{ + for (int index = start; index < end; ++index) + { + FT_RANDOM16(seed); + + Entity entity = createEntity(UTILITY_POLE, Vector3Zero()); + seed = putEntityInRandomPlace(world, seed, &entity); + world->entities[index] = entity; + } + + return seed; +} + +Seed generateWorldItems(World* world, Seed seed, int start, int end) +{ + for (int index = start; index < end; ++index) + { + FT_RANDOM16(seed); + + EntityId items[] = {OLD_MINT, STICKY_NICKEL}; + size_t itemsSize = 2; + EntityId id = items[seed % itemsSize]; + + Entity entity = createEntity(id, Vector3Zero()); + seed = putEntityInRandomPlace(world, seed, &entity); + + world->entities[index] = entity; + } + + return seed; +} + Texture generateGroundTexture() { Image image = GenImageWhiteNoise(WORLD_IMAGE_WIDTH, WORLD_IMAGE_HEIGHT, @@ -548,10 +562,17 @@ World createWorld(Seed seed) world.heightmap.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = generateGroundTexture(); + // Plants int start = placeId + 1; int end = WORLD_PLANT_COUNT + start; seed = generateWorldPlants(&world, seed, start, end); + // Utility poles. + start = end; + end = WORLD_UTILITY_POLE_COUNT + start; + seed = generateWorldUtilityPoles(&world, seed, start, end); + + // Items. start = end; end = WORLD_ENTITY_MAX; seed = generateWorldItems(&world, seed, start, end); |