STONE
This commit is contained in:
22
src/cells.c
22
src/cells.c
@@ -37,21 +37,29 @@ void drawGrid(int grid[CELL_AMOUNT][CELL_AMOUNT])
|
||||
{
|
||||
for (size_t j=0; j<CELL_AMOUNT; j++)
|
||||
{
|
||||
if (grid[i][j] == VOID)
|
||||
switch(grid[i][j])
|
||||
{
|
||||
case VOID:
|
||||
DrawRectangle(CELL_SIZE_PIXELS*j, CELL_SIZE_PIXELS*i, CELL_SIZE_PIXELS, CELL_SIZE_PIXELS, BLACK);
|
||||
}
|
||||
if (grid[i][j] == SAND)
|
||||
{
|
||||
DrawRectangle(CELL_SIZE_PIXELS*j, CELL_SIZE_PIXELS*i, CELL_SIZE_PIXELS, CELL_SIZE_PIXELS, MAROON);
|
||||
break;
|
||||
case SAND:
|
||||
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])
|
||||
|
||||
10
src/cells.h
10
src/cells.h
@@ -36,6 +36,9 @@
|
||||
|
||||
#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
|
||||
{
|
||||
TITLE,
|
||||
@@ -45,11 +48,14 @@ typedef enum GameScreen
|
||||
typedef enum CellType
|
||||
{
|
||||
VOID,
|
||||
SAND
|
||||
SAND,
|
||||
STONE,
|
||||
WATER,
|
||||
CELL_TYPE_MAX
|
||||
} CellType;
|
||||
|
||||
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]);
|
||||
|
||||
#endif // CELLS_H
|
||||
26
src/main.c
26
src/main.c
@@ -29,11 +29,24 @@
|
||||
|
||||
#include "raylib.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 ()
|
||||
{
|
||||
srand(time(NULL));
|
||||
int grid[CELL_AMOUNT][CELL_AMOUNT] = {0};
|
||||
GameScreen currentScreen = TITLE;
|
||||
CellType brush = SAND;
|
||||
|
||||
SetConfigFlags(FLAG_VSYNC_HINT | FLAG_WINDOW_HIGHDPI);
|
||||
InitWindow(WINDOW_SIZE_PIXELS, WINDOW_SIZE_PIXELS, "Sandbox");
|
||||
@@ -56,7 +69,17 @@ int main ()
|
||||
Vector2 cellPosition = GetMousePosition();
|
||||
int i = cellPosition.y/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;
|
||||
default:
|
||||
@@ -65,6 +88,7 @@ int main ()
|
||||
|
||||
/* Drawing */
|
||||
BeginDrawing();
|
||||
ClearBackground(BLACK);
|
||||
switch (currentScreen)
|
||||
{
|
||||
case TITLE:
|
||||
|
||||
Reference in New Issue
Block a user