Mercurial > molko
annotate src/libmlk-rpg/rpg/battle-state-attacking.c @ 428:26d23999a54b
core: get rid of zfile
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sat, 15 Oct 2022 14:38:15 +0200 |
parents | 222045c513ec |
children | 8f59201dc76b |
rev | line source |
---|---|
230
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
382
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
2 * battle-state-attacking.c -- battle state (entity is moving for attacking) |
230
86b71e1f9dd5
rpg: add movements in battle
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> |
230
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 #include <assert.h> |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 #include <stdlib.h> |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 #include <core/alloc.h> |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 #include <core/panic.h> |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 #include <core/sprite.h> |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 |
383
b944cd41e8f9
rpg: do the same for battle entities
David Demelier <markand@malikania.fr>
parents:
382
diff
changeset
|
26 #include "battle-entity-state-attacking.h" |
b944cd41e8f9
rpg: do the same for battle entities
David Demelier <markand@malikania.fr>
parents:
382
diff
changeset
|
27 #include "battle-entity-state-blinking.h" |
b944cd41e8f9
rpg: do the same for battle entities
David Demelier <markand@malikania.fr>
parents:
382
diff
changeset
|
28 #include "battle-entity-state-moving.h" |
b944cd41e8f9
rpg: do the same for battle entities
David Demelier <markand@malikania.fr>
parents:
382
diff
changeset
|
29 #include "battle-entity-state-normal.h" |
384
c458441ff472
rpg: more asserts, const and cleanups
David Demelier <markand@malikania.fr>
parents:
383
diff
changeset
|
30 #include "battle-entity-state.h" |
c458441ff472
rpg: more asserts, const and cleanups
David Demelier <markand@malikania.fr>
parents:
383
diff
changeset
|
31 #include "battle-state-attacking.h" |
c458441ff472
rpg: more asserts, const and cleanups
David Demelier <markand@malikania.fr>
parents:
383
diff
changeset
|
32 #include "battle-state-check.h" |
c458441ff472
rpg: more asserts, const and cleanups
David Demelier <markand@malikania.fr>
parents:
383
diff
changeset
|
33 #include "battle-state.h" |
c458441ff472
rpg: more asserts, const and cleanups
David Demelier <markand@malikania.fr>
parents:
383
diff
changeset
|
34 #include "battle.h" |
230
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 #include "character.h" |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 |
382
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
37 struct self { |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
38 struct battle_state_attacking data; |
230
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 struct battle_state state; |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
40 }; |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
41 |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
42 static void |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
43 damage(const struct battle_entity *source, struct battle_entity *target, struct battle *bt) |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
44 { |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
45 (void)source; |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
47 /* TODO: math calculation here.*/ |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
48 target->ch->hp -= 50; |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 if (target->ch->hp < 0) |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 target->ch->hp = 0; |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 battle_indicator_hp(bt, target->ch, 50); |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 } |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 |
298
196264679079
misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents:
254
diff
changeset
|
56 static int |
230
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
57 update(struct battle_state *st, struct battle *bt, unsigned int ticks) |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
58 { |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
384
diff
changeset
|
59 battle_state_attacking_update(st->data, bt, ticks); |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
384
diff
changeset
|
60 |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
384
diff
changeset
|
61 return 0; |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
384
diff
changeset
|
62 } |
230
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
63 |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
384
diff
changeset
|
64 static void |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
384
diff
changeset
|
65 draw(const struct battle_state *st, const struct battle *bt) |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
384
diff
changeset
|
66 { |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
384
diff
changeset
|
67 battle_state_attacking_draw(st->data, bt); |
230
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
68 } |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
69 |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
70 static void |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
71 finish(struct battle_state *st, struct battle *bt) |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
72 { |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
73 (void)bt; |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
74 |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
75 free(st->data); |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
76 } |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
77 |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
78 void |
382
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
79 battle_state_attacking_init(struct battle_state_attacking *atk, |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
80 struct battle_entity *source, |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
81 struct battle_entity *target) |
230
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
82 { |
382
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
83 assert(atk); |
384
c458441ff472
rpg: more asserts, const and cleanups
David Demelier <markand@malikania.fr>
parents:
383
diff
changeset
|
84 assert(battle_entity_ok(source)); |
c458441ff472
rpg: more asserts, const and cleanups
David Demelier <markand@malikania.fr>
parents:
383
diff
changeset
|
85 assert(battle_entity_ok(target)); |
230
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
86 |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
87 int x, y; |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
88 |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
89 /* Starts this state with advancing. */ |
382
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
90 atk->source = source; |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
91 atk->target = target; |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
92 atk->origin_x = source->x; |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
93 atk->origin_y = source->y; |
230
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
94 |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
95 /* We go to the enemy. */ |
382
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
96 x = target->x + target->ch->sprites[CHARACTER_SPRITE_NORMAL]->cellw; |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
97 y = target->y; |
230
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
98 |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
99 /* If it is an enemy we don't move it but blink instead. */ |
382
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
100 if (source->ch->exec) { |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
101 atk->status = BATTLE_STATE_ATTACKING_BLINKING; |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
102 battle_entity_state_blinking(source); |
230
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
103 } else |
382
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
104 battle_entity_state_moving(source, x, y); |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
105 } |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
106 |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
384
diff
changeset
|
107 void |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
384
diff
changeset
|
108 battle_state_attacking_update(struct battle_state_attacking *atk, struct battle *bt, unsigned int ticks) |
382
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
109 { |
384
c458441ff472
rpg: more asserts, const and cleanups
David Demelier <markand@malikania.fr>
parents:
383
diff
changeset
|
110 assert(atk); |
c458441ff472
rpg: more asserts, const and cleanups
David Demelier <markand@malikania.fr>
parents:
383
diff
changeset
|
111 assert(bt); |
c458441ff472
rpg: more asserts, const and cleanups
David Demelier <markand@malikania.fr>
parents:
383
diff
changeset
|
112 |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
384
diff
changeset
|
113 battle_update_component(bt, ticks, BATTLE_COMPONENT_ALL); |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
384
diff
changeset
|
114 |
382
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
115 if (!battle_entity_update(atk->source, 0)) |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
384
diff
changeset
|
116 return; |
382
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
117 |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
118 switch (atk->status) { |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
119 case BATTLE_STATE_ATTACKING_ADVANCING: |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
120 /* |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
121 * Current entity state is battle-entity-state-moving but it is |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
122 * already updated from the game itself so pass 0 just to check |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
123 * if it has finished moving. |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
124 */ |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
125 atk->status = BATTLE_STATE_ATTACKING_DAMAGING; |
230
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
126 |
382
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
127 /* TODO: determine sprite to use about equipment. */ |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
128 battle_entity_state_attacking(atk->source, atk->source->ch->sprites[CHARACTER_SPRITE_SWORD]); |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
129 break; |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
130 case BATTLE_STATE_ATTACKING_DAMAGING: |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
131 /* Move back to original position. */ |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
132 atk->status = BATTLE_STATE_ATTACKING_RETURNING; |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
133 damage(atk->source, atk->target, bt); |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
134 battle_entity_state_moving(atk->source, atk->origin_x, atk->origin_y); |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
135 break; |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
136 case BATTLE_STATE_ATTACKING_RETURNING: |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
137 case BATTLE_STATE_ATTACKING_BLINKING: |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
138 /* Just wait. */ |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
139 battle_entity_state_normal(atk->source); |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
140 damage(atk->source, atk->target, bt); |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
141 battle_state_check(bt); |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
142 break; |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
143 default: |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
144 break; |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
145 } |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
384
diff
changeset
|
146 } |
230
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
147 |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
384
diff
changeset
|
148 void |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
384
diff
changeset
|
149 battle_state_attacking_draw(const struct battle_state_attacking *atk, const struct battle *bt) |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
384
diff
changeset
|
150 { |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
384
diff
changeset
|
151 assert(atk); |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
384
diff
changeset
|
152 assert(battle_ok(bt)); |
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
384
diff
changeset
|
153 |
413
222045c513ec
misc: fix some warnings
David Demelier <markand@malikania.fr>
parents:
398
diff
changeset
|
154 (void)atk; |
222045c513ec
misc: fix some warnings
David Demelier <markand@malikania.fr>
parents:
398
diff
changeset
|
155 |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
384
diff
changeset
|
156 battle_draw_component(bt, BATTLE_COMPONENT_ALL); |
230
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
157 } |
382
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
158 |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
159 void |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
160 battle_state_attacking(struct battle_entity *source, struct battle_entity *target, struct battle *bt) |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
161 { |
384
c458441ff472
rpg: more asserts, const and cleanups
David Demelier <markand@malikania.fr>
parents:
383
diff
changeset
|
162 assert(battle_entity_ok(source)); |
c458441ff472
rpg: more asserts, const and cleanups
David Demelier <markand@malikania.fr>
parents:
383
diff
changeset
|
163 assert(battle_entity_ok(target)); |
382
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
164 assert(bt); |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
165 |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
166 struct self *self; |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
167 |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
168 self = alloc_new0(sizeof (*self)); |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
169 self->state.data = self; |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
170 self->state.update = update; |
398
14ce7c4871e3
rpg: overhaul of battle bar
David Demelier <markand@malikania.fr>
parents:
384
diff
changeset
|
171 self->state.draw = draw; |
382
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
172 self->state.finish = finish; |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
173 |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
174 battle_state_attacking_init(&self->data, source, target); |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
175 battle_switch(bt, &self->state); |
43d155668a55
rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
176 } |