]> git.pond.sub.org Git - empserver/commitdiff
(put_empobj): New. Put generic empobj into the appropriate data file.
authorRon Koenderink <rkoenderink@yahoo.ca>
Thu, 20 Jul 2006 14:12:35 +0000 (14:12 +0000)
committerRon Koenderink <rkoenderink@yahoo.ca>
Thu, 20 Jul 2006 14:12:35 +0000 (14:12 +0000)
(get_empobj_chr): New.  Get characteristics for empobj.
(mission, build_mission_list_type): Switch to use new
functions put_empobj() and get_empobj_chr().

include/empobj.h
src/lib/commands/miss.c
src/lib/common/empobj.c
src/lib/subs/mission.c

index 65b7a6152fcbfb20e8293650e19cfdc6d09f63b2..4c6825700c800b61dbafd226bbaaa48b40a96bd9 100644 (file)
@@ -85,5 +85,7 @@ union empobj_storage {
 };
 
 extern char *obj_nameof(struct empobj *gp);
+extern int put_empobj(struct empobj *gp);
+extern void *get_empobj_chr(struct empobj *gp);
 
 #endif
index 88167b52966e4fb8568c0f52496d0d923e2e4768..2e5f723b522a0f35d1884ddd4bf5167362bc10b4 100644 (file)
@@ -333,17 +333,7 @@ mission(void)
        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));
index 4199a473675dae616c344f04b9662cc7ea26c357..5122d13b02f64739018320c9fd5e9e50f0a8dda1 100644 (file)
@@ -55,3 +55,49 @@ obj_nameof(struct empobj *gp)
     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;
+}
index 4c733d3dacf49d0a286df0a2bd611ecd2f9dff75..55c878851468dd2800e4729e28eac8e41ffdd1fa 100644 (file)
@@ -362,17 +362,7 @@ build_mission_list_type(struct genlist *mi, coord x, coord y, int mission,
        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);