Mercurial > molko
annotate libmlk-core/mlk/core/state.h @ 602:7e168493f0bd
cmake: fix NLS required
author | David Demelier <markand@malikania.fr> |
---|---|
date | Thu, 10 Aug 2023 21:16:05 +0200 |
parents | 7fb5a859bcb4 |
children | 83781cc87fca |
rev | line source |
---|---|
44
c97fe725fdeb
core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
539
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
2 * state.h -- abstract game loop state |
44
c97fe725fdeb
core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
445
773a082f0b91
misc: update copyright years
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
4 * Copyright (c) 2020-2023 David Demelier <markand@malikania.fr> |
44
c97fe725fdeb
core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
c97fe725fdeb
core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
c97fe725fdeb
core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
c97fe725fdeb
core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
c97fe725fdeb
core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
c97fe725fdeb
core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
c97fe725fdeb
core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
c97fe725fdeb
core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
c97fe725fdeb
core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
c97fe725fdeb
core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
c97fe725fdeb
core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
c97fe725fdeb
core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
c97fe725fdeb
core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
c97fe725fdeb
core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
366
19782ea1cf4a
misc: start rebranding
David Demelier <markand@malikania.fr>
parents:
320
diff
changeset
|
19 #ifndef MLK_CORE_STATE_H |
19782ea1cf4a
misc: start rebranding
David Demelier <markand@malikania.fr>
parents:
320
diff
changeset
|
20 #define MLK_CORE_STATE_H |
44
c97fe725fdeb
core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 |
539
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
22 /** |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
23 * \file mlk/core/state.h |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
24 * \brief Abstract game loop state |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
25 */ |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
26 |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
27 union mlk_event; |
44
c97fe725fdeb
core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
28 |
539
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
29 /** |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
30 * \struct mlk_state |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
31 * \brief State structure |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
32 * |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
33 * This structure contains only virtual functions that the user can fill and |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
34 * will be called by the main loop. |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
35 * |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
36 * All of the functions can be NULL but usually indicate an useless game. |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
37 */ |
469
0d6206cee6b9
core: state -> mlk_state
David Demelier <markand@malikania.fr>
parents:
462
diff
changeset
|
38 struct mlk_state { |
539
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
39 /** |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
40 * (read-write, borrowed, optional) |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
41 * |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
42 * Optional state data. |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
43 */ |
162 | 44 void *data; |
539
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
45 |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
46 /** |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
47 * (read-write, optional) |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
48 * |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
49 * Invoked when the state starts, which is called only one time. |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
50 * |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
51 * \param self this state |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
52 */ |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
53 void (*start)(struct mlk_state *self); |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
54 |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
55 /** |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
56 * (read-write, optional) |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
57 * |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
58 * Handle an event. |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
59 * |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
60 * \param self this state |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
61 * \param event the event |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
62 */ |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
63 void (*handle)(struct mlk_state *self, const union mlk_event *event); |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
64 |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
65 /** |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
66 * (read-write, optional) |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
67 * |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
68 * Update the state. |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
69 * |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
70 * \param self this state |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
71 * \param ticks frame ticks |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
72 */ |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
73 void (*update)(struct mlk_state *self, unsigned int ticks); |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
74 |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
75 /** |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
76 * (read-write, optional) |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
77 * |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
78 * Draw the state. |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
79 * |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
80 * \param self this state |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
81 */ |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
82 void (*draw)(struct mlk_state *self); |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
83 |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
84 /** |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
85 * (read-write, optional) |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
86 * |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
87 * Suspend this state. |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
88 * |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
89 * This function is called just before switching to a new state. |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
90 * |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
91 * \param self this state |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
92 */ |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
93 void (*suspend)(struct mlk_state *self); |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
94 |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
95 /** |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
96 * (read-write, optional) |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
97 * |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
98 * Resume this state. |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
99 * |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
100 * This function is called after the previous state has been left. |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
101 * |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
102 * \param self this state |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
103 */ |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
104 void (*resume)(struct mlk_state *self); |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
105 |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
106 /** |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
107 * (read-write, optional) |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
108 * |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
109 * Terminate the state. |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
110 * |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
111 * This function is called when the state is terminated. |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
112 * |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
113 * \param self this state |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
114 */ |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
115 void (*end)(struct mlk_state *self); |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
116 |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
117 /** |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
118 * (read-write, optional) |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
119 * |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
120 * Cleanup resources allocated by the state. |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
121 * |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
122 * \param self this state |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
123 */ |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
124 void (*finish)(struct mlk_state *self); |
44
c97fe725fdeb
core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
125 }; |
c97fe725fdeb
core: implement basic states, closes #2457 @1h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
126 |
517
6e8f6640e05b
misc: use extern C manually
David Demelier <markand@malikania.fr>
parents:
469
diff
changeset
|
127 #if defined(__cplusplus) |
6e8f6640e05b
misc: use extern C manually
David Demelier <markand@malikania.fr>
parents:
469
diff
changeset
|
128 extern "C" { |
6e8f6640e05b
misc: use extern C manually
David Demelier <markand@malikania.fr>
parents:
469
diff
changeset
|
129 #endif |
292
08ab73b32832
misc: add extern "C" {} blocks for C++ friends
David Demelier <markand@malikania.fr>
parents:
253
diff
changeset
|
130 |
539
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
131 /** |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
132 * Invoke ::mlk_state::start function if not NULL. |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
133 * |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
134 * \pre state != NULL |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
135 * \param state the state |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
136 */ |
162 | 137 void |
539
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
138 mlk_state_start(struct mlk_state *state); |
162 | 139 |
539
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
140 /** |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
141 * Invoke ::mlk_state::handle function if not NULL. |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
142 * |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
143 * \pre state != NULL |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
144 * \pre event != NULL |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
145 * \param state the state |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
146 * \param event the event |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
147 */ |
162 | 148 void |
539
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
149 mlk_state_handle(struct mlk_state *state, const union mlk_event *event); |
162 | 150 |
539
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
151 /** |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
152 * Invoke ::mlk_state::update function if not NULL. |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
153 * |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
154 * \pre state != NULL |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
155 * \param state the state |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
156 * \param ticks frame ticks |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
157 */ |
162 | 158 void |
539
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
159 mlk_state_update(struct mlk_state *state, unsigned int ticks); |
162 | 160 |
539
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
161 /** |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
162 * Invoke ::mlk_state::draw function if not NULL. |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
163 * |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
164 * \pre state != NULL |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
165 * \param state the state |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
166 */ |
162 | 167 void |
539
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
168 mlk_state_draw(struct mlk_state *state); |
299
648f5f949afb
core: implement stackable states
David Demelier <markand@malikania.fr>
parents:
298
diff
changeset
|
169 |
539
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
170 /** |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
171 * Invoke ::mlk_state::suspend function if not NULL. |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
172 * |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
173 * \pre state != NULL |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
174 * \param state the state |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
175 */ |
299
648f5f949afb
core: implement stackable states
David Demelier <markand@malikania.fr>
parents:
298
diff
changeset
|
176 void |
539
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
177 mlk_state_suspend(struct mlk_state *state); |
299
648f5f949afb
core: implement stackable states
David Demelier <markand@malikania.fr>
parents:
298
diff
changeset
|
178 |
539
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
179 /** |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
180 * Invoke ::mlk_state::resume function if not NULL. |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
181 * |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
182 * \pre state != NULL |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
183 * \param state the state |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
184 */ |
299
648f5f949afb
core: implement stackable states
David Demelier <markand@malikania.fr>
parents:
298
diff
changeset
|
185 void |
539
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
186 mlk_state_resume(struct mlk_state *state); |
162 | 187 |
539
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
188 /** |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
189 * Invoke ::mlk_state::end function if not NULL |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
190 * |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
191 * \pre state != NULL |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
192 * \param state the state |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
193 */ |
162 | 194 void |
539
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
195 mlk_state_end(struct mlk_state *state); |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
196 |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
197 /** |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
198 * Invoke ::mlk_state::finish function if not NULL |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
199 * |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
200 * \pre state != NULL |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
201 * \param state the state |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
202 */ |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
203 void |
7fb5a859bcb4
core: doxygenize state
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
204 mlk_state_finish(struct mlk_state *state); |
162 | 205 |
517
6e8f6640e05b
misc: use extern C manually
David Demelier <markand@malikania.fr>
parents:
469
diff
changeset
|
206 #if defined(__cplusplus) |
6e8f6640e05b
misc: use extern C manually
David Demelier <markand@malikania.fr>
parents:
469
diff
changeset
|
207 } |
6e8f6640e05b
misc: use extern C manually
David Demelier <markand@malikania.fr>
parents:
469
diff
changeset
|
208 #endif |
292
08ab73b32832
misc: add extern "C" {} blocks for C++ friends
David Demelier <markand@malikania.fr>
parents:
253
diff
changeset
|
209 |
366
19782ea1cf4a
misc: start rebranding
David Demelier <markand@malikania.fr>
parents:
320
diff
changeset
|
210 #endif /* !MLK_CORE_STATE_H */ |