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)
{
if (grid[posX][posY] == VOID)
if (grid[posX][posY] == VOID || grid[posX][posY] == brush)
{
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) {
for (int i=0; i<brushSize; i++)
{
grid[posX][posY] = VOID;
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
#define CELLS_H
#define CELL_AMOUNT 80
#define CELL_SIZE_PIXELS 10
#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_ALT CLITERAL(Color){166, 172, 116, 255}

View File

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

View File

@@ -29,6 +29,8 @@
#include "raylib.h"
#include "cells.h"
#include <stdio.h>
#include "utils.h"
void initEnv(void)
{
@@ -39,12 +41,27 @@ void initEnv(void)
void drawTitleScreen(void)
{
int titleWidth = MeasureText("SANDBOX", 40);
int titleWidth = MeasureText("Sandbox", 80);
DrawRectangle(0, 0, WINDOW_SIZE_PIXELS, WINDOW_SIZE_PIXELS, DARKBLUE);
DrawText("SANDBOX", (WINDOW_SIZE_PIXELS-titleWidth)/2, 20, 40, 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);
DrawText("Sandbox", (WINDOW_SIZE_PIXELS-titleWidth)/2, (WINDOW_SIZE_PIXELS/2)-80, 80, WHITE);
int startGameWidth = MeasureText("Press Space to start!", 30);
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 drawTitleScreen(void);
char* enumToString(CellType brush);
char* intToString(char* str, int n);
#define ENOUGH 10
#endif // UTILS_H