From 4f2731f32738d4cd0643b57fd4abf3e4870ccba0 Mon Sep 17 00:00:00 2001 From: xamidev Date: Wed, 15 Jan 2025 11:02:30 +0100 Subject: [PATCH] more mediocre water? --- src/cells.c | 84 +++++++++++++++++++++++++++++------------------------ src/cells.h | 3 +- src/main.c | 12 +++++++- 3 files changed, 59 insertions(+), 40 deletions(-) diff --git a/src/cells.c b/src/cells.c index fdb2196..551b6ef 100644 --- a/src/cells.c +++ b/src/cells.c @@ -30,6 +30,7 @@ #include #include "cells.h" #include "raylib.h" +#include void drawGrid(int grid[CELL_AMOUNT][CELL_AMOUNT]) { @@ -58,66 +59,62 @@ void drawGrid(int grid[CELL_AMOUNT][CELL_AMOUNT]) } } -void putCell(int grid[CELL_AMOUNT][CELL_AMOUNT], int posX, int posY, CellType brush) +void putCell(int grid[CELL_AMOUNT][CELL_AMOUNT], int posX, int posY, CellType brush, int brushSize) { if (grid[posX][posY] == VOID) { - grid[posX][posY] = brush; + for (int i=0; i=0; i--) - { - for (int j=0; j= 0; i--) { + for (int j = 0; j < CELL_AMOUNT; j++) { + switch (grid[i][j]) { case VOID: break; case SAND: - if (i+1 < CELL_AMOUNT && grid[i+1][j] == VOID) { + if (i + 1 < CELL_AMOUNT && grid[i + 1][j] == VOID) { grid[i][j] = VOID; - grid[i+1][j] = SAND; // falling downwards - } else if (i+1 < CELL_AMOUNT && j+1 < CELL_AMOUNT && grid[i+1][j+1] == VOID) { + grid[i + 1][j] = SAND; + } else if (i + 1 < CELL_AMOUNT && j + 1 < CELL_AMOUNT && grid[i + 1][j + 1] == VOID) { grid[i][j] = VOID; - grid[i+1][j+1] = SAND; // falling down-right - } - else if (i+1 < CELL_AMOUNT && j-1 >= 0 && grid[i+1][j-1] == VOID) { + grid[i + 1][j + 1] = SAND; + } else if (i + 1 < CELL_AMOUNT && j - 1 >= 0 && grid[i + 1][j - 1] == VOID) { grid[i][j] = VOID; - grid[i+1][j-1] = SAND; // falling down-left - } /* Sand falling thru diagonally placed stone: it's not a bug, it's a FEATURE! lol */ - else if (i+1 < CELL_AMOUNT && grid[i+1][j] == WATER) { + grid[i + 1][j - 1] = SAND; + } else if (i + 1 < CELL_AMOUNT && grid[i + 1][j] == WATER) { grid[i][j] = WATER; - grid[i+1][j] = SAND; + grid[i + 1][j] = SAND; } break; case WATER: - if (i+1 < CELL_AMOUNT && grid[i+1][j] == VOID) { + if (i + 1 < CELL_AMOUNT && grid[i + 1][j] == VOID) { grid[i][j] = VOID; - grid[i+1][j] = WATER; - } else if (i+1 < CELL_AMOUNT && j+1 < CELL_AMOUNT && grid[i+1][j+1] == VOID) { + grid[i + 1][j] = WATER; + } else if (i + 1 < CELL_AMOUNT && j + 1 < CELL_AMOUNT && grid[i + 1][j + 1] == VOID) { grid[i][j] = VOID; - grid[i+1][j+1] = WATER; - } else if (i+1 < CELL_AMOUNT && j-1 >= 0 && grid[i+1][j-1] == VOID) { + grid[i + 1][j + 1] = WATER; + } else if (i + 1 < CELL_AMOUNT && j - 1 >= 0 && grid[i + 1][j - 1] == VOID) { grid[i][j] = VOID; - grid[i+1][j-1] = WATER; - } else if (j+1 < CELL_AMOUNT && grid[i][j+1] == VOID) { - grid[i][j] = VOID; - grid[i][j+1] = WATER; - } else if (j-1 >= 0 && grid[i][j-1] == VOID) { - grid[i][j] = VOID; - grid[i][j-1] = WATER; - } else if (j+1 < CELL_AMOUNT && grid[i][j+1] == WATER) { - grid[i][j] = WATER; - grid[i][j+1] = WATER; - } else if (j-1 >= 0 && grid[i][j-1] == WATER) { - grid[i][j] = WATER; - grid[i][j-1] = WATER; + grid[i + 1][j - 1] = WATER; + } else { + int direction = rand() % 2 == 0 ? -1 : 1; + if (j + direction >= 0 && j + direction < CELL_AMOUNT && grid[i][j + direction] == VOID) { + grid[i][j] = VOID; + grid[i][j + direction] = WATER; + } } break; default: @@ -125,4 +122,15 @@ void updateGrid(int grid[CELL_AMOUNT][CELL_AMOUNT]) } } } +} + +void clearGrid(int grid[CELL_AMOUNT][CELL_AMOUNT]) +{ + for (size_t i=0; i 1) { + brushSize--; + } + if (IsKeyPressed(KEY_C)) { + clearGrid(grid); + } break; default: break;