diff --git a/include/file.h b/include/file.h index 8eb29283..301a0ca7 100644 --- a/include/file.h +++ b/include/file.h @@ -124,6 +124,9 @@ struct empfile { #define EF_PLANE_CHR_FLAGS 26 #define EF_LAND_CHR_FLAGS 27 #define EF_NUKE_CHR_FLAGS 28 +#define EF_META 29 +#define EF_META_TYPE 30 +#define EF_META_FLAGS 31 struct fileinit { int ef_type; diff --git a/include/nsc.h b/include/nsc.h index a80b6327..f5efcd26 100644 --- a/include/nsc.h +++ b/include/nsc.h @@ -219,6 +219,9 @@ extern struct lookup ship_chr_flags[]; extern struct lookup plane_chr_flags[]; extern struct lookup land_chr_flags[]; extern struct lookup nuke_chr_flags[]; +extern struct castr mdchr_ca[]; +extern struct lookup meta_type[]; +extern struct lookup meta_flags[]; /* src/lib/subs/nstr.c */ extern int nstr_comp(struct nscstr *np, int len, int type, char *str); diff --git a/src/lib/global/file.c b/src/lib/global/file.c index f41a9878..e2a05331 100644 --- a/src/lib/global/file.c +++ b/src/lib/global/file.c @@ -152,6 +152,15 @@ struct empfile empfile[] = { {EF_NUKE_CHR_FLAGS, "nuke chr flags", NULL, EFF_CFG, sizeof(nuke_chr_flags[0]), NULL, NULL, NULL, -1, -1, 0, 0, (char *)nuke_chr_flags, 0, lookup_ca}, + {EF_META, "meta", NULL, EFF_CFG, + sizeof(mdchr_ca[0]), NULL, NULL, NULL, + -1, -1, 0, 0, (char *)mdchr_ca, 0, mdchr_ca}, + {EF_META_TYPE, "meta type", NULL, EFF_CFG, + sizeof(meta_type[0]), NULL, NULL, NULL, + -1, -1, 0, 0, (char *)meta_type, 0, lookup_ca}, + {EF_META_FLAGS, "meta flags", NULL, EFF_CFG, + sizeof(meta_flags[0]), NULL, NULL, NULL, + -1, -1, 0, 0, (char *)meta_flags, 0, lookup_ca}, /* Sentinel */ {EF_BAD, NULL, NULL, 0, diff --git a/src/lib/global/nsc.c b/src/lib/global/nsc.c index c58dfabb..814216cc 100644 --- a/src/lib/global/nsc.c +++ b/src/lib/global/nsc.c @@ -579,3 +579,35 @@ struct lookup nuke_chr_flags[] = { {0, 0} }; +struct castr mdchr_ca[] = { + {NSC_STRING, 0, 0, offsetof(struct castr, ca_name), "name", EF_BAD}, + {NSC_CHAR, 0, 0, offsetof(struct castr, ca_type), "type", EF_META_TYPE}, + {NSC_UCHAR, 0, 0, offsetof(struct castr, ca_flags), "flags", EF_META_FLAGS}, + {NSC_USHORT, 0, 0, offsetof(struct castr, ca_len), "len", EF_BAD}, + {NSC_INT, 0, 0, offsetof(struct castr, ca_table), "table", EF_BAD}, + {NSC_NOTYPE, 0, 0, 0, NULL, EF_BAD} +}; + +struct lookup meta_flags[] = { + {NSC_DEITY, "DEITY"}, + {NSC_EXTRA, "EXTRA"}, + {0, ""} +}; + +struct lookup meta_type[] = { + {NSC_LONG, "d"}, + {NSC_DOUBLE, "g"}, + {NSC_STRING, "s"}, + {NSC_TYPEID, "d"}, + {NSC_CHAR, "d"}, + {NSC_UCHAR, "d"}, + {NSC_SHORT, "d"}, + {NSC_USHORT, "d"}, + {NSC_INT, "d"}, + {NSC_XCOORD, "d"}, + {NSC_YCOORD, "d"}, + {NSC_TIME, "t"}, + {NSC_FLOAT, "g"}, + {NSC_STRINGY,"c"}, + {0 ,""} +};