annotate libmlk-core/mlk/core/action-script.h @ 517:6e8f6640e05b

misc: use extern C manually
author David Demelier <markand@malikania.fr>
date Sat, 04 Mar 2023 14:23:59 +0100
parents a11cd7ea3a37
children 75944708c55c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
65
80a913d25aa9 core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
509
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
2 * action-script.h -- convenient sequence of actions module
65
80a913d25aa9 core: implement script, closes #2465 @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>
65
80a913d25aa9 core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
80a913d25aa9 core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
80a913d25aa9 core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
80a913d25aa9 core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
80a913d25aa9 core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
80a913d25aa9 core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
80a913d25aa9 core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
80a913d25aa9 core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
80a913d25aa9 core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
80a913d25aa9 core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
80a913d25aa9 core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
80a913d25aa9 core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
80a913d25aa9 core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
80a913d25aa9 core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
466
39dd7c66ebfd core: script -> mlk_action_script
David Demelier <markand@malikania.fr>
parents: 462
diff changeset
19 #ifndef MLK_CORE_ACTION_SCRIPT_H
39dd7c66ebfd core: script -> mlk_action_script
David Demelier <markand@malikania.fr>
parents: 462
diff changeset
20 #define MLK_CORE_ACTION_SCRIPT_H
65
80a913d25aa9 core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
509
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
22 /**
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
23 * \file mlk/core/action-script.h
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
24 * \brief Convenient sequence of actions module.
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
25 *
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
26 * Module to create sequence of actions (see mlk/core/action.h)
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
27 *
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
28 * Those routines wrap individual actions into a sequence of actions into an action
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
29 * itself.
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
30 *
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
31 * This is convenient for scenarios where you need to specify several sequential
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
32 * actions that neet to waid the previous before continuing.
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
33 *
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
34 * In a nutshell, to write a scenario you should:
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
35 *
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
36 * 1. Declare a ::mlk_action array with your own size limits.
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
37 * 2. Declare a ::mlk_action_script and populate ::mlk_action_script::actions
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
38 * and ::mlk_action_script::actionsz accordingly to the array.
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
39 * 3. Invoke ::mlk_action_script_init.
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
40 * 4. Add as many as actions you with with ::mlk_action_script_append.
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
41 * 5. Call ::mlk_action_script_start if you need (optional).
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
42 * 6. Invoke ::mlk_action_script_handle, ::mlk_action_script_update and
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
43 * ::mlk_action_script_draw in your game loop until it completes.
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
44 */
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
45
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
46 #include <stddef.h>
65
80a913d25aa9 core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
47
441
31c1bbc33813 man: document mlk-action
David Demelier <markand@malikania.fr>
parents: 431
diff changeset
48 struct mlk_action;
65
80a913d25aa9 core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
49
450
b26dd49f69ff core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents: 445
diff changeset
50 union mlk_event;
65
80a913d25aa9 core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
51
509
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
52 /**
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
53 * \struct mlk_action_script
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
54 * \brief Actions script sequence
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
55 *
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
56 * This structure holds references to actions to be executed sequentially.
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
57 */
466
39dd7c66ebfd core: script -> mlk_action_script
David Demelier <markand@malikania.fr>
parents: 462
diff changeset
58 struct mlk_action_script {
509
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
59 /**
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
60 * (read-write, borrowed)
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
61 *
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
62 * Array of non-owning actions to run in order.
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
63 */
466
39dd7c66ebfd core: script -> mlk_action_script
David Demelier <markand@malikania.fr>
parents: 462
diff changeset
64 struct mlk_action **actions;
509
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
65
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
66 /**
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
67 * (read-write)
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
68 *
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
69 * Number of actions in array ::mlk_action_script::actions
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
70 *
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
71 * \warning changing this value must be kept in sync with the array
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
72 * dimension.
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
73 */
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
74 size_t actionsz;
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
75
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
76 /**
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
77 * (read-only)
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
78 *
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
79 * Number of actions inside of the array.
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
80 */
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
81 size_t length;
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
82
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
83 /**
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
84 * (read-only)
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
85 *
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
86 * Index of current action.
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
87 */
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
88 size_t current;
65
80a913d25aa9 core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 };
80a913d25aa9 core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
90
517
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 509
diff changeset
91 #if defined(__cplusplus)
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 509
diff changeset
92 extern "C" {
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 509
diff changeset
93 #endif
292
08ab73b32832 misc: add extern "C" {} blocks for C++ friends
David Demelier <markand@malikania.fr>
parents: 253
diff changeset
94
509
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
95 /**
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
96 * Initialize the action sequence structure.
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
97 *
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
98 * This function will effectively reset the length, current and set all actions
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
99 * to NULL.
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
100 *
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
101 * \pre script != NULL
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
102 * \param script the action script structure
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
103 */
65
80a913d25aa9 core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 void
509
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
105 mlk_action_script_init(struct mlk_action_script *script);
480
c1f64d451230 core: mlk_action has a start callback
David Demelier <markand@malikania.fr>
parents: 466
diff changeset
106
509
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
107 /**
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
108 * Try to append a new action into the script.
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
109 *
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
110 * The action is inserted as-is and ownership is left to the caller.
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
111 *
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
112 * \pre script != NULL
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
113 * \param script the action script structure
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
114 * \param action the action to append
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
115 * \return 0 on success or ::MLK_ERR_NO_MEM if full.
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
116 */
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 292
diff changeset
117 int
509
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
118 mlk_action_script_append(struct mlk_action_script *script,
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
119 struct mlk_action *action);
65
80a913d25aa9 core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
120
509
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
121 /**
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
122 * Tells if the sequence is complete.
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
123 *
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
124 * \pre script != NULL
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
125 * \param script the action script structure
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
126 * \return non-zero if completed
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
127 */
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
128 int
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
129 mlk_action_script_completed(const struct mlk_action_script *script);
65
80a913d25aa9 core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
130
509
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
131 /**
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
132 * Invoke ::mlk_action_start on the current action.
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
133 *
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
134 * This function should be called only once because when the action completes
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
135 * the next one will be automatically started.
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
136 *
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
137 * \pre script != NULL
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
138 * \param script the action script structure
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
139 */
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
140 void
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
141 mlk_action_script_start(struct mlk_action_script *script);
65
80a913d25aa9 core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
142
509
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
143 /**
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
144 * Invoke ::mlk_action_handle on the current action.
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
145 *
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
146 * \pre script != NULL
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
147 * \param script the action script structure
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
148 * \param event the event
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
149 */
65
80a913d25aa9 core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
150 void
509
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
151 mlk_action_script_handle(struct mlk_action_script *script,
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
152 const union mlk_event *event);
65
80a913d25aa9 core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
153
509
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
154 /**
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
155 * Invoke ::mlk_action_update on the current action.
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
156 *
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
157 * \pre script != NULL
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
158 * \param script the action script structure
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
159 * \param ticks frame ticks
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
160 */
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 292
diff changeset
161 int
509
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
162 mlk_action_script_update(struct mlk_action_script *script, unsigned int ticks);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
163
509
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
164 /**
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
165 * Invoke ::mlk_action_draw on the current action.
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
166 *
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
167 * \pre script != NULL
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
168 * \param script the action script structure
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
169 */
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
170 void
509
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
171 mlk_action_script_draw(struct mlk_action_script *script);
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
172
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
173 /**
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
174 * Invoke ::mlk_action_finish on all actions.
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
175 *
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
176 * After this call, the script array of actions is kept and can be reused if
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
177 * ::mlk_action_script_init is called again.
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
178 *
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
179 * \note If the sequence wasn't completed, the remaining actions are finalized
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
180 * using ::mlk_action_finish but not terminated through ::mlk_action_end.
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
181 * \pre script != NULL
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
182 * \param script the action script structure
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
183 */
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
184 void
a11cd7ea3a37 core: doxygenize action
David Demelier <markand@malikania.fr>
parents: 499
diff changeset
185 mlk_action_script_finish(struct mlk_action_script *script);
65
80a913d25aa9 core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff changeset
186
517
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 509
diff changeset
187 #if defined(__cplusplus)
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 509
diff changeset
188 }
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 509
diff changeset
189 #endif
292
08ab73b32832 misc: add extern "C" {} blocks for C++ friends
David Demelier <markand@malikania.fr>
parents: 253
diff changeset
190
466
39dd7c66ebfd core: script -> mlk_action_script
David Demelier <markand@malikania.fr>
parents: 462
diff changeset
191 #endif /* !MLK_CORE_ACTION_SCRIPT_H */