diff options
| author | nathan <nathansmith@disroot.org> | 2025-11-25 21:04:58 +0000 |
|---|---|---|
| committer | nathan <nathansmith@disroot.org> | 2025-11-25 21:04:58 +0000 |
| commit | 73a98475757c34d6a8a485ac9c06185bdfdeea8c (patch) | |
| tree | efeb5ce7fef56321b9786b7c783c11b6e2d0b7b2 | |
| parent | ea1e901d40c0534d084922249d0ab0cb1da34d39 (diff) | |
| download | FindThings-73a98475757c34d6a8a485ac9c06185bdfdeea8c.tar.gz FindThings-73a98475757c34d6a8a485ac9c06185bdfdeea8c.tar.bz2 FindThings-73a98475757c34d6a8a485ac9c06185bdfdeea8c.zip | |
| -rw-r--r-- | src/map.c | 40 | ||||
| -rw-r--r-- | src/map.h | 2 | ||||
| -rw-r--r-- | src/settings.c | 6 | ||||
| -rw-r--r-- | src/settings.h | 4 |
4 files changed, 29 insertions, 23 deletions
@@ -8,7 +8,7 @@ void repositionMap(Map* map) map->rect.x = GetRenderWidth() - map->rect.width; } -void initMapHeightmap(Map* map, const World* world) +void initMapHeightmap(Map* map, const World* world, const Settings* settings) { Image image = LoadImageFromTexture(world->heightmapTexture); Color* colors = LoadImageColors(image); @@ -16,21 +16,20 @@ void initMapHeightmap(Map* map, const World* world) for (int index = 0; index < WORLD_IMAGE_WIDTH * WORLD_IMAGE_HEIGHT; ++index) { - unsigned char grayValue = GRAY_VALUE(colors[index]); - unsigned char alpha = colors[index].a; - - if (grayValue >= 170) - { - colors[index] = (Color){grayValue, 0, 0, alpha}; - } - else if (grayValue >= 85) - { - colors[index] = (Color){0, grayValue * 2, grayValue, alpha}; - } - else - { - colors[index] = (Color){grayValue, 0, grayValue, alpha}; - } + float height = (float)GRAY_VALUE(colors[index]) / 255.0; + + // Limit color acount. + height *= settings->mapColorCount; + height = floorf(height); + height /= settings->mapColorCount; + + Color lowColor = settings->mapLowColor; + Color highColor = settings->mapHighColor; + + // Lerp between low and high colors. + colors[index].r = Lerp(lowColor.r, highColor.r, height); + colors[index].g = Lerp(lowColor.g, highColor.g, height); + colors[index].b = Lerp(lowColor.b, highColor.b, height); } image = (Image){ @@ -40,8 +39,6 @@ void initMapHeightmap(Map* map, const World* world) .format = PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, .mipmaps = 1 }; - - ImageColorContrast(&image, 25.0); map->heightmap = LoadTextureFromImage(image); UnloadImage(image); @@ -66,7 +63,7 @@ void initMap(Map* map, const World* world, const Settings* settings) .isFullSize = false }; - initMapHeightmap(map, world); + initMapHeightmap(map, world, settings); repositionMap(map); } @@ -109,8 +106,9 @@ void updateMapPreview(Map* map, Game* game) if (mouseScroll != 0.0) { - map->camera.zoom = expf(logf(map->camera.zoom) + - ((float)GetMouseWheelMove() * 0.1f)); + map->camera.zoom = expf( + logf(map->camera.zoom) + + ((float)GetMouseWheelMove() * settings->mapZoomSpeed)); map->camera.zoom = Clamp(map->camera.zoom, MAP_ZOOM_MIN, MAP_ZOOM_MAX); } @@ -4,7 +4,7 @@ #ifndef MAP_H #define MAP_H -#define MAP_ZOOM_MIN 2.0 +#define MAP_ZOOM_MIN 0.5 #define MAP_ZOOM_MAX 30.0 typedef struct { diff --git a/src/settings.c b/src/settings.c index 3dd1fa5..0d65432 100644 --- a/src/settings.c +++ b/src/settings.c @@ -22,7 +22,11 @@ Settings defaultSettings() .mapPreviewWidth = 300.0, .mapPreviewHeight = 300.0, .mapAlpha = (unsigned char)255.0 * 0.80, - .mapPreviewZoomDefault = 10.0, + .mapPreviewZoomDefault = 3.0, + .mapLowColor = (Color){255, 255, 0, 255}, + .mapHighColor = (Color){0, 0, 255, 255}, + .mapColorCount = 7.0, + .mapZoomSpeed = 0.2, .mouseSpeed = 0.1, .forwardKey = KEY_W, .backwardKey = KEY_S, diff --git a/src/settings.h b/src/settings.h index 94e21ad..d6416ba 100644 --- a/src/settings.h +++ b/src/settings.h @@ -39,6 +39,10 @@ typedef struct { float mapPreviewHeight; unsigned char mapAlpha; float mapPreviewZoomDefault; + Color mapLowColor; + Color mapHighColor; + float mapColorCount; + float mapZoomSpeed; // Controls. float mouseSpeed; |
