aboutsummaryrefslogtreecommitdiffstats
path: root/src/world.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/world.c')
-rw-r--r--src/world.c101
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);