Mercurial > molko
annotate libmlk-rpg/mlk/rpg/character.h @ 468:91ce23a36143
core: sprite -> mlk_sprite
author | David Demelier <markand@malikania.fr> |
---|---|
date | Mon, 27 Feb 2023 11:08:28 +0100 |
parents | 5729efd23286 |
children | 6e8f6640e05b |
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 * character.h -- character definition |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
445
773a082f0b91
misc: update copyright years
David Demelier <markand@malikania.fr>
parents:
434
diff
changeset
|
4 * Copyright (c) 2020-2023 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 |
366
19782ea1cf4a
misc: start rebranding
David Demelier <markand@malikania.fr>
parents:
320
diff
changeset
|
19 #ifndef MLK_RPG_CHARACTER_H |
19782ea1cf4a
misc: start rebranding
David Demelier <markand@malikania.fr>
parents:
320
diff
changeset
|
20 #define MLK_RPG_CHARACTER_H |
192
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 |
431
8f59201dc76b
core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
22 #include <mlk/core/core.h> |
292
08ab73b32832
misc: add extern "C" {} blocks for C++ friends
David Demelier <markand@malikania.fr>
parents:
286
diff
changeset
|
23 |
281
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
24 #define CHARACTER_SPELL_MAX (64) |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
25 |
192
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 struct battle; |
281
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
27 struct save; |
468
91ce23a36143
core: sprite -> mlk_sprite
David Demelier <markand@malikania.fr>
parents:
462
diff
changeset
|
28 struct mlk_sprite; |
192
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 struct spell; |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
30 |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 enum character_status { |
281
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
32 CHARACTER_STATUS_NORMAL, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
33 CHARACTER_STATUS_POISON = (1 << 0) |
192
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 }; |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 |
230
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
192
diff
changeset
|
36 enum character_sprite { |
281
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
37 CHARACTER_SPRITE_AXE, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
38 CHARACTER_SPRITE_BOW, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
39 CHARACTER_SPRITE_CROSSBOW, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
40 CHARACTER_SPRITE_DAGGER, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
41 CHARACTER_SPRITE_HAMMER, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
42 CHARACTER_SPRITE_NORMAL, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
43 CHARACTER_SPRITE_SPIKE, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
44 CHARACTER_SPRITE_SWORD, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
45 CHARACTER_SPRITE_WAND, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
46 CHARACTER_SPRITE_NUM |
235
fb304a94a05c
rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents:
230
diff
changeset
|
47 }; |
fb304a94a05c
rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents:
230
diff
changeset
|
48 |
281
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
49 enum character_equipment { |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
50 CHARACTER_EQUIPMENT_GLOVES, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
51 CHARACTER_EQUIPMENT_HELMET, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
52 CHARACTER_EQUIPMENT_SHIELD, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
53 CHARACTER_EQUIPMENT_TOP, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
54 CHARACTER_EQUIPMENT_TROUSERS, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
55 CHARACTER_EQUIPMENT_WEAPON, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
56 CHARACTER_EQUIPMENT_NUM |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
57 }; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
58 |
192
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
59 struct character { |
281
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
60 const char *name; |
286
3991779aaba9
adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
281
diff
changeset
|
61 enum character_status status; |
281
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
62 unsigned int level; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
63 int hp; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
64 unsigned int hpmax; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
65 unsigned int hpbonus; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
66 int mp; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
67 unsigned int mpmax; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
68 unsigned int mpbonus; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
69 int atk; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
70 unsigned int atkbonus; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
71 int def; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
72 unsigned int defbonus; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
73 int agt; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
74 unsigned int agtbonus; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
75 int luck; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
76 unsigned int luckbonus; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
77 unsigned int team_order; |
230
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
192
diff
changeset
|
78 |
468
91ce23a36143
core: sprite -> mlk_sprite
David Demelier <markand@malikania.fr>
parents:
462
diff
changeset
|
79 struct mlk_sprite *sprites[CHARACTER_SPRITE_NUM]; |
235
fb304a94a05c
rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents:
230
diff
changeset
|
80 const struct equipment *equipments[CHARACTER_EQUIPMENT_NUM]; |
192
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
81 const struct spell *spells[CHARACTER_SPELL_MAX]; |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
82 |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
83 void (*reset)(struct character *owner); |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
84 void (*exec)(struct character *owner, struct battle *bt); |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
85 }; |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
86 |
462
5729efd23286
core: core -> mlk_core
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
87 MLK_CORE_BEGIN_DECLS |
292
08ab73b32832
misc: add extern "C" {} blocks for C++ friends
David Demelier <markand@malikania.fr>
parents:
286
diff
changeset
|
88 |
298
196264679079
misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents:
292
diff
changeset
|
89 int |
281
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
90 character_ok(const struct character *ch); |
192
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
91 |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
92 const char * |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
93 character_status_string(enum character_status status); |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
94 |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
95 void |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
96 character_reset(struct character *ch); |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
97 |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
98 void |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
99 character_exec(struct character *ch, struct battle *bt); |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
100 |
298
196264679079
misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents:
292
diff
changeset
|
101 int |
281
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
102 character_save(const struct character *ch, struct save *s); |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
103 |
298
196264679079
misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents:
292
diff
changeset
|
104 int |
281
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
105 character_load(struct character *, struct save *); |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
106 |
462
5729efd23286
core: core -> mlk_core
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
107 MLK_CORE_END_DECLS |
292
08ab73b32832
misc: add extern "C" {} blocks for C++ friends
David Demelier <markand@malikania.fr>
parents:
286
diff
changeset
|
108 |
366
19782ea1cf4a
misc: start rebranding
David Demelier <markand@malikania.fr>
parents:
320
diff
changeset
|
109 #endif /* !MLK_RPG_CHARACTER_H */ |