home · contact · privacy
Support different kinds of monsters and items defined in map object definition struct...
[plomrogue] / src / map_objects.h
1 #ifndef MAP_OBJECTS_H
2 #define MAP_OBJECTS_H
3
4 #include <stdio.h>
5 #include "yx_uint16.h"
6
7 struct World;
8 struct Map;
9
10 struct Player {
11   struct yx_uint16 pos;
12   unsigned char hitpoints; };
13
14 struct MapObj {
15   void * next;
16   char type;
17   struct yx_uint16 pos; };
18
19 struct MapObjDef {
20   struct MapObjDef * next;
21   char id;
22   char mapchar;
23   char * desc; };
24
25 struct Item {
26   struct MapObj map_obj; };
27
28 struct Monster {
29   struct MapObj map_obj;
30   unsigned char hitpoints; };
31
32 struct ItemDef {
33   struct MapObjDef map_obj_def; };
34
35 struct MonsterDef {
36   struct MapObjDef map_obj_def;
37   unsigned char hitpoints_start; };
38
39 extern void readwrite_map_objects_dummy (void *, FILE *);
40 extern void write_map_objects_monsterdata (void *, FILE *);
41 extern void write_map_objects (void * start, FILE *, void (*) (void *, FILE *) );
42 extern void read_map_objects_monsterdata (void *, FILE *);
43 extern void read_map_objects (void *, FILE *, size_t, void (*) (void *, FILE *) );
44 extern void build_map_objects_monsterdata (struct MapObjDef *, void *);
45 extern void build_map_objects_itemdata (struct MapObjDef *, void *);
46 extern void * build_map_objects (struct World *, void *, char, unsigned char, size_t,
47                                  void (*) (struct MapObjDef *, void *));
48 extern struct MapObjDef * get_map_obj_def (struct World *, char);
49
50 extern struct yx_uint16 find_passable_pos (struct Map *);
51 extern char is_passable (struct Map *, struct yx_uint16);
52 extern void move_monster (struct World *, struct Monster *);
53 extern void move_player (struct World *, char);
54 extern void player_wait(struct World *);
55
56 #endif