17#ifndef RETRODLG_TRACE_LVL
18# define RETRODLG_TRACE_LVL 0
21#ifndef RETRODLG_IDC_CHAT_LABEL
22# define RETRODLG_IDC_CHAT_LABEL 100
25#ifndef RETRODLG_IDC_CHAT_PORTRAIT
26# define RETRODLG_IDC_CHAT_PORTRAIT 200
30 const maug_path portrait_path,
const char* msg,
size_t msg_sz,
36 const maug_path font_path,
size_t chat_idc, uint8_t win_flags,
42 const maug_path portrait_path,
const char* msg,
size_t msg_sz,
49 win_idx = retrowin_get_by_idc( chat_idc, win_stack );
52 error_printf(
"chat window not currently open!" );
57#if RETRODLG_TRACE_LVL > 0
58 debug_printf( RETRODLG_TRACE_LVL,
59 "portrait %s: say %s", portrait_path, msg );
62 mdata_vector_lock( win_stack );
63 win = mdata_vector_get( win_stack, win_idx,
struct RETROWIN );
64 assert( NULL != win );
65 retrowin_lock_gui( win );
68 if( NULL != msg && 0 < msg_sz ) {
69 retrogui_set_ctl_text(
70 win->gui_p, RETRODLG_IDC_CHAT_LABEL, msg_sz,
"%s", msg );
72 retrogui_set_ctl_text( win->gui_p, RETRODLG_IDC_CHAT_LABEL, 0, NULL );
75 if( NULL != msg && 0 < msg_sz ) {
77 win->gui_p, RETRODLG_IDC_CHAT_PORTRAIT, portrait_path, 0 );
80 win->gui_p, RETRODLG_IDC_CHAT_PORTRAIT, NULL, 0 );
83 retrowin_unlock_gui( win );
87 if( mdata_vector_is_locked( win_stack ) ) {
88 mdata_vector_unlock( win_stack );
99 const maug_path font_path,
size_t chat_idc, uint8_t win_flags,
105 ssize_t chat_win = -1;
109 win_stack, chat_idc, font_path,
110 x, y, w, h, win_flags );
112 retval = merror_sz_to_retval( chat_win );
116#if RETRODLG_TRACE_LVL < 0
117 debug_printf( RETRODLG_TRACE_LVL,
118 "chat window is now idx: " SSIZE_T_FMT, chat_win );
121 mdata_vector_lock( win_stack );
122 win = mdata_vector_get( win_stack, chat_win,
struct RETROWIN );
123 assert( NULL != win );
124 retrowin_lock_gui( win );
127 &ctl, RETROGUI_CTL_TYPE_LABEL, RETRODLG_IDC_CHAT_LABEL );
133 ctl.base.fg_color = RETROFLAT_COLOR_WHITE;
134 ctl.LABEL.label =
"";
135 ctl.LABEL.label_sz = 0;
136 ctl.LABEL.flags = RETROGUI_LABEL_FLAG_SHOWINC;
138 retval = retrogui_push_ctl( win->gui_p, &ctl );
139 maug_cleanup_if_not_ok();
144 &ctl, RETROGUI_CTL_TYPE_IMAGE, RETRODLG_IDC_CHAT_PORTRAIT );
148 ctl.base.w = RETROFLAT_TILE_W;
149 ctl.base.h = RETROFLAT_TILE_H;
151 retval = retrogui_push_ctl( win->gui_p, &ctl );
152 maug_cleanup_if_not_ok();
154 retrowin_unlock_gui( win );
158 if( mdata_vector_is_locked( win_stack ) ) {
159 mdata_vector_unlock( win_stack );
uint16_t MERROR_RETVAL
Return type indicating function returns a value from this list.
Definition merror.h:28
char maug_path[MAUG_PATH_SZ_MAX]
Path/name used to load an asset from disk or access other files.
Definition mfile.h:136
size_t retroflat_pxxy_t
Type used for surface pixel coordinates.
Definition retroflt.h:875
MERROR_RETVAL retrogui_set_ctl_image(struct RETROGUI *gui, retrogui_idc_t idc, const maug_path path, uint8_t flags)
Set the image displayed by an IMAGE-type RETROGUI_CTL.
ssize_t retrowin_push_win(struct RETROGUI *gui, struct MDATA_VECTOR *win_stack, size_t idc, const char *font_filename, size_t x, size_t y, size_t w, size_t h, uint8_t flags)
Create a new window on the given win_stack.
A vector of uniformly-sized objects, stored contiguously.
Definition mdata.h:108
Definition retrogui.h:450