text and better title
This commit is contained in:
16
src/cells.c
16
src/cells.c
@@ -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)
|
||||
{
|
||||
grid[posX][posY] = VOID;
|
||||
}
|
||||
else if (brush == 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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}
|
||||
|
||||
15
src/main.c
15
src/main.c
@@ -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;
|
||||
|
||||
27
src/utils.c
27
src/utils.c
@@ -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;
|
||||
}
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user