annotate libmlk-rpg/rpg/character.h @ 286:3991779aaba9

adventure: initial test of spawn
author David Demelier <markand@malikania.fr>
date Wed, 23 Dec 2020 15:37:48 +0100
parents 87b8c7510717
children 08ab73b32832
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 *
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2020 David Demelier <markand@malikania.fr>
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
243
71b3b7036de7 misc: lot of cleanups,
David Demelier <markand@malikania.fr>
parents: 235
diff changeset
19 #ifndef MOLKO_RPG_CHARACTER_H
71b3b7036de7 misc: lot of cleanups,
David Demelier <markand@malikania.fr>
parents: 235
diff changeset
20 #define MOLKO_RPG_CHARACTER_H
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 #include <stdbool.h>
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
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;
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 struct sprite;
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
86b71e1f9dd5 rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents: 192
diff changeset
79 struct 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
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 bool
281
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
88 character_ok(const struct character *ch);
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
89
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 const char *
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 character_status_string(enum character_status status);
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
92
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 void
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 character_reset(struct character *ch);
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
95
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 void
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 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
98
281
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
99 bool
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
100 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
101
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
102 bool
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
103 character_load(struct character *, struct save *);
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
104
243
71b3b7036de7 misc: lot of cleanups,
David Demelier <markand@malikania.fr>
parents: 235
diff changeset
105 #endif /* !MOLKO_RPG_CHARACTER_H */