embedded-software
reusable software modules for embedded systems
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
game.h
Go to the documentation of this file.
1 #ifndef _GAME_H_
2 #define _GAME_H_
3 
4 #include "project_settings.h"
5 
6 #ifndef USE_MODULE_BUFFER_PRINTF
7 #error "This module requires optional UART functionality provided by buffer_printf. Please declare USE_MODULE_BUFFER_PRINTF in project_settings.h"
8 #endif
9 
10 #include "terminal.h"
11 
12 #ifdef USE_MODULE_GAME_CONTROLLER
13 #include "game_controller.h"
14 #endif
15 
65 typedef struct {
66  char c;
67  char x;
68  char y;
69  char status;
71 
81 typedef struct {
82  char c;
83  char x;
84  char y;
85  char x_next_node;
86  char y_next_node;
87  int first;
88  int last;
89  int data;
90  char status;
92 
101 typedef struct {
102  char name[16];
103  enum term_color color;
104  uint8_t skill;
106 
107 #ifndef TRANSPARENT_CHAR
108 #define TRANSPARENT_CHAR '`'
109 #endif
110 
124 uint8_t Game_Register(char * name, char * description,
125  void (*play)(void),
126  void (*help)(void));
127 
139 void Game_RegisterCallback(uint8_t game_id,
140  void (*callback)(int argc, char *argv[]));
141 
149 void Game_RegisterHighscoreCallback(uint8_t game_id,
150  void(*callback)(void));
151 
163 void Game_Log(uint8_t game_id, char * str, ...);
164 
172 void Game_EnableMultiPlayer(uint8_t game_id, uint8_t num);
173 
185 void Game_RegisterPlayer1Receiver(void(*rx)(uint8_t));
186 
198 void Game_RegisterPlayer2Receiver(void(*rx)(uint8_t));
199 
209 void Game_UnregisterPlayer1Receiver(void(*rx)(uint8_t));
210 
219 void Game_UnregisterPlayer2Receiver(void(*rx)(uint8_t));
220 
231 void Game_CharXY(char c, char x, char y);
232 
241 void Game_Player1CharXY(char c, char x, char y);
242 
251 void Game_Player2CharXY(char c, char x, char y);
252 
262 void Game_CursorXY(char x, char y);
263 
273 void Game_Player1CursorXY(char x, char y);
274 
284 void Game_Player2CursorXY(char x, char y);
285 
299 void Game_Printf(char * str, ...);
300 
312 void Game_PrintfXY(char x, char y, char * str, ...);
313 
326 void Game_Player1Printf(char * str, ...);
327 
342 void Game_Player2Printf(char * str, ...);
343 
348 void Game_HideCursor(void);
349 
354 void Game_ShowCursor(void);
355 
365 void Game_SetColor(enum term_color color);
366 
383 void Game_DrawTile(char *tile[], char x, char y);
384 
395 void Game_DrawRect(char x_min, char y_min, char x_max, char y_max);
396 
430 void Game_FillRect(char c, char x_min, char y_min, char x_max, char y_max);
431 
481 void Game_LinkedChar(char c, char x_first, char y_first, int length, int direction, linked_char_object_t list[]);
482 
486 void Game_ScrollDown(void);
487 
491 void Game_ScrollUp(void);
492 
496 void Game_ClearScreen(void);
497 
505 uint8_t Game_IsTransmitting(void);
506 
512 void Game_Bell(void);
513 
519 void Game_GameOver(void);
520 
521 #ifdef USE_MODULE_GAME_NFR24
522 #include "nrf24.h"
523 
524 typedef struct {
525  uint8_t type;
526  uint8_t index;
527  controller_buttons_t controller[4];
528  uint8_t user_data[22];
529 }game_network_payload_t;
530 
531 void Game_RegisterInputCallback(void(*fn)(game_network_payload_t *));
532 
533 void Game_RegisterHostPacketizer(uint8_t(*fn)(uint8_t *));
534 
535 void Game_Join(uint8_t channel);
536 
537 void Game_Host(uint8_t channel);
538 
539 void Game_NetworkInit(nrf24_t * nrf_ptr);
540 
541 #ifndef RF_ADDRESS
542 #define RF_ADDRESS 0x6C6C6C7800
543 #endif
544 
545 #define GAME_NRF_TX_PERIOD 40
546 
547 #endif
548 
550 #endif // _GAME_H_
char y
y position (increasing from top to bottom)
Definition: game.h:68
char y_next_node
y coordinate of next node in the list
Definition: game.h:86
void Game_RegisterHighscoreCallback(uint8_t game_id, void(*callback)(void))
Definition: game.c:140
buffer_t * rx
Definition: uart.c:221
void Game_Player1CursorXY(char x, char y)
Player 1 Cursor Position XY.
Definition: game.c:287
void Game_UnregisterPlayer1Receiver(void(*rx)(uint8_t))
Unregister Player 1 UART Channel receiver.
Definition: game.c:168
char y
y position (increasing from top to bottom)
Definition: game.h:84
void Game_PrintfXY(char x, char y, char *str,...)
PrintfXY to screen.
Definition: game.c:310
int first
flag to keep track of the first node in the list (i.e. 1 if first 0 if not)
Definition: game.h:87
uint8_t Game_IsTransmitting(void)
Definition: game.c:502
void Game_LinkedChar(char c, char x_first, char y_first, int length, int direction, linked_char_object_t list[])
Definition: game.c:402
char c
Displayed character ("sprite")
Definition: game.h:66
void Game_Player2CursorXY(char x, char y)
Player 2 Cursor Position XY.
Definition: game.c:291
void Game_RegisterPlayer1Receiver(void(*rx)(uint8_t))
Definition: game.c:160
void Game_EnableMultiPlayer(uint8_t game_id, uint8_t num)
Definition: game.c:155
char status
Status of object. Usage depends on implementation.
Definition: game.h:90
void Game_Player2CharXY(char c, char x, char y)
Write a character to a coordinate of the second players terminal.
Definition: game.c:277
uint8_t Game_Register(char *name, char *description, void(*play)(void), void(*help)(void))
Game_Register registers a game by adding it to the games[] array.
Definition: game.c:115
void Game_Player1CharXY(char c, char x, char y)
Write a character to a coordinate of the first players terminal.
Definition: game.c:273
char status
Status of object. Usage depends on implementation.
Definition: game.h:69
void Game_FillRect(char c, char x_min, char y_min, char x_max, char y_max)
Definition: game.c:391
void Game_Player2Printf(char *str,...)
Definition: game.c:326
Player info structure to hold player settings.
Definition: game.h:101
void Game_SetColor(enum term_color color)
Definition: game.c:355
char x
x position (increasing from left to right)
Definition: game.h:67
void Game_RegisterPlayer2Receiver(void(*rx)(uint8_t))
Register Player 2 UART Channel.
Definition: game.c:164
Char Object.
Definition: game.h:65
int last
flag to keep track of the last node in the list (i.e. 1 if last 0 if not)
Definition: game.h:88
void Game_Printf(char *str,...)
Definition: game.c:295
void Game_Player1Printf(char *str,...)
Definition: game.c:319
void Game_DrawRect(char x_min, char y_min, char x_max, char y_max)
Definition: game.c:374
Definition: nrf24.h:37
void Game_CursorXY(char x, char y)
Cursor Position XY.
Definition: game.c:281
void Game_UnregisterPlayer2Receiver(void(*rx)(uint8_t))
Unregister Player 2 UART Channel receiver.
Definition: game.c:172
void Game_HideCursor(void)
Hide the cursor for player 1 (and player2 if a two player game)
Definition: game.c:347
void Game_ClearScreen(void)
Definition: game.c:370
char x_next_node
x coordinate of next node in the list
Definition: game.h:85
void Game_RegisterCallback(uint8_t game_id, void(*callback)(int argc, char *argv[]))
Definition: game.c:134
char c
Displayed character ("sprite")
Definition: game.h:82
int data
additional data the node will hold. Usage depends on implementation.
Definition: game.h:89
term_color
Definition: terminal.h:27
void Game_GameOver(void)
let the game management module know that your game is over.
Definition: game.c:509
void Game_ScrollDown(void)
Definition: game.c:490
void Game_CharXY(char c, char x, char y)
Write a character to a coordinate of the terminal.
Definition: game.c:267
uint8_t skill
0-9 skill level of player
Definition: game.h:104
void Game_ScrollUp(void)
Definition: game.c:494
uint8_t game_id
Definition: game.c:91
void Game_Log(uint8_t game_id, char *str,...)
Definition: game.c:146
Linkable Char Object.
Definition: game.h:81
void Game_DrawTile(char *tile[], char x, char y)
Definition: game.c:360
void Game_ShowCursor(void)
Show the cursor for player 1 (and player2 if a two player game)
Definition: game.c:351
void Game_Bell(void)
Definition: game.c:498
char x
x position (increasing from left to right)
Definition: game.h:83