diff options
Diffstat (limited to 'src/world.c')
-rw-r--r-- | src/world.c | 35 |
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. |