Mercurial > molko
annotate src/libmlk-rpg/rpg/battle-state-menu.c @ 428:26d23999a54b
core: get rid of zfile
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sat, 15 Oct 2022 14:38:15 +0200 |
parents | 14ce7c4871e3 |
children | 8f59201dc76b |
rev | line source |
---|---|
192
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 * battle-state-menu.h -- battle state (menu) |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
378
460c78706989
misc: update copyright years
David Demelier <markand@malikania.fr>
parents:
320
diff
changeset
|
4 * Copyright (c) 2020-2022 David Demelier <markand@malikania.fr> |
192
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 #include <assert.h> |
382
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
20 #include <stdlib.h> |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
21 |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
22 #include <core/alloc.h> |
192
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 #include "battle-bar.h" |
382
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
25 #include "battle-state-menu.h" |
384
c458441ff472
rpg: more asserts, const and cleanups
David Demelier <markand@malikania.fr>
parents:
382
diff
changeset
|
26 #include "battle-state.h" |
c458441ff472
rpg: more asserts, const and cleanups
David Demelier <markand@malikania.fr>
parents:
382
diff
changeset
|
27 #include "battle.h" |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
384
diff
changeset
|
28 |
286
3991779aaba9
adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
254
diff
changeset
|
29 static void |
192
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
30 handle(struct battle_state *st, struct battle *bt, const union event *ev) |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 { |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 (void)st; |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 |
382
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
34 battle_state_menu_handle(bt, ev); |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
35 } |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
36 |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
37 static int |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
38 update(struct battle_state *st, struct battle *bt, unsigned int ticks) |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
39 { |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
40 (void)st; |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
41 |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
42 battle_state_menu_update(bt, ticks); |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
43 |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
44 return 0; |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
45 } |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
46 |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
47 static void |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
48 draw(const struct battle_state *st, const struct battle *bt) |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
49 { |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
50 (void)st; |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
51 |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
52 battle_state_menu_draw(bt); |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
53 } |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
54 |
382
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
55 static void |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
56 finish(struct battle_state *st, struct battle *bt) |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
57 { |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
58 (void)bt; |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
59 |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
60 free(st); |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
61 } |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
62 |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
63 void |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
64 battle_state_menu_handle(struct battle *bt, const union event *ev) |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
65 { |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
66 assert(bt); |
384
c458441ff472
rpg: more asserts, const and cleanups
David Demelier <markand@malikania.fr>
parents:
382
diff
changeset
|
67 assert(ev); |
382
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
68 |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
384
diff
changeset
|
69 battle_bar_handle(bt->bar, bt, ev); |
192
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
70 } |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
71 |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
72 void |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
73 battle_state_menu_update(struct battle *bt, unsigned int ticks) |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
74 { |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
75 assert(battle_ok(bt)); |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
76 |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
77 battle_update_component(bt, ticks, BATTLE_COMPONENT_ALL); |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
78 } |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
79 |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
80 void |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
81 battle_state_menu_draw(const struct battle *bt) |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
82 { |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
83 assert(battle_ok(bt)); |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
84 |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
85 battle_draw_component(bt, BATTLE_COMPONENT_ALL); |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
86 } |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
87 |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
88 void |
192
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
89 battle_state_menu(struct battle *bt) |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
90 { |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
91 assert(bt); |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
92 |
382
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
93 struct battle_state *state; |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
94 |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
95 state = alloc_new0(sizeof (*state)); |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
96 state->data = bt; |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
97 state->handle = handle; |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
98 state->update = update; |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
385
diff
changeset
|
99 state->draw = draw; |
382
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
100 state->finish = finish; |
192
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
101 |
385
3f13dc6c0e37
rpg: separate battle and the bar, closes #2522
David Demelier <markand@malikania.fr>
parents:
384
diff
changeset
|
102 battle_bar_start(bt->bar, bt); |
382
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
103 battle_switch(bt, state); |
192
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
104 } |