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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 */