annotate libmlk-rpg/rpg/battle-bar.h @ 292:08ab73b32832

misc: add extern "C" {} blocks for C++ friends
author David Demelier <markand@malikania.fr>
date Fri, 05 Mar 2021 10:08:09 +0100
parents 9948e288925b
children 196264679079
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * battle-bar.h -- battle status bar and menu
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2020 David Demelier <markand@malikania.fr>
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
243
71b3b7036de7 misc: lot of cleanups,
David Demelier <markand@malikania.fr>
parents: 226
diff changeset
19 #ifndef MOLKO_RPG_BATTLE_BAR_H
71b3b7036de7 misc: lot of cleanups,
David Demelier <markand@malikania.fr>
parents: 226
diff changeset
20 #define MOLKO_RPG_BATTLE_BAR_H
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
286
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
22 /*
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
23 * The bar is split into three individual pieces.
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
24 *
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
25 * +------------+--------+------------+
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
26 * | Grid menu | Menu | Status |
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
27 * +------------+--------+------------+
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
28 *
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 *
286
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
30 * The left grid menu is only shown when member field state is set to \ref
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
31 * BATTLE_BAR_STATE_SUB, it is usually opened when user select a magic or an
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
32 * object.
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
33 *
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
34 * The menu in the middle is the main selection and contains the enumeration
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
35 * battle_bar_menu using top, right, bottom left edges for short selection.
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
36 *
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
37 * The last part on the right is the status pane where the team characters stats
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
38 * are listed.
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
39 *
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
40 * By itself, the bar never modify the battle object, it is the responsability
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
41 * of the battle object or the battle state to change the bar object and to
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
42 * track change on events. As such, the battle object is always passed as const
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
43 * parameter.
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 */
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
45
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 #include <stdbool.h>
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
47
292
08ab73b32832 misc: add extern "C" {} blocks for C++ friends
David Demelier <markand@malikania.fr>
parents: 290
diff changeset
48 #include <core/core.h>
08ab73b32832 misc: add extern "C" {} blocks for C++ friends
David Demelier <markand@malikania.fr>
parents: 290
diff changeset
49
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 #include <ui/frame.h>
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 #include <ui/gridmenu.h>
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
52
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 struct battle;
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 struct character;
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
55
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 union event;
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
57
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 enum battle_bar_menu {
286
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
59 BATTLE_BAR_MENU_ATTACK = 0,
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
60 BATTLE_BAR_MENU_MAGIC = 1,
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
61 BATTLE_BAR_MENU_OBJECTS = 2,
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
62 BATTLE_BAR_MENU_SPECIAL = 3
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 };
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
64
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 enum battle_bar_state {
286
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
66 BATTLE_BAR_STATE_NONE,
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
67 BATTLE_BAR_STATE_MENU,
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
68 BATTLE_BAR_STATE_SUB
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 };
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
70
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 struct battle_bar {
286
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
72 int x;
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
73 int y;
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
74 unsigned int w;
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
75 unsigned int h;
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
76 enum battle_bar_state state;
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
77
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 /* Right status frame. */
286
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
79 struct frame status_frame;
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
80
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 /* Main menu selection. */
286
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
82 struct frame menu_frame;
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
83 enum battle_bar_menu menu;
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
84
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 /* Sub menu selection (spells/objects). */
290
9948e288925b rpg: add support for items in battle
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
86 char sub_items[GRIDMENU_ENTRY_MAX][128];
286
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
87 struct gridmenu sub_grid;
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 };
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
89
292
08ab73b32832 misc: add extern "C" {} blocks for C++ friends
David Demelier <markand@malikania.fr>
parents: 290
diff changeset
90 CORE_BEGIN_DECLS
08ab73b32832 misc: add extern "C" {} blocks for C++ friends
David Demelier <markand@malikania.fr>
parents: 290
diff changeset
91
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 void
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 battle_bar_positionate(struct battle_bar *bar, const struct battle *bt);
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
94
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 bool
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 battle_bar_handle(struct battle_bar *bar,
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 const struct battle *bt,
226
dd7c8d4321a3 misc: miscellaneous cleanups
David Demelier <markand@malikania.fr>
parents: 196
diff changeset
98 const union event *ev);
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
99
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 void
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 battle_bar_reset(struct battle_bar *bar);
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
102
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 void
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 battle_bar_open_menu(struct battle_bar *bar);
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
105
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 void
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 battle_bar_open_spells(struct battle_bar *bar, const struct battle *bt, struct character *ch);
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
108
286
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
109 void
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
110 battle_bar_open_items(struct battle_bar *bar, const struct battle *bt);
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
111
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
112 void
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
113 battle_bar_draw(const struct battle_bar *bar, const struct battle *bt);
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
114
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
115 void
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 battle_bar_finish(struct battle_bar *bar);
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
117
292
08ab73b32832 misc: add extern "C" {} blocks for C++ friends
David Demelier <markand@malikania.fr>
parents: 290
diff changeset
118 CORE_END_DECLS
08ab73b32832 misc: add extern "C" {} blocks for C++ friends
David Demelier <markand@malikania.fr>
parents: 290
diff changeset
119
243
71b3b7036de7 misc: lot of cleanups,
David Demelier <markand@malikania.fr>
parents: 226
diff changeset
120 #endif /* !MOLKO_RPG_BATTLE_BAR_H */