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
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
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 */