/** * Copyright (c) 2022 Dominic Masters * * This software is released under the MIT License. * https://opensource.org/licenses/MIT */ #pragma once #include "../libs.h" #include "../util.h" #include "../input.h" #include "../display/common.h" #include "../display/tilemap.h" #include "queue.h" #define BORDER_TILE_TOP_LEFT BORDER_DATA_POSITION #define BORDER_TILE_TOP_CENTER BORDER_TILE_TOP_LEFT + 1 #define BORDER_TILE_TOP_RIGHT BORDER_TILE_TOP_CENTER + 1 #define BORDER_TILE_CENTER_LEFT BORDER_TILE_TOP_RIGHT + 1 #define BORDER_TILE_CENTER BORDER_TILE_CENTER_LEFT + 1 #define BORDER_TILE_CENTER_RIGHT BORDER_TILE_CENTER + 1 #define BORDER_TILE_BOTTOM_LEFT BORDER_TILE_CENTER_RIGHT + 1 #define BORDER_TILE_BOTTOM_CENTER BORDER_TILE_BOTTOM_LEFT + 1 #define BORDER_TILE_BOTTOM_RIGHT BORDER_TILE_BOTTOM_CENTER + 1 #define TEXTBOX_STATE_VISIBLE (1 << 0) #define TEXTBOX_STATE_SCROLLED (1 << 1) #define TEXTBOX_WIDTH_IN_TILES 20 #define TEXTBOX_HEIGHT_IN_TILES 5 #define TEXTBOX_TILES_MAX (TEXTBOX_WIDTH_IN_TILES * TEXTBOX_HEIGHT_IN_TILES) #define TEXTBOX_CHARS_PER_ROW (TEXTBOX_WIDTH_IN_TILES - 2) #define TEXTBOX_CHAR_ROWS (TEXTBOX_HEIGHT_IN_TILES - 2) #define TEXTBOX_TILES_PER_ROW TEXTBOX_WIDTH_IN_TILES #define TEXTBOX_TILES_ROWS 3 #define TEXTBOX_TILE_BLANK COMMON_TILE_3 #define conversationTextboxString(name) conversationTextboxSetText(\ STR_ ## name ## _DATA, STR_ ## name ## _LENGTH\ ) extern char *TEXTBOX_TEXT; extern uint8_t TEXTBOX_TEXT_LENGTH; extern uint8_t TEXTBOX_STATE; extern uint8_t TEXTBOX_SCROLL; extern uint8_t TEXTBOX_CHAR_POSITION; inline void conversationTextboxInit(); void conversationTextboxSetText(char *text, uint8_t length); inline void conversationTextboxUpdate();