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