#include "world.h" #include #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]; }