Mercurial > molko
annotate libmlk-rpg/mlk/rpg/character.h @ 629:fee7bd30725c
rpg: cleanup tileset-loader-file
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sat, 26 Aug 2023 16:09:35 +0200 |
parents | 6e8f6640e05b |
children |
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 |
281
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
22 #define CHARACTER_SPELL_MAX (64) |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
23 |
192
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 struct battle; |
281
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
25 struct save; |
468
91ce23a36143
core: sprite -> mlk_sprite
David Demelier <markand@malikania.fr>
parents:
462
diff
changeset
|
26 struct mlk_sprite; |
192
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 struct spell; |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
28 |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 enum character_status { |
281
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
30 CHARACTER_STATUS_NORMAL, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
31 CHARACTER_STATUS_POISON = (1 << 0) |
192
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 }; |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 |
230
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
192
diff
changeset
|
34 enum character_sprite { |
281
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
35 CHARACTER_SPRITE_AXE, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
36 CHARACTER_SPRITE_BOW, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
37 CHARACTER_SPRITE_CROSSBOW, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
38 CHARACTER_SPRITE_DAGGER, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
39 CHARACTER_SPRITE_HAMMER, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
40 CHARACTER_SPRITE_NORMAL, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
41 CHARACTER_SPRITE_SPIKE, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
42 CHARACTER_SPRITE_SWORD, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
43 CHARACTER_SPRITE_WAND, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
44 CHARACTER_SPRITE_NUM |
235
fb304a94a05c
rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents:
230
diff
changeset
|
45 }; |
fb304a94a05c
rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents:
230
diff
changeset
|
46 |
281
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
47 enum character_equipment { |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
48 CHARACTER_EQUIPMENT_GLOVES, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
49 CHARACTER_EQUIPMENT_HELMET, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
50 CHARACTER_EQUIPMENT_SHIELD, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
51 CHARACTER_EQUIPMENT_TOP, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
52 CHARACTER_EQUIPMENT_TROUSERS, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
53 CHARACTER_EQUIPMENT_WEAPON, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
54 CHARACTER_EQUIPMENT_NUM |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
55 }; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
56 |
192
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
57 struct character { |
281
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
58 const char *name; |
286
3991779aaba9
adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
281
diff
changeset
|
59 enum character_status status; |
281
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
60 unsigned int level; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
61 int hp; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
62 unsigned int hpmax; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
63 unsigned int hpbonus; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
64 int mp; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
65 unsigned int mpmax; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
66 unsigned int mpbonus; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
67 int atk; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
68 unsigned int atkbonus; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
69 int def; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
70 unsigned int defbonus; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
71 int agt; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
72 unsigned int agtbonus; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
73 int luck; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
74 unsigned int luckbonus; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
75 unsigned int team_order; |
230
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
192
diff
changeset
|
76 |
468
91ce23a36143
core: sprite -> mlk_sprite
David Demelier <markand@malikania.fr>
parents:
462
diff
changeset
|
77 struct mlk_sprite *sprites[CHARACTER_SPRITE_NUM]; |
235
fb304a94a05c
rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents:
230
diff
changeset
|
78 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
|
79 const struct spell *spells[CHARACTER_SPELL_MAX]; |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
80 |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
81 void (*reset)(struct character *owner); |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
82 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
|
83 }; |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
84 |
517
6e8f6640e05b
misc: use extern C manually
David Demelier <markand@malikania.fr>
parents:
468
diff
changeset
|
85 #if defined(__cplusplus) |
6e8f6640e05b
misc: use extern C manually
David Demelier <markand@malikania.fr>
parents:
468
diff
changeset
|
86 extern "C" { |
6e8f6640e05b
misc: use extern C manually
David Demelier <markand@malikania.fr>
parents:
468
diff
changeset
|
87 #endif |
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 |
517
6e8f6640e05b
misc: use extern C manually
David Demelier <markand@malikania.fr>
parents:
468
diff
changeset
|
107 #if defined(__cplusplus) |
6e8f6640e05b
misc: use extern C manually
David Demelier <markand@malikania.fr>
parents:
468
diff
changeset
|
108 } |
6e8f6640e05b
misc: use extern C manually
David Demelier <markand@malikania.fr>
parents:
468
diff
changeset
|
109 #endif |
292
08ab73b32832
misc: add extern "C" {} blocks for C++ friends
David Demelier <markand@malikania.fr>
parents:
286
diff
changeset
|
110 |
366
19782ea1cf4a
misc: start rebranding
David Demelier <markand@malikania.fr>
parents:
320
diff
changeset
|
111 #endif /* !MLK_RPG_CHARACTER_H */ |