Files
Iris/iris_c/world.c
2026-02-17 19:42:35 +01:00

42 lines
1.1 KiB
C

#include "world.h"
#include <stddef.h>
#include "random.h"
static quadrant_type random_quadrant_type(void) {
uint8_t roll = random_range(100);
if (roll < 30) return Q_EMPTY;
if (roll < 40) return Q_ASTEROID_FIELD;
if (roll < 50) return Q_STAR_SYSTEM;
if (roll < 60) return Q_NEBULA;
if (roll < 70) return Q_BLACK_HOLE;
if (roll < 80) return Q_WHITE_HOLE;
if (roll < 85) return Q_PULSAR;
if (roll < 90) return Q_QUASAR;
if (roll < 95) return Q_SUPERNOVA;
if (roll < 99) return Q_ANOMALY;
return Q_SINGULARITY;
}
void world_generate(world_t *w) {
if (w == NULL) return;
for (uint16_t y = 0; y < WORLD_HEIGHT; y++) {
for (uint16_t x = 0; x < WORLD_WIDTH; x++) {
quadrant_t *q = &w->quadrants[y][x];
q->type = random_quadrant_type();
q->is_old = (random_range(100) < 20);
q->is_visited = false;
q->is_discovered = false;
}
}
}
const quadrant_t *world_get_quadrant(const world_t *w, uint16_t x, uint16_t y) {
if (w == NULL) return NULL;
if (x >= WORLD_WIDTH || y >= WORLD_HEIGHT) return NULL;
return &w->quadrants[y][x];
}