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)
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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}
|
||||||
|
|||||||
15
src/main.c
15
src/main.c
@@ -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;
|
||||||
|
|||||||
27
src/utils.c
27
src/utils.c
@@ -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;
|
||||||
}
|
}
|
||||||
@@ -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
|
||||||
Reference in New Issue
Block a user