aboutsummaryrefslogtreecommitdiffstats
path: root/src/world.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/world.c')
-rw-r--r--src/world.c35
1 files changed, 31 insertions, 4 deletions
diff --git a/src/world.c b/src/world.c
index 82ee6da..c7c34d5 100644
--- a/src/world.c
+++ b/src/world.c
@@ -485,10 +485,16 @@ Seed generatePond(World* world, Color* heightmap, WorldUID id, Seed seed)
return seed;
}
-// TODO: get this mother fucker done in a sane amount of time
-Seed generateWorldSamanthasPlace(World* world, Seed seed, int spotIndex)
+void generateWorldSamanthasPlace(World* world, Color* heightmap)
{
- return seed;
+ Rectangle area = (Rectangle){
+ .x = WORLD_IMAGE_WIDTH / 2.0 - PLACE_SAMANTHAS_SPOT_SIZE / 2.0,
+ .y = WORLD_IMAGE_HEIGHT / 2.0 - PLACE_SAMANTHAS_SPOT_SIZE / 2.0,
+ .width = PLACE_SAMANTHAS_SPOT_SIZE,
+ .height = PLACE_SAMANTHAS_SPOT_SIZE
+ };
+
+ averageOutAreaWorld(world, heightmap, area);
}
Seed generateWorldPlants(World* world, Seed seed, int start, int end)
@@ -653,6 +659,18 @@ Texture generateGroundTexture()
return texture;
}
+Seed generateWorldCharacters(World* world, Seed seed, int index)
+{
+ // Create samantha.
+ Entity samantha = createEntity(
+ SAMANTHA,
+ Vector3Add(Vector3Scale(world->size, 0.5), SAMANTHA_OFFSET));
+ placeEntityOnGround(&samantha, world);
+ world->entities[index] = samantha;
+
+ return seed;
+}
+
World createWorld(Seed seed, const Assets* assets)
{
World world;
@@ -668,9 +686,13 @@ World createWorld(Seed seed, const Assets* assets)
// Places.
WorldUID placeId = 0;
+
+ // Pond.
seed = generatePond(&world, colors, placeId, seed);
world.places[0] = placeId;
+ generateWorldSamanthasPlace(&world, colors);
+
// Heightmap model.
image = (Image){
.data = colors,
@@ -705,9 +727,14 @@ World createWorld(Seed seed, const Assets* assets)
end = WORLD_UTILITY_POLE_COUNT + start;
seed = generateWorldUtilityPoles(&world, assets, seed, start, end);
+ // Characters.
+ start = end;
+ end = WORLD_CHARACTER_COUNT + start;
+ seed = generateWorldCharacters(&world, seed, start);
+
// Items.
start = end;
- end = WORLD_ENTITY_MAX - 1;
+ end = WORLD_ENTITY_MAX;
seed = generateWorldItems(&world, seed, start, end);
// Generate BVH.