Mercurial > molko
annotate libmlk-rpg/mlk/rpg/message.c @ 646:7e1eb7f6c049 default tip @
misc: remove .clang
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sun, 04 Feb 2024 15:24:37 +0100 |
parents | e16808365d42 |
children |
rev | line source |
---|---|
24
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 * message.c -- message dialog |
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
445
773a082f0b91
misc: update copyright years
David Demelier <markand@malikania.fr>
parents:
441
diff
changeset
|
4 * Copyright (c) 2020-2023 David Demelier <markand@malikania.fr> |
24
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 #include <assert.h> |
67
7187c0d9b9c0
core: implement message action, closes #2467
David Demelier <markand@malikania.fr>
parents:
65
diff
changeset
|
20 #include <stdlib.h> |
7187c0d9b9c0
core: implement message action, closes #2467
David Demelier <markand@malikania.fr>
parents:
65
diff
changeset
|
21 #include <string.h> |
24
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 |
585 | 23 #include <mlk/core/err.h> |
431
8f59201dc76b
core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents:
411
diff
changeset
|
24 #include <mlk/core/event.h> |
8f59201dc76b
core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents:
411
diff
changeset
|
25 #include <mlk/core/font.h> |
8f59201dc76b
core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents:
411
diff
changeset
|
26 #include <mlk/core/maths.h> |
8f59201dc76b
core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents:
411
diff
changeset
|
27 #include <mlk/core/painter.h> |
8f59201dc76b
core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents:
411
diff
changeset
|
28 #include <mlk/core/panic.h> |
8f59201dc76b
core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents:
411
diff
changeset
|
29 #include <mlk/core/sprite.h> |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
30 #include <mlk/core/texture.h> |
431
8f59201dc76b
core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents:
411
diff
changeset
|
31 #include <mlk/core/trace.h> |
8f59201dc76b
core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents:
411
diff
changeset
|
32 #include <mlk/core/util.h> |
148
c577c15df07f
misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents:
146
diff
changeset
|
33 |
433
862b15c3a3ae
ui: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
34 #include <mlk/ui/align.h> |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
35 #include <mlk/ui/ui.h> |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
36 #include <mlk/ui/ui_p.h> |
148
c577c15df07f
misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents:
146
diff
changeset
|
37 |
28
783841af4033
core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents:
24
diff
changeset
|
38 #include "message.h" |
24
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 |
635
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
40 static inline int |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
41 is_selectable(const struct mlk_message *msg, size_t n) |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
42 { |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
43 return msg->lines[n] && ((msg->selectable >> n) & 0x1) == 1; |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
44 } |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
45 |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
46 static inline struct mlk_message_style * |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
47 get_style(struct mlk_message *msg) |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
48 { |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
49 return msg->style ? msg->style : mlk_message_style; |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
50 } |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
51 |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
52 static inline struct mlk_font * |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
53 get_font(struct mlk_message *msg) |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
54 { |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
55 return MLK__STYLE_FONT(get_style(msg)->font, MLK_UI_FONT_INTERFACE); |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
56 } |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
57 |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
58 static unsigned int |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
59 min_width(struct mlk_message_style *style, struct mlk_message *msg) |
140
453651d76f7c
core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents:
136
diff
changeset
|
60 { |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
61 struct mlk_font *font; |
159
e05a792f6910
ui: make message less clever and provide spacing field
David Demelier <markand@malikania.fr>
parents:
158
diff
changeset
|
62 unsigned int maxw = 0, w = 0; |
486 | 63 int err; |
158
e8d2740703df
ui: make message auto-spacing lines
David Demelier <markand@malikania.fr>
parents:
157
diff
changeset
|
64 |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
65 font = MLK__STYLE_FONT(style->font, MLK_UI_FONT_INTERFACE); |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
66 |
391
9334b420c975
rpg: don't use fixed size messages
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
67 for (size_t i = 0; i < msg->linesz; ++i) { |
9334b420c975
rpg: don't use fixed size messages
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
68 if (!msg->lines[i]) |
159
e05a792f6910
ui: make message less clever and provide spacing field
David Demelier <markand@malikania.fr>
parents:
158
diff
changeset
|
69 continue; |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
70 if ((err = mlk_font_query(font, msg->lines[i], &w, NULL)) < 0) |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
71 return err; |
159
e05a792f6910
ui: make message less clever and provide spacing field
David Demelier <markand@malikania.fr>
parents:
158
diff
changeset
|
72 if (w > maxw) |
e05a792f6910
ui: make message less clever and provide spacing field
David Demelier <markand@malikania.fr>
parents:
158
diff
changeset
|
73 maxw = w; |
e05a792f6910
ui: make message less clever and provide spacing field
David Demelier <markand@malikania.fr>
parents:
158
diff
changeset
|
74 } |
158
e8d2740703df
ui: make message auto-spacing lines
David Demelier <markand@malikania.fr>
parents:
157
diff
changeset
|
75 |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
76 return (style->padding * 2) + maxw; |
158
e8d2740703df
ui: make message auto-spacing lines
David Demelier <markand@malikania.fr>
parents:
157
diff
changeset
|
77 } |
e8d2740703df
ui: make message auto-spacing lines
David Demelier <markand@malikania.fr>
parents:
157
diff
changeset
|
78 |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
79 static unsigned int |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
80 min_height(struct mlk_message_style *style, struct mlk_message *msg) |
158
e8d2740703df
ui: make message auto-spacing lines
David Demelier <markand@malikania.fr>
parents:
157
diff
changeset
|
81 { |
159
e05a792f6910
ui: make message less clever and provide spacing field
David Demelier <markand@malikania.fr>
parents:
158
diff
changeset
|
82 assert(msg); |
158
e8d2740703df
ui: make message auto-spacing lines
David Demelier <markand@malikania.fr>
parents:
157
diff
changeset
|
83 |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
84 struct mlk_font *font; |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
85 unsigned int lh; |
159
e05a792f6910
ui: make message less clever and provide spacing field
David Demelier <markand@malikania.fr>
parents:
158
diff
changeset
|
86 |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
87 font = MLK__STYLE_FONT(style->font, MLK_UI_FONT_INTERFACE); |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
88 lh = mlk_font_height(font); |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
89 |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
90 return (style->padding * 2) + (msg->linesz * lh) + ((msg->linesz - 1) * style->padding); |
158
e8d2740703df
ui: make message auto-spacing lines
David Demelier <markand@malikania.fr>
parents:
157
diff
changeset
|
91 } |
e8d2740703df
ui: make message auto-spacing lines
David Demelier <markand@malikania.fr>
parents:
157
diff
changeset
|
92 |
140
453651d76f7c
core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents:
136
diff
changeset
|
93 static void |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
94 draw_frame(struct mlk_message *msg) |
140
453651d76f7c
core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents:
136
diff
changeset
|
95 { |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
96 struct mlk_message_style *style = get_style(msg); |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
97 |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
98 mlk_painter_set_color(style->border); |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
99 mlk_painter_draw_rectangle(0, 0, msg->w, msg->h); |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
100 mlk_painter_set_color(style->background); |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
101 mlk_painter_draw_rectangle( |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
102 style->border_size, |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
103 style->border_size, |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
104 msg->w - (style->border_size * 2), |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
105 msg->h - (style->border_size * 2) |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
106 ); |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
107 } |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
108 |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
109 static void |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
110 draw_lines(struct mlk_message *msg) |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
111 { |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
112 struct mlk_message_style *style; |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
113 struct mlk_font *font; |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
114 struct mlk_texture texture; |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
115 unsigned long color; |
547
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
535
diff
changeset
|
116 int x, y; |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
117 |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
118 style = get_style(msg); |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
119 font = get_font(msg); |
140
453651d76f7c
core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents:
136
diff
changeset
|
120 |
391
9334b420c975
rpg: don't use fixed size messages
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
121 for (size_t i = 0; i < msg->linesz; ++i) { |
9334b420c975
rpg: don't use fixed size messages
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
122 if (!msg->lines[i]) |
140
453651d76f7c
core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents:
136
diff
changeset
|
123 continue; |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
124 |
635
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
125 if (msg->selectable && msg->selected == i && is_selectable(msg, i)) |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
126 color = style->color_selected; |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
127 else |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
128 color = style->color; |
140
453651d76f7c
core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents:
136
diff
changeset
|
129 |
547
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
535
diff
changeset
|
130 if (mlk_font_render(font, &texture, msg->lines[i], color) < 0) { |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
535
diff
changeset
|
131 mlk_tracef("unable to render message text", mlk_err()); |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
132 continue; |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
133 } |
159
e05a792f6910
ui: make message less clever and provide spacing field
David Demelier <markand@malikania.fr>
parents:
158
diff
changeset
|
134 |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
135 x = style->padding; |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
136 y = style->padding + (i * (texture.h + style->padding)); |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
137 |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
138 if (x + texture.w > msg->w) |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
139 mlk_tracef("message width too small: %u < %u", msg->w, min_width(style, msg)); |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
140 if (y + texture.h > msg->h) |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
141 mlk_tracef("message height too small: %u < %u", msg->h, min_height(style, msg)); |
140
453651d76f7c
core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents:
136
diff
changeset
|
142 |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
143 mlk_texture_draw(&texture, x, y); |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
144 mlk_texture_finish(&texture); |
140
453651d76f7c
core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents:
136
diff
changeset
|
145 } |
453651d76f7c
core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents:
136
diff
changeset
|
146 } |
453651d76f7c
core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents:
136
diff
changeset
|
147 |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
148 static int |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
149 query(struct mlk_message_style *self, |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
150 struct mlk_message *msg, |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
151 unsigned int *w, |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
152 unsigned int *h) |
24
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
153 { |
159
e05a792f6910
ui: make message less clever and provide spacing field
David Demelier <markand@malikania.fr>
parents:
158
diff
changeset
|
154 if (w) |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
155 *w = min_width(self, msg); |
159
e05a792f6910
ui: make message less clever and provide spacing field
David Demelier <markand@malikania.fr>
parents:
158
diff
changeset
|
156 if (h) |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
157 *h = min_height(self, msg); |
535 | 158 |
159 return 0; | |
159
e05a792f6910
ui: make message less clever and provide spacing field
David Demelier <markand@malikania.fr>
parents:
158
diff
changeset
|
160 } |
e05a792f6910
ui: make message less clever and provide spacing field
David Demelier <markand@malikania.fr>
parents:
158
diff
changeset
|
161 |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
162 static void |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
163 update(struct mlk_message_style *self, |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
164 struct mlk_message *msg, |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
165 unsigned int ticks) |
64
da9b7462ab92
core: implement question, closes #2464 @2h
David Demelier <markand@malikania.fr>
parents:
62
diff
changeset
|
166 { |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
167 (void)self; |
64
da9b7462ab92
core: implement question, closes #2464 @2h
David Demelier <markand@malikania.fr>
parents:
62
diff
changeset
|
168 |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
169 const struct mlk_message_style *style = MLK__STYLE(msg, mlk_message_style); |
24
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
170 |
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
171 msg->elapsed += ticks; |
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
172 |
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
173 switch (msg->state) { |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
174 case MLK_MESSAGE_STATE_OPENING: |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
175 msg->scale = (double)msg->elapsed / (double)style->speed; |
100
ef9135c34505
message: improve rendering and add example
David Demelier <markand@malikania.fr>
parents:
99
diff
changeset
|
176 |
ef9135c34505
message: improve rendering and add example
David Demelier <markand@malikania.fr>
parents:
99
diff
changeset
|
177 if (msg->scale > 1) |
ef9135c34505
message: improve rendering and add example
David Demelier <markand@malikania.fr>
parents:
99
diff
changeset
|
178 msg->scale = 1; |
ef9135c34505
message: improve rendering and add example
David Demelier <markand@malikania.fr>
parents:
99
diff
changeset
|
179 |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
180 if (msg->elapsed >= style->speed) { |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
181 msg->state = MLK_MESSAGE_STATE_SHOWING; |
62 | 182 msg->elapsed = 0; |
183 } | |
184 | |
24
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
185 break; |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
186 case MLK_MESSAGE_STATE_SHOWING: |
24
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
187 /* Do automatically switch state if requested by the user. */ |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
188 if (msg->flags & MLK_MESSAGE_FLAGS_AUTOMATIC && msg->elapsed >= style->timeout) { |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
189 msg->state = msg->flags & MLK_MESSAGE_FLAGS_FADEOUT |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
190 ? MLK_MESSAGE_STATE_HIDING |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
191 : MLK_MESSAGE_STATE_NONE; |
62 | 192 msg->elapsed = 0; |
193 } | |
194 | |
195 break; | |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
196 case MLK_MESSAGE_STATE_HIDING: |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
197 msg->scale = 1 - (double)msg->elapsed / (double)style->speed; |
100
ef9135c34505
message: improve rendering and add example
David Demelier <markand@malikania.fr>
parents:
99
diff
changeset
|
198 |
ef9135c34505
message: improve rendering and add example
David Demelier <markand@malikania.fr>
parents:
99
diff
changeset
|
199 if (msg->scale < 0) |
ef9135c34505
message: improve rendering and add example
David Demelier <markand@malikania.fr>
parents:
99
diff
changeset
|
200 msg->scale = 0; |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
201 if (msg->elapsed >= style->speed) { |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
202 msg->state = MLK_MESSAGE_STATE_NONE; |
62 | 203 msg->elapsed = 0; |
204 } | |
24
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
205 |
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
206 break; |
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
207 default: |
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
208 break; |
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
209 } |
60
7266c750b649
core: simplify message
David Demelier <markand@malikania.fr>
parents:
59
diff
changeset
|
210 |
99
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
97
diff
changeset
|
211 } |
4ac71ac10c9f
core: start adding some UI elements
David Demelier <markand@malikania.fr>
parents:
97
diff
changeset
|
212 |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
213 static void |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
214 draw(struct mlk_message_style *self, struct mlk_message *msg) |
24
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
215 { |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
216 (void)self; |
24
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
217 |
472
bc5483849614
core: texture -> mlk_texture
David Demelier <markand@malikania.fr>
parents:
465
diff
changeset
|
218 struct mlk_texture tex; |
638
e16808365d42
core: s/mlk_texture_new/mlk_texture_init/g
David Demelier <markand@malikania.fr>
parents:
635
diff
changeset
|
219 int x, y; |
140
453651d76f7c
core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents:
136
diff
changeset
|
220 unsigned int w, h; |
100
ef9135c34505
message: improve rendering and add example
David Demelier <markand@malikania.fr>
parents:
99
diff
changeset
|
221 |
159
e05a792f6910
ui: make message less clever and provide spacing field
David Demelier <markand@malikania.fr>
parents:
158
diff
changeset
|
222 if (msg->w == 0 || msg->h == 0) { |
473
02b16dd49b54
core: trace -> mlk_trace
David Demelier <markand@malikania.fr>
parents:
472
diff
changeset
|
223 mlk_tracef("message has null dimensions"); |
159
e05a792f6910
ui: make message less clever and provide spacing field
David Demelier <markand@malikania.fr>
parents:
158
diff
changeset
|
224 return; |
e05a792f6910
ui: make message less clever and provide spacing field
David Demelier <markand@malikania.fr>
parents:
158
diff
changeset
|
225 } |
e05a792f6910
ui: make message less clever and provide spacing field
David Demelier <markand@malikania.fr>
parents:
158
diff
changeset
|
226 |
638
e16808365d42
core: s/mlk_texture_new/mlk_texture_init/g
David Demelier <markand@malikania.fr>
parents:
635
diff
changeset
|
227 if (mlk_texture_init(&tex, msg->w, msg->h) < 0) |
547
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
535
diff
changeset
|
228 mlk_panic(); |
100
ef9135c34505
message: improve rendering and add example
David Demelier <markand@malikania.fr>
parents:
99
diff
changeset
|
229 |
457
04797b35565c
core: painter -> mlk_painter
David Demelier <markand@malikania.fr>
parents:
451
diff
changeset
|
230 MLK_PAINTER_BEGIN(&tex); |
100
ef9135c34505
message: improve rendering and add example
David Demelier <markand@malikania.fr>
parents:
99
diff
changeset
|
231 draw_frame(msg); |
ef9135c34505
message: improve rendering and add example
David Demelier <markand@malikania.fr>
parents:
99
diff
changeset
|
232 draw_lines(msg); |
457
04797b35565c
core: painter -> mlk_painter
David Demelier <markand@malikania.fr>
parents:
451
diff
changeset
|
233 MLK_PAINTER_END(); |
100
ef9135c34505
message: improve rendering and add example
David Demelier <markand@malikania.fr>
parents:
99
diff
changeset
|
234 |
ef9135c34505
message: improve rendering and add example
David Demelier <markand@malikania.fr>
parents:
99
diff
changeset
|
235 /* Compute scaling. */ |
140
453651d76f7c
core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents:
136
diff
changeset
|
236 w = msg->w * msg->scale; |
453651d76f7c
core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents:
136
diff
changeset
|
237 h = msg->h * msg->scale; |
100
ef9135c34505
message: improve rendering and add example
David Demelier <markand@malikania.fr>
parents:
99
diff
changeset
|
238 |
140
453651d76f7c
core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents:
136
diff
changeset
|
239 /* Centerize within its drawing area. */ |
487
f2d3c5a97884
ui: align -> mlk_align
David Demelier <markand@malikania.fr>
parents:
486
diff
changeset
|
240 mlk_align(MLK_ALIGN_CENTER, &x, &y, w, h, msg->x, msg->y, msg->w, msg->h); |
100
ef9135c34505
message: improve rendering and add example
David Demelier <markand@malikania.fr>
parents:
99
diff
changeset
|
241 |
140
453651d76f7c
core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents:
136
diff
changeset
|
242 /* Draw and clear. */ |
472
bc5483849614
core: texture -> mlk_texture
David Demelier <markand@malikania.fr>
parents:
465
diff
changeset
|
243 mlk_texture_scale(&tex, 0, 0, msg->w, msg->h, x, y, w, h, 0); |
bc5483849614
core: texture -> mlk_texture
David Demelier <markand@malikania.fr>
parents:
465
diff
changeset
|
244 mlk_texture_finish(&tex); |
24
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
245 } |
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
246 |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
247 // TODO: add dark variant. |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
248 struct mlk_message_style mlk_message_style_dark = { |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
249 .background = MLK_UI_COLOR_BG, |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
250 .border = MLK_UI_COLOR_BORDER, |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
251 .border_size = MLK_UI_BORDER, |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
252 .color = MLK_UI_COLOR_TEXT, |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
253 .color_selected = MLK_UI_COLOR_SELECTED, |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
254 .padding = MLK_UI_PADDING, |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
255 .timeout = MLK_MESSAGE_TIMEOUT_DEFAULT, |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
256 .speed = MLK_MESSAGE_SPEED_DEFAULT, |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
257 .query = query, |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
258 .update = update, |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
259 .draw = draw |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
260 }; |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
261 |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
262 struct mlk_message_style mlk_message_style_light = { |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
263 .background = MLK_UI_COLOR_BG, |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
264 .border = MLK_UI_COLOR_BORDER, |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
265 .border_size = MLK_UI_BORDER, |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
266 .color = MLK_UI_COLOR_TEXT, |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
267 .color_selected = MLK_UI_COLOR_SELECTED, |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
268 .padding = MLK_UI_PADDING, |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
269 .timeout = MLK_MESSAGE_TIMEOUT_DEFAULT, |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
270 .speed = MLK_MESSAGE_SPEED_DEFAULT, |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
271 .query = query, |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
272 .update = update, |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
273 .draw = draw |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
274 }; |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
275 |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
276 struct mlk_message_style *mlk_message_style = &mlk_message_style_light; |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
277 |
24
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
278 void |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
279 mlk_message_start(struct mlk_message *msg) |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
280 { |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
281 assert(msg); |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
282 |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
283 struct mlk_message_style *style = MLK__STYLE(msg, mlk_message_style); |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
284 |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
285 if ((msg->flags & (MLK_MESSAGE_FLAGS_FADEIN | MLK_MESSAGE_FLAGS_FADEOUT)) && style->speed == 0) |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
286 mlk_tracef("message has animation but zero delay"); |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
287 |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
288 msg->elapsed = 0; |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
289 msg->scale = msg->flags & MLK_MESSAGE_FLAGS_FADEIN ? 0.0 : 1.0; |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
290 msg->state = msg->flags & MLK_MESSAGE_FLAGS_FADEIN |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
291 ? MLK_MESSAGE_STATE_OPENING |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
292 : MLK_MESSAGE_STATE_SHOWING; |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
293 |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
294 if (msg->flags & MLK_MESSAGE_FLAGS_AUTOMATIC && style->timeout == 0) |
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
295 mlk_tracef("message is automatic but has zero timeout"); |
635
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
296 |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
297 /* |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
298 * Make sure selected index goes in the range of the lines and that it |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
299 * starts on a proper selectable line. |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
300 */ |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
301 if (msg->selectable) { |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
302 if (msg->selected >= msg->linesz || !is_selectable(msg, msg->selected)) |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
303 msg->selected = 0; |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
304 |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
305 while (!is_selectable(msg, msg->selected)) |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
306 msg->selected++; |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
307 } |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
308 } |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
309 |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
310 int |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
311 mlk_message_query(struct mlk_message *msg, unsigned int *w, unsigned int *h) |
24
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
312 { |
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
313 assert(msg); |
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
314 |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
315 return MLK__STYLE_CALL(msg->style, mlk_message_style, query, msg, w, h); |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
316 } |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
317 |
635
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
318 static inline size_t |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
319 first(const struct mlk_message *msg) |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
320 { |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
321 size_t ret = -1; |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
322 |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
323 for (size_t i = 0; i < msg->linesz; ++i) { |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
324 if (is_selectable(msg, i)) { |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
325 ret = i; |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
326 break; |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
327 } |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
328 } |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
329 |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
330 return ret; |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
331 } |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
332 |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
333 static inline size_t |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
334 last(const struct mlk_message *msg) |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
335 { |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
336 size_t ret = -1; |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
337 |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
338 for (size_t i = msg->linesz; i >= 0; --i) { |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
339 if (is_selectable(msg, i)) { |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
340 ret = i; |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
341 break; |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
342 } |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
343 } |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
344 |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
345 return ret; |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
346 } |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
347 |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
348 static inline size_t |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
349 previous(const struct mlk_message *msg) |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
350 { |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
351 size_t ret; |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
352 |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
353 /* wrap */ |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
354 if (msg->selected == first(msg)) |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
355 ret = last(msg); |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
356 else { |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
357 ret = msg->selected - 1; |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
358 |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
359 while (ret > 0 && !is_selectable(msg, ret)) |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
360 ret--; |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
361 } |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
362 |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
363 return ret; |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
364 } |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
365 |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
366 static inline size_t |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
367 next(const struct mlk_message *msg) |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
368 { |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
369 size_t ret; |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
370 |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
371 /* wrap */ |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
372 if (msg->selected == last(msg)) |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
373 ret = first(msg); |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
374 else { |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
375 ret = msg->selected + 1; |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
376 |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
377 while (ret < msg->linesz && !is_selectable(msg, ret)) |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
378 ret++; |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
379 } |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
380 |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
381 return ret; |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
382 } |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
383 |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
384 void |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
385 mlk_message_handle(struct mlk_message *msg, const union mlk_event *ev) |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
386 { |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
387 assert(msg); |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
388 assert(ev); |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
389 |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
390 /* Skip if the message animation hasn't complete. */ |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
391 if (msg->state != MLK_MESSAGE_STATE_SHOWING) |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
392 return; |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
393 |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
394 /* Only keyboard event are valid. */ |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
395 if (ev->type != MLK_EVENT_KEYDOWN || msg->state == MLK_MESSAGE_STATE_NONE) |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
396 return; |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
397 |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
398 switch (ev->key.key) { |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
399 case MLK_KEY_UP: |
635
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
400 if (msg->selectable && msg->linesz) |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
401 msg->selected = previous(msg); |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
402 break; |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
403 case MLK_KEY_DOWN: |
635
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
404 if (msg->selectable && msg->linesz) |
3cb1860d9f11
rpg: improve message selectable lines
David Demelier <markand@malikania.fr>
parents:
622
diff
changeset
|
405 msg->selected = next(msg); |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
406 break; |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
407 case MLK_KEY_ENTER: |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
408 msg->state = msg->flags & MLK_MESSAGE_FLAGS_FADEOUT |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
409 ? MLK_MESSAGE_STATE_HIDING |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
410 : MLK_MESSAGE_STATE_NONE; |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
411 msg->elapsed = 0; |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
412 break; |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
413 default: |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
414 break; |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
415 } |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
416 } |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
417 |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
418 int |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
419 mlk_message_update(struct mlk_message *msg, unsigned int ticks) |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
420 { |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
421 assert(msg); |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
422 |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
423 MLK__STYLE_CALL(msg->style, mlk_message_style, update, msg, ticks); |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
424 |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
425 return msg->state == MLK_MESSAGE_STATE_NONE; |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
426 } |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
427 |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
428 void |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
429 mlk_message_draw(struct mlk_message *msg) |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
430 { |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
431 assert(msg); |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
432 |
622
ec334c61bb81
rpg: simplify message
David Demelier <markand@malikania.fr>
parents:
603
diff
changeset
|
433 MLK__STYLE_CALL(msg->style, mlk_message_style, draw, msg); |
534
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
434 } |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
435 |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
436 void |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
437 mlk_message_hide(struct mlk_message *msg) |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
438 { |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
439 assert(msg); |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
440 |
88e9bd420a28
rpg: add delegate/style support to mlk_message
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
441 msg->state = MLK_MESSAGE_STATE_HIDING; |
24
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
442 msg->elapsed = 0; |
4a06503641eb
core: start basic implementation of dialog, continue #2449 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
443 } |