(get_empobj_chr): New. Get characteristics for empobj.
(mission, build_mission_list_type): Switch to use new
functions put_empobj() and get_empobj_chr().
};
extern char *obj_nameof(struct empobj *gp);
+extern int put_empobj(struct empobj *gp);
+extern void *get_empobj_chr(struct empobj *gp);
#endif
gp->mission = mission;
gp->opx = x;
gp->opy = y;
- switch (type) {
- case EF_SHIP:
- putship(gp->uid, &item.ship);
- break;
- case EF_LAND:
- putland(gp->uid, &item.land);
- break;
- case EF_PLANE:
- putplane(gp->uid, &item.plane);
- break;
- }
+ put_empobj(gp);
}
if (num == 0) {
pr("No %s%s\n", ef_nameof(type), splur(num));
CANT_HAPPEN("unsupported TYPE");
return "";
}
+
+
+int
+put_empobj(struct empobj *gp)
+{
+ switch (gp->ef_type)
+ {
+ case EF_SECTOR:
+ return ef_write(gp->ef_type, sctoff(gp->x, gp->y), gp);
+ case EF_NATION:
+ case EF_BMAP:
+ case EF_MAP:
+ return ef_write(gp->ef_type, gp->own, gp);
+ default:
+ return ef_write(gp->ef_type, gp->uid, gp);
+ }
+}
+
+void *
+get_empobj_chr(struct empobj *gp)
+{
+ void *cp;
+
+ switch (gp->ef_type) {
+ case EF_LAND:
+ cp = &lchr[(int)gp->type];
+ break;
+ case EF_SHIP:
+ cp = &mchr[(int)gp->type];
+ break;
+ case EF_PLANE:
+ cp = &plchr[(int)gp->type];
+ break;
+ case EF_NUKE:
+ cp = &nchr[(int)gp->type];
+ break;
+ case EF_SECTOR:
+ cp = &dchr[(int)gp->type];
+ break;
+ default:
+ CANT_HAPPEN("unsupported TYPE");
+ cp = NULL;
+ break;
+ }
+ return cp;
+}
glp = malloc(sizeof(struct genlist));
memset(glp, 0, sizeof(struct genlist));
glp->type = type;
- switch (type) {
- case EF_LAND:
- glp->cp = &lchr[(int)gp->type];
- break;
- case EF_SHIP:
- glp->cp = &mchr[(int)gp->type];
- break;
- case EF_PLANE:
- glp->cp = &plchr[(int)gp->type];
- break;
- }
+ glp->cp = get_empobj_chr(gp);
glp->thing = malloc(sizeof(item));
memcpy(glp->thing, &item, sizeof(item));
emp_insque(&glp->queue, &mi[gp->own].queue);