Collab_RPG/src/dialogs.h
2024-07-25 13:07:19 +02:00

94 lines
4.2 KiB
C

#ifndef DIALOG_H
#define DIALOG_H
#include <gint/display.h>
#include <string.h>
#include "game.h"
#include "map.h"
#include "config.h"
/* dialogs_text_opt()
*
* Show some text in a box with word wrap for dialogs.
*
* game: The game struct of the current game.
* face: A bopti_image_t of the face of the person who's saying this
* text. This bopti_image_t should have a width of F_WIDTH and
* a height of F_HEIGHT.
* text: The text to display.
* call_before_end: A function called when the end of the text was displayed and
* the user pressed EXE (or wait_continue was true). His
* parameter game is the game struct passed to showtext_opt,
* and i is the current position in text.
* start_anim: A boolean, that, if he's true, makes that a little animation
* is shown at the start of showtext_opt.
* end_anim: A boolean, that, if he's true, makes that a little animation
* is shown at the end of showtext_opt.
* for_each_screen: A function called before a page of the dialog gets drawn.
* His parameter game is the game struct passed to
* showtext_opt, and i is the current position in text.
* line_duration: How many ms showtext_opt will wait after a line has been
* drawn.
* update_screen: When he's true showtext_opt will update the screen after
* drawing a line etc.
* start_i: At which position I start displaying the text.
* wait_continue: If I should wait that EXE is pressed after drawing a page.
*/
int dialogs_text_opt(Game *game, bopti_image_t *face, char *text,
int call_before_end(Game *game, unsigned int i),
bool start_anim,
bool end_anim,
void for_each_screen(Game *game, unsigned int i),
int line_duration, bool update_screen,
unsigned int start_i, bool wait_continue);
/* dialogs_text()
*
* Calls dialogs_text_opt with default parameters.
*
* game: The game struct of the current game.
* face: A bopti_image_t of the face of the person who's saying this
* text. This bopti_image_t should have a width of F_WIDTH and a
* height of F_HEIGHT.
* text: The text to display.
* dialog_start: A boolean, that, if he's true, makes that a little animation is
* shown at the start of showtext_opt.
* dialog_end: A boolean, that, if he's true, makes that a little animation is
* shown at the end of showtext_opt.
*/
void dialogs_text(Game *game, bopti_image_t *face, char *text,
bool dialog_start, bool dialog_end);
/* dialogs_ask()
*
* Like dialogs_text, but lets the user choose between multiple possible
* choices after displaying the text.
*
* game: The game struct of the current game.
* face: A bopti_image_t of the face of the person who's saying this
* text. This bopti_image_t should have a width of F_WIDTH and a
* height of F_HEIGHT.
* text: The text to display.
* start: A boolean, that, if he's true, makes that a little animation
* is shown at the start of showtext_opt.
* end: A boolean, that, if he's true, makes that a little animation
* is shown at the end of showtext_opt.
* choices: A pointer to null-terminated strings that are one after the
* other in memory. They should be one null-terminated string
* for each possible choice.
* choice_amount: The amount of possible choices in the choices zero-terminated
* strings.
* default_choice: The choice choosen by default when the dialog just opened.
*/
int dialogs_ask(Game *game, bopti_image_t *face, char *text, bool start,
bool end, char *choices, int choices_amount,
int default_choice);
/* TODO: Doc. */
void dialogs_initiate_sequence(Game *game, bopti_image_t *face,
uint32_t dialogNumber);
#endif