Mercurial > molko
annotate libmlk-rpg/mlk/rpg/battle-bar-default.c @ 646:7e1eb7f6c049 default tip @
misc: remove .clang
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sun, 04 Feb 2024 15:24:37 +0100 |
parents | 6100c643dba0 |
children |
rev | line source |
---|---|
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 * battle-bar-default.c -- default battle status bar and menu implementation |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
445
773a082f0b91
misc: update copyright years
David Demelier <markand@malikania.fr>
parents:
442
diff
changeset
|
4 * Copyright (c) 2020-2023 David Demelier <markand@malikania.fr> |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 #include <assert.h> |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 #include <stdio.h> |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 #include <stdlib.h> |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 #include <string.h> |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 |
431
8f59201dc76b
core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents:
413
diff
changeset
|
24 #include <mlk/core/alloc.h> |
8f59201dc76b
core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents:
413
diff
changeset
|
25 #include <mlk/core/event.h> |
8f59201dc76b
core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents:
413
diff
changeset
|
26 #include <mlk/core/font.h> |
8f59201dc76b
core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents:
413
diff
changeset
|
27 #include <mlk/core/sprite.h> |
8f59201dc76b
core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents:
413
diff
changeset
|
28 #include <mlk/core/trace.h> |
8f59201dc76b
core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents:
413
diff
changeset
|
29 #include <mlk/core/util.h> |
8f59201dc76b
core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents:
413
diff
changeset
|
30 #include <mlk/core/window.h> |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 |
433
862b15c3a3ae
ui: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
32 #include <mlk/ui/align.h> |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 #include "battle-bar-default.h" |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 #include "battle-bar.h" |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 #include "battle-state-item.h" |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 #include "battle-state-selection.h" |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
38 #include "battle.h" |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 #include "character.h" |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
40 #include "inventory.h" |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
41 #include "item.h" |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
42 #include "spell.h" |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
43 |
504 | 44 #define THEME(bar) ((bar)->theme ? (bar)->theme : &mlk_theme) |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
45 |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
46 struct geo { |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
47 int x, y; |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
48 unsigned int w, h; |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 }; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
51 static inline void |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
52 dimensions(struct geo geo[2], const struct battle_bar_default *bar) |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
53 { |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
54 /* 0 == main menu */ |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
55 geo[0].w = bar->w * 0.2; |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
56 geo[0].h = bar->h; |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
57 geo[0].x = bar->x + (bar->w / 2) - (geo[0].w / 2); |
485
3ff1fe64d0cd
core: window -> mlk_window
David Demelier <markand@malikania.fr>
parents:
474
diff
changeset
|
58 geo[0].y = mlk_window.h - bar->h; |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
59 |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
60 /* 1 == status frame */ |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
61 geo[1].x = geo[0].x + geo[0].w; |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
62 geo[1].y = geo[0].y; |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
63 geo[1].w = (bar->w - geo[0].w) / 2; |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
64 geo[1].h = bar->h; |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
65 } |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
66 |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
67 /* |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
68 * The following validate_* functions are called when the user has validated a |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
69 * selection depending on the current menu (e.g. Magic, Items). |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
70 * |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
71 * They change the battle state to the appropriate one. |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
72 */ |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
73 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
74 static void |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
75 validate_attack(struct battle_bar_default *bar, struct battle *bt, const struct selection *sel) |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
76 { |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
77 (void)bar; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
78 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
79 struct character *target; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
80 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
81 if (sel->index_side == 0) |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
82 target = bt->enemies[sel->index_character]->ch; |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
83 else |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
84 target = bt->team[sel->index_character]->ch; |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
85 |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
86 battle_attack(bt, battle_current(bt)->ch, target); |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
87 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
88 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
89 static void |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
90 validate_magic(struct battle_bar_default *bar, struct battle *bt, const struct selection *sel) |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
91 { |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
92 struct character *source = battle_current(bt)->ch; |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
93 const struct spell *spell = source->spells[bar->grid.selected]; |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
94 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
95 battle_cast(bt, source, spell, sel); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
96 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
97 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
98 static void |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
99 validate_item(struct battle_bar_default *bar, struct battle *bt, const struct selection *sel) |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
100 { |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
101 struct inventory_slot *slot; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
102 struct battle_entity *source, *target; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
103 |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
104 if (bar->grid.selected >= INVENTORY_ITEM_MAX) |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
105 return; |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
106 if (!(slot = &bt->inventory->items[bar->grid.selected])) |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
107 return; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
108 |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
109 source = battle_current(bt); |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
110 target = sel->index_side == 0 |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
111 ? bt->enemies[sel->index_character] |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
112 : bt->team[sel->index_character]; |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
113 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
114 /* TODO: battle_use? */ |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
115 battle_state_item(bt, source, target, slot); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
116 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
117 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
118 /* |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
119 * The following functions are used to switch to the battle selection state |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
120 * using the appropriate selector algorithm. For example, an item can only be |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
121 * used on a unique target while a spell can have multiple choices. |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
122 */ |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
123 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
124 static void |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
125 switch_selection_attack(struct battle_bar_default *bar, struct battle *bt) |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
126 { |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
127 struct selection sel = { |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
128 .allowed_kinds = SELECTION_KIND_ONE, |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
129 .allowed_sides = SELECTION_SIDE_ENEMY, |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
130 .index_side = 0 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
131 }; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
132 |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
133 /* Disable handling anymore. */ |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
134 bar->state = BATTLE_BAR_DEFAULT_STATE_NONE; |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
135 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
136 selection_first(&sel, bt); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
137 battle_state_selection(bt, &sel); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
138 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
139 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
140 static void |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
141 switch_selection_spell(struct battle_bar_default *bar, struct battle *bt) |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
142 { |
505
6100c643dba0
ui: finally ditch theme
David Demelier <markand@malikania.fr>
parents:
504
diff
changeset
|
143 #if 0 |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
144 const struct character *ch = battle_current(bt)->ch; |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
145 const struct spell *sp = ch->spells[bar->grid.selected]; |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
146 struct selection sel = {0}; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
147 |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
148 if (bar->grid.selected > CHARACTER_SPELL_MAX) |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
149 return; |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
150 if (!(sp = ch->spells[bar->grid.selected]) || sp->mp > (unsigned int)ch->mp) |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
151 return; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
152 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
153 /* Use the spell selection algorithm to fill default values. */ |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
154 spell_select(sp, bt, &sel); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
155 battle_state_selection(bt, &sel); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
156 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
157 /* A cursor should be present. */ |
495
2af25db99273
ui: theme -> mlk_theme
David Demelier <markand@malikania.fr>
parents:
493
diff
changeset
|
158 if (!mlk_sprite_ok(BATTLE_THEME(bt)->sprites[MLK_THEME_SPRITE_CURSOR])) |
473
02b16dd49b54
core: trace -> mlk_trace
David Demelier <markand@malikania.fr>
parents:
468
diff
changeset
|
159 mlk_tracef("battle: no cursor sprite in theme"); |
505
6100c643dba0
ui: finally ditch theme
David Demelier <markand@malikania.fr>
parents:
504
diff
changeset
|
160 #endif |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
161 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
162 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
163 static void |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
164 switch_selection_item(struct battle *bt) |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
165 { |
505
6100c643dba0
ui: finally ditch theme
David Demelier <markand@malikania.fr>
parents:
504
diff
changeset
|
166 #if 0 |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
167 const struct selection slt = { |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
168 .allowed_kinds = SELECTION_KIND_ONE, |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
169 .allowed_sides = SELECTION_SIDE_TEAM | SELECTION_SIDE_ENEMY, |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
170 .index_side = 1, |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
171 .index_character = battle_index(bt) |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
172 }; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
173 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
174 battle_state_selection(bt, &slt); |
505
6100c643dba0
ui: finally ditch theme
David Demelier <markand@malikania.fr>
parents:
504
diff
changeset
|
175 #endif |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
176 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
177 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
178 /* |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
179 * The following functions actually draw the bar and their components depending |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
180 * on the current selected menu. |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
181 */ |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
182 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
183 static void |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
184 draw_help(const struct battle_bar_default *bar, const char *what) |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
185 { |
505
6100c643dba0
ui: finally ditch theme
David Demelier <markand@malikania.fr>
parents:
504
diff
changeset
|
186 #if 0 |
493
fce3b3c4b496
ui: label -> mlk_label
David Demelier <markand@malikania.fr>
parents:
492
diff
changeset
|
187 struct mlk_label label = {0}; |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
188 unsigned int lw = 0, lh = 0; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
189 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
190 label.text = what; |
493
fce3b3c4b496
ui: label -> mlk_label
David Demelier <markand@malikania.fr>
parents:
492
diff
changeset
|
191 mlk_label_query(&label, &lw, &lh); |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
192 label.x = bar->grid.x + (bar->grid.w / 2) - (lw / 2); |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
193 label.y = bar->grid.y - lh - THEME(bar)->padding; |
493
fce3b3c4b496
ui: label -> mlk_label
David Demelier <markand@malikania.fr>
parents:
492
diff
changeset
|
194 mlk_label_draw(&label); |
505
6100c643dba0
ui: finally ditch theme
David Demelier <markand@malikania.fr>
parents:
504
diff
changeset
|
195 #endif |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
196 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
197 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
198 static void |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
199 draw_spell_help(const struct battle_bar_default *bar, const struct battle *bt) |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
200 { |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
201 const struct character *ch = battle_current(bt)->ch; |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
202 const struct spell *sp; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
203 |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
204 if (bar->grid.selected >= CHARACTER_SPELL_MAX) |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
205 return; |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
206 if (!(sp = ch->spells[bar->grid.selected])) |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
207 return; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
208 |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
209 draw_help(bar, sp->description); |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
210 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
211 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
212 static void |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
213 draw_item_help(const struct battle_bar_default *bar, const struct battle *bt) |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
214 { |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
215 const struct inventory_slot *slot; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
216 |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
217 if (bar->grid.selected >= INVENTORY_ITEM_MAX) |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
218 return; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
219 |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
220 slot = &bt->inventory->items[bar->grid.selected]; |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
221 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
222 if (!slot->item) |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
223 return; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
224 |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
225 draw_help(bar, slot->item->description); |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
226 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
227 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
228 static void |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
229 draw_status_character_stats(const struct battle_bar_default *bar, |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
230 const struct character *ch, |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
231 int x, |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
232 int y, |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
233 unsigned int h) |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
234 { |
505
6100c643dba0
ui: finally ditch theme
David Demelier <markand@malikania.fr>
parents:
504
diff
changeset
|
235 #if 0 |
495
2af25db99273
ui: theme -> mlk_theme
David Demelier <markand@malikania.fr>
parents:
493
diff
changeset
|
236 const struct mlk_theme *theme = THEME(bar); |
493
fce3b3c4b496
ui: label -> mlk_label
David Demelier <markand@malikania.fr>
parents:
492
diff
changeset
|
237 struct mlk_label label; |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
238 unsigned int spacing, lw, lh; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
239 char line[64]; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
240 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
241 /* Compute spacing between elements. */ |
495
2af25db99273
ui: theme -> mlk_theme
David Demelier <markand@malikania.fr>
parents:
493
diff
changeset
|
242 spacing = h - (mlk_font_height(theme->fonts[MLK_THEME_FONT_INTERFACE]) * 3); |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
243 spacing /= 4; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
244 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
245 /* Reuse the same label. */ |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
246 label.text = line; |
493
fce3b3c4b496
ui: label -> mlk_label
David Demelier <markand@malikania.fr>
parents:
492
diff
changeset
|
247 label.flags = MLK_LABEL_FLAGS_SHADOW; |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
248 |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
249 /* Name. */ |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
250 snprintf(line, sizeof (line), "%s", ch->name); |
493
fce3b3c4b496
ui: label -> mlk_label
David Demelier <markand@malikania.fr>
parents:
492
diff
changeset
|
251 mlk_label_query(&label, &lw, &lh); |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
252 label.x = x + theme->padding; |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
253 label.y = y + spacing; |
493
fce3b3c4b496
ui: label -> mlk_label
David Demelier <markand@malikania.fr>
parents:
492
diff
changeset
|
254 mlk_label_draw(&label); |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
255 |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
256 /* HP. */ |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
257 snprintf(line, sizeof (line), "%d/%u", ch->hp, ch->hpmax); |
493
fce3b3c4b496
ui: label -> mlk_label
David Demelier <markand@malikania.fr>
parents:
492
diff
changeset
|
258 mlk_label_query(&label, &lw, &lh); |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
259 label.x = x + theme->padding; |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
260 label.y = label.y + lh + spacing; |
493
fce3b3c4b496
ui: label -> mlk_label
David Demelier <markand@malikania.fr>
parents:
492
diff
changeset
|
261 mlk_label_draw(&label); |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
262 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
263 /* MP. */ |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
264 snprintf(line, sizeof (line), "%d/%u", ch->mp, ch->mpmax); |
493
fce3b3c4b496
ui: label -> mlk_label
David Demelier <markand@malikania.fr>
parents:
492
diff
changeset
|
265 mlk_label_query(&label, &lw, &lh); |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
266 label.x = x + theme->padding; |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
267 label.y = label.y + lh + spacing; |
493
fce3b3c4b496
ui: label -> mlk_label
David Demelier <markand@malikania.fr>
parents:
492
diff
changeset
|
268 mlk_label_draw(&label); |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
269 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
270 /* Status. */ |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
271 /* TODO: list all status. */ |
505
6100c643dba0
ui: finally ditch theme
David Demelier <markand@malikania.fr>
parents:
504
diff
changeset
|
272 #endif |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
273 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
274 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
275 static void |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
276 draw_status_character(const struct battle_bar_default *bar, |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
277 const struct battle *bt, |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
278 const struct character *ch, |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
279 const struct geo *geo, |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
280 unsigned int index) |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
281 { |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
282 int x, y; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
283 unsigned int w, h; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
284 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
285 /* Compute bounding box for rendering. */ |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
286 w = geo->w / bt->teamsz; |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
287 h = geo->h; |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
288 x = geo->x + (index * w); |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
289 y = geo->y; |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
290 |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
291 draw_status_character_stats(bar, ch, x, y, h); |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
292 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
293 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
294 static void |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
295 draw_status_characters(const struct battle_bar_default *bar, |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
296 const struct battle *bt, |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
297 const struct geo *geo) |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
298 { |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
299 const struct battle_entity *et; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
300 unsigned int index = 0; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
301 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
302 BATTLE_TEAM_FOREACH(bt, et) { |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
303 if (character_ok(et->ch)) |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
304 draw_status_character(bar, bt, et->ch, geo, index); |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
305 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
306 ++index; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
307 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
308 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
309 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
310 static void |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
311 draw_status(const struct battle_bar_default *bar, const struct battle *bt, const struct geo *geo) |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
312 { |
491
734b598534c4
ui: frame -> mlk_frame
David Demelier <markand@malikania.fr>
parents:
487
diff
changeset
|
313 mlk_frame_draw(&(const struct mlk_frame) { |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
314 .x = geo->x, |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
315 .y = geo->y, |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
316 .w = geo->w, |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
317 .h = geo->h |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
318 }); |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
319 |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
320 draw_status_characters(bar, bt, geo); |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
321 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
322 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
323 static void |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
324 draw_menu(const struct battle_bar_default *bar, const struct geo *geo) |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
325 { |
505
6100c643dba0
ui: finally ditch theme
David Demelier <markand@malikania.fr>
parents:
504
diff
changeset
|
326 #if 0 |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
327 struct { |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
328 unsigned int w, h; |
487
f2d3c5a97884
ui: align -> mlk_align
David Demelier <markand@malikania.fr>
parents:
485
diff
changeset
|
329 enum mlk_align align; |
493
fce3b3c4b496
ui: label -> mlk_label
David Demelier <markand@malikania.fr>
parents:
492
diff
changeset
|
330 struct mlk_label label; |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
331 } buttons[] = { |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
332 { |
487
f2d3c5a97884
ui: align -> mlk_align
David Demelier <markand@malikania.fr>
parents:
485
diff
changeset
|
333 .align = MLK_ALIGN_TOP, |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
334 .label = { |
411
d74f53299252
make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents:
401
diff
changeset
|
335 .text = "Attack", |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
336 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
337 }, |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
338 { |
487
f2d3c5a97884
ui: align -> mlk_align
David Demelier <markand@malikania.fr>
parents:
485
diff
changeset
|
339 .align = MLK_ALIGN_RIGHT, |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
340 .label = { |
411
d74f53299252
make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents:
401
diff
changeset
|
341 .text = "Magic", |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
342 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
343 }, |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
344 { |
487
f2d3c5a97884
ui: align -> mlk_align
David Demelier <markand@malikania.fr>
parents:
485
diff
changeset
|
345 .align = MLK_ALIGN_BOTTOM, |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
346 .label = { |
411
d74f53299252
make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents:
401
diff
changeset
|
347 .text = "Objects", |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
348 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
349 }, |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
350 { |
487
f2d3c5a97884
ui: align -> mlk_align
David Demelier <markand@malikania.fr>
parents:
485
diff
changeset
|
351 .align = MLK_ALIGN_LEFT, |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
352 .label = { |
411
d74f53299252
make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents:
401
diff
changeset
|
353 .text = "Special", |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
354 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
355 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
356 }; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
357 |
495
2af25db99273
ui: theme -> mlk_theme
David Demelier <markand@malikania.fr>
parents:
493
diff
changeset
|
358 const struct mlk_theme *theme = THEME(bar); |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
359 int bx, by; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
360 unsigned int bw, bh; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
361 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
362 /* Compute bounding box with margins removed. */ |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
363 bx = geo->x + theme->padding; |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
364 by = geo->y + theme->padding; |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
365 bw = geo->w - theme->padding * 2; |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
366 bh = geo->h - theme->padding * 2; |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
367 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
368 /* Draw menu frame. */ |
491
734b598534c4
ui: frame -> mlk_frame
David Demelier <markand@malikania.fr>
parents:
487
diff
changeset
|
369 mlk_frame_draw(&(const struct mlk_frame) { |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
370 .x = geo->x, |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
371 .y = geo->y, |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
372 .w = geo->w, |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
373 .h = geo->h |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
374 }); |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
375 |
474
ca30ff96bbe0
core: util -> mlk_util
David Demelier <markand@malikania.fr>
parents:
473
diff
changeset
|
376 for (size_t i = 0; i < MLK_UTIL_SIZE(buttons); ++i) { |
493
fce3b3c4b496
ui: label -> mlk_label
David Demelier <markand@malikania.fr>
parents:
492
diff
changeset
|
377 mlk_label_query(&buttons[i].label, &buttons[i].w, &buttons[i].h); |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
378 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
379 /* Change theme if it's selected. */ |
504 | 380 #if 0 |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
381 if ((size_t)bar->menu == i) |
493
fce3b3c4b496
ui: label -> mlk_label
David Demelier <markand@malikania.fr>
parents:
492
diff
changeset
|
382 buttons[i].label.flags |= MLK_LABEL_FLAGS_SELECTED; |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
383 else |
493
fce3b3c4b496
ui: label -> mlk_label
David Demelier <markand@malikania.fr>
parents:
492
diff
changeset
|
384 buttons[i].label.flags &= ~MLK_LABEL_FLAGS_SELECTED; |
504 | 385 #endif |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
386 |
487
f2d3c5a97884
ui: align -> mlk_align
David Demelier <markand@malikania.fr>
parents:
485
diff
changeset
|
387 mlk_align(buttons[i].align, |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
388 &buttons[i].label.x, &buttons[i].label.y, buttons[i].w, buttons[i].h, |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
389 bx, by, bw, bh); |
493
fce3b3c4b496
ui: label -> mlk_label
David Demelier <markand@malikania.fr>
parents:
492
diff
changeset
|
390 mlk_label_draw(&buttons[i].label); |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
391 } |
505
6100c643dba0
ui: finally ditch theme
David Demelier <markand@malikania.fr>
parents:
504
diff
changeset
|
392 #endif |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
393 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
394 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
395 /* |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
396 * This function is called only in the first level of the bar menu: selecting |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
397 * one of the Attack, Magic, Item and Special items. |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
398 */ |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
399 static void |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
400 handle_keydown_menu(struct battle_bar_default *bar, struct battle *bt, const union mlk_event *ev) |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
401 { |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
402 (void)bt; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
403 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
404 switch (ev->key.key) { |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
405 case MLK_KEY_UP: |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
406 bar->menu = BATTLE_BAR_DEFAULT_MENU_ATTACK; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
407 break; |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
408 case MLK_KEY_RIGHT: |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
409 bar->menu = BATTLE_BAR_DEFAULT_MENU_MAGIC; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
410 break; |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
411 case MLK_KEY_DOWN: |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
412 bar->menu = BATTLE_BAR_DEFAULT_MENU_ITEM; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
413 break; |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
414 case MLK_KEY_LEFT: |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
415 bar->menu = BATTLE_BAR_DEFAULT_MENU_SPECIAL; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
416 break; |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
417 case MLK_KEY_ENTER: |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
418 /* |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
419 * At this step, attack does not require opening the sub menu so |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
420 * we change selection state immediately if needed. |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
421 */ |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
422 switch (bar->menu) { |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
423 case BATTLE_BAR_DEFAULT_MENU_ATTACK: |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
424 switch_selection_attack(bar, bt); |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
425 break; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
426 case BATTLE_BAR_DEFAULT_MENU_ITEM: |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
427 battle_bar_default_open_item(bar, bt); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
428 break; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
429 case BATTLE_BAR_DEFAULT_MENU_MAGIC: |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
430 battle_bar_default_open_magic(bar, bt, battle_current(bt)->ch); |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
431 break; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
432 default: |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
433 break; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
434 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
435 break; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
436 default: |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
437 break; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
438 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
439 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
440 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
441 /* |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
442 * This function is called when we're selecting a submenu entry from Items |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
443 * and Magic. |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
444 */ |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
445 static void |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
446 handle_keydown_grid(struct battle_bar_default *bar, struct battle *bt, const union mlk_event *ev) |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
447 { |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
448 /* Go back to main menu if I press escape. */ |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
449 if (ev->key.key == MLK_KEY_ESCAPE) |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
450 bar->state = BATTLE_BAR_DEFAULT_STATE_MENU; |
492
c7b18475f640
ui: gridmenu -> mlk_gridmenu
David Demelier <markand@malikania.fr>
parents:
491
diff
changeset
|
451 else if (mlk_gridmenu_handle(&bar->grid, ev)) { |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
452 switch (bar->menu) { |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
453 case BATTLE_BAR_DEFAULT_MENU_MAGIC: |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
454 switch_selection_spell(bar, bt); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
455 break; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
456 case BATTLE_BAR_DEFAULT_MENU_ITEM: |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
457 switch_selection_item(bt); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
458 break; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
459 default: |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
460 break; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
461 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
462 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
463 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
464 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
465 static void |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
466 handle_keydown(struct battle_bar_default *bar, struct battle *bt, const union mlk_event *ev) |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
467 { |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
468 assert(ev->type == MLK_EVENT_KEYDOWN); |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
469 |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
470 static void (*handlers[])(struct battle_bar_default *, struct battle *, const union mlk_event *) = { |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
471 [BATTLE_BAR_DEFAULT_STATE_MENU] = handle_keydown_menu, |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
472 [BATTLE_BAR_DEFAULT_STATE_GRID] = handle_keydown_grid |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
473 }; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
474 |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
475 if (handlers[bar->state]) |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
476 handlers[bar->state](bar, bt, ev); |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
477 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
478 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
479 #if 0 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
480 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
481 static void |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
482 handle_clickdown(struct battle_bar_default *bar, struct battle *bt, const union event *ev) |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
483 { |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
484 assert(ev->type == EVENT_CLICKDOWN); |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
485 |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
486 (void)bar; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
487 (void)bt; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
488 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
489 switch (bar->state) { |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
490 case BATTLE_BAR_DEFAULT_STATE_MENU: |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
491 /* We are selecting a main menu entry. */ |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
492 /* TODO: implement click here too. */ |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
493 break; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
494 case BATTLE_BAR_DEFAULT_STATE_SUB: |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
495 /* We are in the sub menu (objects/spells). */ |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
496 if (bar->sub_grid.state == GRIDMENU_STATE_ACTIVATED) |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
497 default: |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
498 break; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
499 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
500 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
501 return 0; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
502 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
503 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
504 #endif |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
505 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
506 static void |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
507 self_start(struct battle_bar *bar, struct battle *bt) |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
508 { |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
509 (void)bt; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
510 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
511 battle_bar_default_start(bar->data); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
512 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
513 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
514 static void |
395
ef2fc4442ed5
ui: don't use fixed size arrays
David Demelier <markand@malikania.fr>
parents:
386
diff
changeset
|
515 self_select(struct battle_bar *bar, struct battle *bt, const struct selection *sel) |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
516 { |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
517 battle_bar_default_select(bar->data, bt, sel); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
518 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
519 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
520 static void |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
521 self_handle(struct battle_bar *bar, struct battle *bt, const union mlk_event *ev) |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
522 { |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
523 battle_bar_default_handle(bar->data, bt, ev); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
524 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
525 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
526 static void |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
527 self_draw(const struct battle_bar *bar, const struct battle *bt) |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
528 { |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
529 battle_bar_default_draw(bar->data, bt); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
530 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
531 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
532 void |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
533 battle_bar_default_init(struct battle_bar_default *bar) |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
534 { |
505
6100c643dba0
ui: finally ditch theme
David Demelier <markand@malikania.fr>
parents:
504
diff
changeset
|
535 #if 0 |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
536 assert(bar); |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
537 |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
538 struct geo geo[2]; |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
539 |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
540 memset(bar, 0, sizeof (*bar)); |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
541 |
485
3ff1fe64d0cd
core: window -> mlk_window
David Demelier <markand@malikania.fr>
parents:
474
diff
changeset
|
542 bar->w = mlk_window.w; |
3ff1fe64d0cd
core: window -> mlk_window
David Demelier <markand@malikania.fr>
parents:
474
diff
changeset
|
543 bar->h = mlk_window.h * 0.12; |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
544 bar->x = 0; |
485
3ff1fe64d0cd
core: window -> mlk_window
David Demelier <markand@malikania.fr>
parents:
474
diff
changeset
|
545 bar->y = mlk_window.h - bar->h; |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
546 |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
547 dimensions(geo, bar); |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
548 |
492
c7b18475f640
ui: gridmenu -> mlk_gridmenu
David Demelier <markand@malikania.fr>
parents:
491
diff
changeset
|
549 mlk_gridmenu_init(&bar->grid, 2, 2, NULL, 0); |
c7b18475f640
ui: gridmenu -> mlk_gridmenu
David Demelier <markand@malikania.fr>
parents:
491
diff
changeset
|
550 mlk_gridmenu_resize(&bar->grid, bar->x, geo[0].y, geo[1].w, bar->h); |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
551 bar->grid.theme = bar->theme; |
505
6100c643dba0
ui: finally ditch theme
David Demelier <markand@malikania.fr>
parents:
504
diff
changeset
|
552 #endif |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
553 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
554 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
555 void |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
556 battle_bar_default_open_magic(struct battle_bar_default *bar, const struct battle *bt, struct character *ch) |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
557 { |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
558 assert(bar); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
559 assert(bt); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
560 assert(ch); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
561 |
413
222045c513ec
misc: fix some warnings
David Demelier <markand@malikania.fr>
parents:
411
diff
changeset
|
562 (void)bt; |
222045c513ec
misc: fix some warnings
David Demelier <markand@malikania.fr>
parents:
411
diff
changeset
|
563 |
460 | 564 if (!bar->items) |
565 bar->items = mlk_alloc_new0(CHARACTER_SPELL_MAX, sizeof (*bar->items)); | |
566 else | |
567 bar->items = mlk_alloc_renew0(bar->items, CHARACTER_SPELL_MAX); | |
504 | 568 |
401
df5e1fea1d2e
ui: gridmenu should be fully constified
David Demelier <markand@malikania.fr>
parents:
398
diff
changeset
|
569 bar->itemsz = CHARACTER_SPELL_MAX; |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
570 bar->state = BATTLE_BAR_DEFAULT_STATE_GRID; |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
571 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
572 for (size_t i = 0; i < CHARACTER_SPELL_MAX; ++i) |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
573 if (ch->spells[i]) |
401
df5e1fea1d2e
ui: gridmenu should be fully constified
David Demelier <markand@malikania.fr>
parents:
398
diff
changeset
|
574 bar->items[i] = ch->spells[i]->name; |
df5e1fea1d2e
ui: gridmenu should be fully constified
David Demelier <markand@malikania.fr>
parents:
398
diff
changeset
|
575 |
df5e1fea1d2e
ui: gridmenu should be fully constified
David Demelier <markand@malikania.fr>
parents:
398
diff
changeset
|
576 bar->grid.items = bar->items; |
df5e1fea1d2e
ui: gridmenu should be fully constified
David Demelier <markand@malikania.fr>
parents:
398
diff
changeset
|
577 bar->grid.itemsz = bar->itemsz; |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
578 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
579 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
580 void |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
581 battle_bar_default_open_item(struct battle_bar_default *bar, const struct battle *bt) |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
582 { |
386
7d5032755b7d
rpg: cleanup leftovers
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
583 assert(bar); |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
584 assert(bt); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
585 |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
586 /* TODO: not implemented yet. */ |
413
222045c513ec
misc: fix some warnings
David Demelier <markand@malikania.fr>
parents:
411
diff
changeset
|
587 (void)bar; |
222045c513ec
misc: fix some warnings
David Demelier <markand@malikania.fr>
parents:
411
diff
changeset
|
588 (void)bt; |
395
ef2fc4442ed5
ui: don't use fixed size arrays
David Demelier <markand@malikania.fr>
parents:
386
diff
changeset
|
589 #if 0 |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
590 for (size_t i = 0; i < INVENTORY_ITEM_MAX; ++i) { |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
591 if (bt->inventory->items[i].item) { |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
592 snprintf(bar->sub_items[i], sizeof (bar->sub_items[i]), "%-16s %u", |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
593 bt->inventory->items[i].item->name, bt->inventory->items[i].amount); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
594 bar->sub_grid.menu[i] = bar->sub_items[i]; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
595 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
596 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
597 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
598 bar->state = BATTLE_BAR_DEFAULT_STATE_GRID; |
395
ef2fc4442ed5
ui: don't use fixed size arrays
David Demelier <markand@malikania.fr>
parents:
386
diff
changeset
|
599 #endif |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
600 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
601 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
602 void |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
603 battle_bar_default_start(struct battle_bar_default *bar) |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
604 { |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
605 assert(bar); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
606 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
607 bar->menu = BATTLE_BAR_DEFAULT_MENU_ATTACK; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
608 bar->state = BATTLE_BAR_DEFAULT_STATE_MENU; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
609 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
610 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
611 /* |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
612 * Apply the battle selection for the current menu item. This function is called |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
613 * from the battle-state-selection state when the user validated the selection. |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
614 */ |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
615 void |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
616 battle_bar_default_select(struct battle_bar_default *bar, struct battle *bt, const struct selection *sel) |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
617 { |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
618 assert(bar); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
619 assert(bt); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
620 assert(sel); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
621 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
622 static void (*validate[])(struct battle_bar_default *, struct battle *, const struct selection *) = { |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
623 [BATTLE_BAR_DEFAULT_MENU_ATTACK] = validate_attack, |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
624 [BATTLE_BAR_DEFAULT_MENU_ITEM] = validate_item, |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
625 [BATTLE_BAR_DEFAULT_MENU_MAGIC] = validate_magic, |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
626 [BATTLE_BAR_DEFAULT_MENU_SPECIAL] = NULL |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
627 }; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
628 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
629 if (validate[bar->menu]) |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
630 validate[bar->menu](bar, bt, sel); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
631 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
632 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
633 void |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
634 battle_bar_default_handle(struct battle_bar_default *bar, struct battle *bt, const union mlk_event *ev) |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
635 { |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
636 assert(bar); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
637 assert(bt); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
638 assert(ev); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
639 |
450
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
640 static void (*handlers[])(struct battle_bar_default *, struct battle *, const union mlk_event *) = { |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
641 [MLK_EVENT_KEYDOWN] = handle_keydown, |
b26dd49f69ff
core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
642 [MLK_EVENT_NUM] = NULL |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
643 }; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
644 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
645 if (handlers[ev->type]) |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
646 handlers[ev->type](bar, bt, ev); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
647 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
648 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
649 void |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
650 battle_bar_default_draw(const struct battle_bar_default *bar, const struct battle *bt) |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
651 { |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
652 assert(bar); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
653 assert(bt); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
654 |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
655 struct geo geo[2]; |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
656 |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
657 dimensions(geo, bar); |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
658 draw_menu(bar, &geo[0]); |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
659 draw_status(bar, bt, &geo[1]); |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
660 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
661 if (bar->state == BATTLE_BAR_DEFAULT_STATE_GRID) { |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
662 switch (bar->menu) { |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
663 case BATTLE_BAR_DEFAULT_MENU_MAGIC: |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
664 draw_spell_help(bar, bt); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
665 break; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
666 case BATTLE_BAR_DEFAULT_MENU_ITEM: |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
667 draw_item_help(bar, bt); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
668 break; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
669 default: |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
670 break; |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
671 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
672 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
673 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
674 /* Sub menu is only shown if state is set to it. */ |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
675 if (bar->state == BATTLE_BAR_DEFAULT_STATE_GRID) |
492
c7b18475f640
ui: gridmenu -> mlk_gridmenu
David Demelier <markand@malikania.fr>
parents:
491
diff
changeset
|
676 mlk_gridmenu_draw(&bar->grid); |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
677 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
678 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
679 void |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
680 battle_bar_default_finish(struct battle_bar_default *bar) |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
681 { |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
682 assert(bar); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
683 |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
684 free(bar->items); |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
685 memset(bar, 0, sizeof (*bar)); |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
686 } |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
687 |
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
688 void |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
689 battle_bar_default(struct battle_bar_default *self, struct battle_bar *bar) |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
690 { |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
691 assert(self); |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
692 assert(bar); |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
693 |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
694 memset(bar, 0, sizeof (*bar)); |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
695 |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
696 bar->data = self; |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
697 bar->start = self_start; |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
698 bar->select = self_select; |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
699 bar->handle = self_handle; |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
395
diff
changeset
|
700 bar->draw = self_draw; |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
701 } |