wip refactoring file structure
This commit is contained in:
157
engine/grid_game_engine.h
Normal file
157
engine/grid_game_engine.h
Normal file
@@ -0,0 +1,157 @@
|
||||
/*
|
||||
* Created by snapshot112 on 15/10/2025.
|
||||
*
|
||||
* A game engine build on top of a grid api to run and display games using ncurses.
|
||||
*
|
||||
* Please make sure to initialize the game engine before running any games.
|
||||
*/
|
||||
|
||||
#ifndef MINIGAME_MENU_GRID_GAME_ENGINE_H
|
||||
#define MINIGAME_MENU_GRID_GAME_ENGINE_H
|
||||
#include "grid/grid.h"
|
||||
|
||||
#define KEY_ESCAPE 27
|
||||
|
||||
typedef struct {
|
||||
int x;
|
||||
int y;
|
||||
} coordinate;
|
||||
|
||||
// Start at 1 since the color 0 is reserved for no_color.
|
||||
typedef enum {
|
||||
BLACK = 1,
|
||||
WHITE = 2,
|
||||
BLUE = 3,
|
||||
GREEN = 4,
|
||||
CYAN = 5,
|
||||
MAGENTA = 6,
|
||||
YELLOW = 7,
|
||||
RED = 8
|
||||
} game_colors;
|
||||
|
||||
typedef struct {
|
||||
char name[100];
|
||||
grid *game_map;
|
||||
} game_maps;
|
||||
|
||||
/*
|
||||
* Checks if 2 coordinates are the same.
|
||||
*
|
||||
* Input:
|
||||
* a: coordinate 1
|
||||
* b: coordinate 2
|
||||
*
|
||||
* Returns:
|
||||
* If they point to the same location: 1
|
||||
* Otherwise: 0
|
||||
*/
|
||||
int same_coordinate(coordinate a, coordinate b);
|
||||
|
||||
/*
|
||||
* A proper modulo function.
|
||||
* The one provided by c: '%' doesn't work according to the mathematical definition.
|
||||
*/
|
||||
int modulo(int number, int mod);
|
||||
|
||||
/*
|
||||
* Displays the given grid with the given offset using ncurses.
|
||||
*
|
||||
* Input:
|
||||
* gp: A pointer to the grid.
|
||||
*
|
||||
* Side effect:
|
||||
* The console is cleared and the grid is printed.
|
||||
*/
|
||||
void show_grid_on_offset(const grid *gp, int starting_x, int starting_y);
|
||||
|
||||
/*
|
||||
* Displays the given grid with ncurses.
|
||||
*
|
||||
* Input:
|
||||
* gp: A pointer to the grid.
|
||||
*
|
||||
* Side effect:
|
||||
* The console is cleared and the grid is printed.
|
||||
*/
|
||||
void show_grid(const grid *gp);
|
||||
|
||||
/*
|
||||
* Turn on color highlighting for ncurses
|
||||
*
|
||||
* Input:
|
||||
* color: The color you want the highlight to be.
|
||||
*
|
||||
* Side Effects:
|
||||
* Enables color highlighting in ncurses.
|
||||
*
|
||||
* Note:
|
||||
* This should always be disabled with disable_highlights before being called again.
|
||||
* Not disabling the current highlight before enabling another one is undefined behaviour.
|
||||
*/
|
||||
void enable_highlight(game_colors color);
|
||||
|
||||
/*
|
||||
* Turn off color highlighting for ncurses
|
||||
*
|
||||
* Input:
|
||||
* color: The color highlighting you want to turn off.
|
||||
*
|
||||
* Side Effects:
|
||||
* Enables color highlighting in ncurses.
|
||||
*
|
||||
* Note:
|
||||
* This should always be enabled with enable_highlights before being called.
|
||||
* Disabling the highlight before enabling it is undefined behaviour.
|
||||
*/
|
||||
void disable_highlight(game_colors color);
|
||||
|
||||
/*
|
||||
* Updates a single location in the grid.
|
||||
*
|
||||
* Input:
|
||||
* gp: A pointer to the grid.
|
||||
* c: The character to update the location with.
|
||||
* x: The x-coordinate of the spot you want to update.
|
||||
* y: The y-coordinate of the spot you want to update.
|
||||
*
|
||||
* Side effect:
|
||||
* The update gets applied both on the grid and on the screen.
|
||||
*/
|
||||
void update_grid(grid *gp, char c, int x, int y);
|
||||
|
||||
/*
|
||||
* Display the ending screen that matches the end state of the grid.
|
||||
*
|
||||
* Input:
|
||||
* gp: A pointer to the grid.
|
||||
* coordinate: The location to show the ending screen.
|
||||
*
|
||||
* Side Effects:
|
||||
* The end of game screen gets displayed with a graceful exit.
|
||||
*/
|
||||
void game_exit_message(const grid *gp, coordinate location);
|
||||
|
||||
/*
|
||||
* Waits for you to press ENTER before exiting the game.
|
||||
*
|
||||
* Input:
|
||||
* coordinate: The location to show the message.
|
||||
*
|
||||
* Side effect: Prints "Press ENTER to exit." game to the console.
|
||||
*/
|
||||
void graceful_exit(coordinate message_location);
|
||||
|
||||
/*
|
||||
* Initialize ncurses.
|
||||
*
|
||||
* This enables cbreak, noecho, hides the cursor and enables the extra keys.
|
||||
* This also creates the color pairs needed for game_colors and sets ESCDELAY to 0.
|
||||
*/
|
||||
void init_engine(void);
|
||||
|
||||
/*
|
||||
* Cleanup ncurses.
|
||||
*/
|
||||
void cleanup_engine(void);
|
||||
|
||||
#endif //MINIGAME_MENU_GRID_GAME_ENGINE_H
|
||||
Reference in New Issue
Block a user