annotate libmlk-rpg/mlk/rpg/inventory.c @ 514:daf085bf8a8c

misc: fix build
author David Demelier <markand@malikania.fr>
date Sat, 04 Mar 2023 10:49:20 +0100
parents 773a082f0b91
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
286
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * inventory.c -- item inventory
3991779aaba9 adventure: initial test of spawn
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>
286
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #include <assert.h>
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 #include <stddef.h>
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 #include "inventory.h"
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
23
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 static struct inventory_slot *
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 find(struct inventory *iv, const struct item *item)
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 {
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 for (size_t i = 0; i < INVENTORY_ITEM_MAX; ++i)
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 if (iv->items[i].item == item)
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 return &iv->items[i];
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
30
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 return NULL;
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 }
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
33
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 290
diff changeset
34 int
286
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 inventory_add(struct inventory *iv, const struct item *item, unsigned int amount)
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 {
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 assert(iv);
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 assert(item);
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
39
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 struct inventory_slot *slot;
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
41
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 /* Find one existing, otherwise find one empty. */
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 if (!(slot = find(iv, item)))
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 slot = find(iv, NULL);
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
45
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 if (!slot)
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 290
diff changeset
47 return 0;
286
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
48
290
9948e288925b rpg: add support for items in battle
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
49 slot->item = item;
286
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 slot->amount += amount;
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
51
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 290
diff changeset
52 return -1;
286
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 }
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
54
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 void
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 inventory_consume(struct inventory *iv, const struct item *item, unsigned int amount)
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 {
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 assert(iv);
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 assert(item);
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
60
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 struct inventory_slot *slot;
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
62
290
9948e288925b rpg: add support for items in battle
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
63 if ((slot = find(iv, item))) {
286
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 slot->amount -= amount;
290
9948e288925b rpg: add support for items in battle
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
65
9948e288925b rpg: add support for items in battle
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
66 if (slot->amount == 0)
9948e288925b rpg: add support for items in battle
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
67 slot->item = NULL;
9948e288925b rpg: add support for items in battle
David Demelier <markand@malikania.fr>
parents: 286
diff changeset
68 }
286
3991779aaba9 adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 }