comparison src/libmlk-rpg/rpg/battle-state-menu.c @ 320:8f9937403749

misc: improve loading of data
author David Demelier <markand@malikania.fr>
date Fri, 01 Oct 2021 20:30:00 +0200
parents libmlk-rpg/rpg/battle-state-menu.c@d01e83210ca2
children 460c78706989
comparison
equal deleted inserted replaced
319:b843eef4cc35 320:8f9937403749
1 /*
2 * battle-state-menu.h -- battle state (menu)
3 *
4 * Copyright (c) 2020-2021 David Demelier <markand@malikania.fr>
5 *
6 * Permission to use, copy, modify, and/or distribute this software for any
7 * purpose with or without fee is hereby granted, provided that the above
8 * copyright notice and this permission notice appear in all copies.
9 *
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 */
18
19 #include <assert.h>
20
21 #include "battle.h"
22 #include "battle-bar.h"
23 #include "battle-state.h"
24 #include "character.h"
25 #include "spell.h"
26
27 static void
28 open_spells(struct battle *bt)
29 {
30 battle_bar_open_spells(&bt->bar, bt, bt->order_cur->ch);
31 battle_state_sub(bt);
32 }
33
34 static void
35 open_attack(struct battle *bt)
36 {
37 struct selection slt = {
38 .allowed_sides = SELECTION_SIDE_ENEMY
39 };
40
41 selection_first(&slt, bt);
42 battle_state_selection(bt, &slt);
43 }
44
45 static void
46 open_items(struct battle *bt)
47 {
48 battle_bar_open_items(&bt->bar, bt);
49 battle_state_sub(bt);
50 }
51
52 static void
53 handle(struct battle_state *st, struct battle *bt, const union event *ev)
54 {
55 (void)st;
56
57 if (battle_bar_handle(&bt->bar, bt, ev)) {
58 switch (bt->bar.menu) {
59 case BATTLE_BAR_MENU_ATTACK:
60 open_attack(bt);
61 break;
62 case BATTLE_BAR_MENU_MAGIC:
63 open_spells(bt);
64 break;
65 case BATTLE_BAR_MENU_OBJECTS:
66 open_items(bt);
67 break;
68 case BATTLE_BAR_MENU_SPECIAL:
69 break;
70 default:
71 break;
72 }
73 }
74 }
75
76 void
77 battle_state_menu(struct battle *bt)
78 {
79 assert(bt);
80
81 static struct battle_state self = {
82 .handle = handle,
83 };
84
85 battle_bar_open_menu(&bt->bar);
86 battle_switch(bt, &self);
87 }