This commit is contained in:
2025-01-15 09:46:16 +01:00
parent 1334c99eab
commit 2110eca47a
3 changed files with 49 additions and 11 deletions

View File

@@ -37,21 +37,29 @@ void drawGrid(int grid[CELL_AMOUNT][CELL_AMOUNT])
{ {
for (size_t j=0; j<CELL_AMOUNT; j++) for (size_t j=0; j<CELL_AMOUNT; j++)
{ {
if (grid[i][j] == VOID) switch(grid[i][j])
{ {
DrawRectangle(CELL_SIZE_PIXELS*j, CELL_SIZE_PIXELS*i, CELL_SIZE_PIXELS, CELL_SIZE_PIXELS, BLACK); case VOID:
} DrawRectangle(CELL_SIZE_PIXELS*j, CELL_SIZE_PIXELS*i, CELL_SIZE_PIXELS, CELL_SIZE_PIXELS, BLACK);
if (grid[i][j] == SAND) break;
{ case SAND:
DrawRectangle(CELL_SIZE_PIXELS*j, CELL_SIZE_PIXELS*i, CELL_SIZE_PIXELS, CELL_SIZE_PIXELS, MAROON); DrawRectangle(CELL_SIZE_PIXELS*j, CELL_SIZE_PIXELS*i, CELL_SIZE_PIXELS, CELL_SIZE_PIXELS, YELLOW_SAND);
break;
case STONE:
DrawRectangle(CELL_SIZE_PIXELS*j, CELL_SIZE_PIXELS*i, CELL_SIZE_PIXELS, CELL_SIZE_PIXELS, DARKGRAY);
default:
break;
} }
} }
} }
} }
void putCell(int grid[CELL_AMOUNT][CELL_AMOUNT], int posX, int posY) void putCell(int grid[CELL_AMOUNT][CELL_AMOUNT], int posX, int posY, CellType brush)
{ {
grid[posX][posY] = SAND; if (grid[posX][posY] == VOID)
{
grid[posX][posY] = brush;
}
} }
void updateGrid(int grid[CELL_AMOUNT][CELL_AMOUNT]) void updateGrid(int grid[CELL_AMOUNT][CELL_AMOUNT])

View File

@@ -36,6 +36,9 @@
#define WINDOW_SIZE_PIXELS (CELL_AMOUNT * CELL_SIZE_PIXELS) #define WINDOW_SIZE_PIXELS (CELL_AMOUNT * CELL_SIZE_PIXELS)
#define YELLOW_SAND CLITERAL(Color){222, 233, 129, 255}
#define YELLOW_SAND_ALT CLITERAL(Color){166, 172, 116, 255}
typedef enum GameScreen typedef enum GameScreen
{ {
TITLE, TITLE,
@@ -45,11 +48,14 @@ typedef enum GameScreen
typedef enum CellType typedef enum CellType
{ {
VOID, VOID,
SAND SAND,
STONE,
WATER,
CELL_TYPE_MAX
} CellType; } CellType;
void drawGrid(int grid[CELL_AMOUNT][CELL_AMOUNT]); void drawGrid(int grid[CELL_AMOUNT][CELL_AMOUNT]);
void putCell(int grid[CELL_AMOUNT][CELL_AMOUNT], int posX, int posY); void putCell(int grid[CELL_AMOUNT][CELL_AMOUNT], int posX, int posY, CellType brush);
void updateGrid(int grid[CELL_AMOUNT][CELL_AMOUNT]); void updateGrid(int grid[CELL_AMOUNT][CELL_AMOUNT]);
#endif // CELLS_H #endif // CELLS_H

View File

@@ -29,11 +29,24 @@
#include "raylib.h" #include "raylib.h"
#include "cells.h" #include "cells.h"
#include <stddef.h>
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
/* TODO
- Changing brush size
- Add more elements
- Add an interface
- Saving and loading world (+ better title screen)
*/
int main () int main ()
{ {
srand(time(NULL));
int grid[CELL_AMOUNT][CELL_AMOUNT] = {0}; int grid[CELL_AMOUNT][CELL_AMOUNT] = {0};
GameScreen currentScreen = TITLE; GameScreen currentScreen = TITLE;
CellType brush = SAND;
SetConfigFlags(FLAG_VSYNC_HINT | FLAG_WINDOW_HIGHDPI); SetConfigFlags(FLAG_VSYNC_HINT | FLAG_WINDOW_HIGHDPI);
InitWindow(WINDOW_SIZE_PIXELS, WINDOW_SIZE_PIXELS, "Sandbox"); InitWindow(WINDOW_SIZE_PIXELS, WINDOW_SIZE_PIXELS, "Sandbox");
@@ -56,7 +69,17 @@ int main ()
Vector2 cellPosition = GetMousePosition(); Vector2 cellPosition = GetMousePosition();
int i = cellPosition.y/CELL_SIZE_PIXELS; int i = cellPosition.y/CELL_SIZE_PIXELS;
int j = cellPosition.x/CELL_SIZE_PIXELS; int j = cellPosition.x/CELL_SIZE_PIXELS;
putCell(grid, i, j); putCell(grid, i, j, brush);
}
if (IsMouseButtonPressed(MOUSE_BUTTON_RIGHT)) {
// spawn some text corresponding to Brush Type, fading
if (brush < CELL_TYPE_MAX-1)
{
brush++;
} else {
brush = VOID;
}
printf("Brush changed for %d\n", brush);
} }
break; break;
default: default:
@@ -65,6 +88,7 @@ int main ()
/* Drawing */ /* Drawing */
BeginDrawing(); BeginDrawing();
ClearBackground(BLACK);
switch (currentScreen) switch (currentScreen)
{ {
case TITLE: case TITLE: