text and better title

This commit is contained in:
2025-01-15 11:54:18 +01:00
parent 4f2731f327
commit c4dcb061c7
5 changed files with 55 additions and 15 deletions

View File

@@ -61,7 +61,7 @@ void drawGrid(int grid[CELL_AMOUNT][CELL_AMOUNT])
void putCell(int grid[CELL_AMOUNT][CELL_AMOUNT], int posX, int posY, CellType brush, int brushSize) void putCell(int grid[CELL_AMOUNT][CELL_AMOUNT], int posX, int posY, CellType brush, int brushSize)
{ {
if (grid[posX][posY] == VOID) if (grid[posX][posY] == VOID || grid[posX][posY] == brush)
{ {
for (int i=0; i<brushSize; i++) for (int i=0; i<brushSize; i++)
{ {
@@ -72,9 +72,17 @@ void putCell(int grid[CELL_AMOUNT][CELL_AMOUNT], int posX, int posY, CellType br
} }
} }
} }
} else if (brush == VOID) }
{ else if (brush == VOID) {
grid[posX][posY] = VOID; for (int i=0; i<brushSize; i++)
{
for (int j=0; j<brushSize; j++)
{
if (posX+i < CELL_AMOUNT && posY+j < CELL_AMOUNT) {
grid[posX+i][posY+j] = brush;
}
}
}
} }
} }

View File

@@ -30,11 +30,13 @@
#ifndef CELLS_H #ifndef CELLS_H
#define CELLS_H #define CELLS_H
#define CELL_AMOUNT 80
#define CELL_SIZE_PIXELS 10
#define TARGET_FPS 60 #define TARGET_FPS 60
#define WINDOW_SIZE_PIXELS (CELL_AMOUNT * CELL_SIZE_PIXELS) #define CELL_SIZE_PIXELS 10
#define WINDOW_SIZE_PIXELS 800
#define CELL_AMOUNT (WINDOW_SIZE_PIXELS/CELL_SIZE_PIXELS)
#define DEFAULT_FONT_SIZE 20
#define YELLOW_SAND CLITERAL(Color){222, 233, 129, 255} #define YELLOW_SAND CLITERAL(Color){222, 233, 129, 255}
#define YELLOW_SAND_ALT CLITERAL(Color){166, 172, 116, 255} #define YELLOW_SAND_ALT CLITERAL(Color){166, 172, 116, 255}

View File

@@ -36,7 +36,6 @@
#include "utils.h" #include "utils.h"
/* TODO /* TODO
- Changing brush size
- Add more elements - Add more elements
- Add an interface - Add an interface
- Saving and loading world (+ better title screen) - Saving and loading world (+ better title screen)
@@ -49,6 +48,9 @@ int main ()
GameScreen currentScreen = TITLE; GameScreen currentScreen = TITLE;
CellType brush = SAND; CellType brush = SAND;
int brushSize = 1; int brushSize = 1;
int brushTextOpacity = 255;
int brushSizeOpacity = 255;
char blankStr[10] = {0};
initEnv(); initEnv();
@@ -79,13 +81,15 @@ int main ()
} else { } else {
brush = VOID; brush = VOID;
} }
printf("Brush changed for %d\n", brush); brushTextOpacity = 255;
} }
if (IsKeyPressed(KEY_UP)) { if (IsKeyPressed(KEY_UP) && brushSize < CELL_AMOUNT) {
brushSize++; brushSize++;
brushSizeOpacity = 255;
} }
if (IsKeyPressed(KEY_DOWN) && brushSize > 1) { if (IsKeyPressed(KEY_DOWN) && brushSize > 1) {
brushSize--; brushSize--;
brushSizeOpacity = 255;
} }
if (IsKeyPressed(KEY_C)) { if (IsKeyPressed(KEY_C)) {
clearGrid(grid); clearGrid(grid);
@@ -106,6 +110,11 @@ int main ()
case GAME: case GAME:
updateGrid(grid); updateGrid(grid);
drawGrid(grid); drawGrid(grid);
Vector2 mousePos = GetMousePosition();
DrawText(enumToString(brush), mousePos.x+15, mousePos.y+15, DEFAULT_FONT_SIZE, (Color){255, 255, 255, brushTextOpacity});
DrawText(intToString(blankStr, brushSize), mousePos.x-15, mousePos.y-15, DEFAULT_FONT_SIZE, (Color){255, 255, 255, brushSizeOpacity});
if (brushTextOpacity-4 > 0) brushTextOpacity-= 4;
if (brushSizeOpacity-4 > 0) brushSizeOpacity-= 4;
break; break;
default: default:
break; break;

View File

@@ -29,6 +29,8 @@
#include "raylib.h" #include "raylib.h"
#include "cells.h" #include "cells.h"
#include <stdio.h>
#include "utils.h"
void initEnv(void) void initEnv(void)
{ {
@@ -39,12 +41,27 @@ void initEnv(void)
void drawTitleScreen(void) void drawTitleScreen(void)
{ {
int titleWidth = MeasureText("SANDBOX", 40); int titleWidth = MeasureText("Sandbox", 80);
DrawRectangle(0, 0, WINDOW_SIZE_PIXELS, WINDOW_SIZE_PIXELS, DARKBLUE); DrawRectangle(0, 0, WINDOW_SIZE_PIXELS, WINDOW_SIZE_PIXELS, DARKBLUE);
DrawText("SANDBOX", (WINDOW_SIZE_PIXELS-titleWidth)/2, 20, 40, WHITE); DrawText("Sandbox", (WINDOW_SIZE_PIXELS-titleWidth)/2, (WINDOW_SIZE_PIXELS/2)-80, 80, WHITE);
int controlsWidth = MeasureText("Controls", 30);
DrawText("Controls", (WINDOW_SIZE_PIXELS-controlsWidth)/2, 100, 30, WHITE);
DrawText("Left click to spawn sand", 25, 150, 30, WHITE);
int startGameWidth = MeasureText("Press Space to start!", 30); int startGameWidth = MeasureText("Press Space to start!", 30);
DrawText("Press Space to start!", (WINDOW_SIZE_PIXELS-startGameWidth)/2, 400, 30, WHITE); DrawText("Press Space to start!", (WINDOW_SIZE_PIXELS-startGameWidth)/2, 400, 30, WHITE);
}
char* enumToString(CellType brush)
{
switch(brush)
{
case VOID: return "Void";
case SAND: return "Sand";
case STONE: return "Stone";
case WATER: return "Water";
default: return "Unknown";
}
}
char* intToString(char* str, int n)
{
sprintf(str, "%d", n);
return str;
} }

View File

@@ -32,5 +32,9 @@
void initEnv(void); void initEnv(void);
void drawTitleScreen(void); void drawTitleScreen(void);
char* enumToString(CellType brush);
char* intToString(char* str, int n);
#define ENOUGH 10
#endif // UTILS_H #endif // UTILS_H