home · contact · privacy
Added primitive inventory system. Any objects may now own/contain/carry other objects.
[plomrogue] / src / map_object_actions.h
1 /* map_object_actions.h
2  *
3  * Routines for the actions available to map objects.
4  */
5
6 #ifndef MAP_OBJECT_ACTIONS_H
7 #define MAP_OBJECT_ACTIONS_H
8
9
10
11 #include "yx_uint16.h" /* for yx_uint16 coordinates */
12 struct World;
13 struct Map;
14 struct MapObj;
15
16
17
18 /* Try to move "actor" one step in direction "d" and handle the consequences:
19  * either the move succeeds, or another actor is encountered and hit (which leads
20  * to its lifepoint decreasing by one and potentially its death), or the target
21  * square is not passable and the move fails.
22  */
23 extern uint8_t move_actor(struct World * world, struct MapObj * actor,
24                           enum dir d);
25
26
27
28 /* Wrapper for using move_actor() on the MapObj representing the player; updates
29  * the game log with appropriate messages on the move attempt and its results;
30  * turns over to turn_over() when finished.
31  */
32 extern void move_player(struct World * world, enum dir d);
33
34
35
36 /* Make player wait one turn, i.e. only update_log with a "you wait" message
37  * and turn control over to the enemy.
38  */
39 extern void player_wait(struct World * world);
40
41
42
43 /* Check if coordinate pos on (or beyond) map is accessible to map object
44  * movement.
45  */
46 extern char is_passable(struct Map * map, struct yx_uint16 pos);
47
48
49
50 /* Make player drop to ground map ojbect indexed by world.inventory_select. */
51 extern void player_drop(struct World * world);
52
53 /* Make player pick up map object from ground. */
54 extern void player_pick(struct World * world);
55
56
57
58 #endif