Fix put_empobj() for types other than units
authorMarkus Armbruster <armbru@pond.sub.org>
Sat, 23 Feb 2008 06:48:32 +0000 (07:48 +0100)
committerMarkus Armbruster <armbru@pond.sub.org>
Mon, 25 Feb 2008 20:50:25 +0000 (21:50 +0100)
put_empobj() used struct empobj member uid, which is valid only for
units.  Existing users pass only units, fortunately.  Fix by making it
take type and uid parameters.

include/empobj.h
src/lib/commands/miss.c
src/lib/subs/empobj.c
src/lib/subs/unitsub.c

index 59df1367f42b0100fab53f4502eb1d46ababc2b8..364f8e6600642953901688d79e3489e20b0fe6cd 100644 (file)
@@ -91,7 +91,7 @@ struct empobj_chr;
 
 extern char *obj_nameof(struct empobj *gp);
 extern struct empobj *get_empobjp(int type, int id);
-extern int put_empobj(struct empobj *gp);
+extern int put_empobj(int, int, struct empobj *gp);
 extern struct empobj_chr *get_empobj_chr(struct empobj *gp);
 extern char *emp_obj_chr_name(struct empobj *gp);
 extern int get_empobj_mob_max(int type);
index b60ff783a1c208fc31fd4c7b891b37efe657e229..d859d564f1f1800428e6087950be5fbaca5507a9 100644 (file)
@@ -321,7 +321,7 @@ mission(void)
        gp->mission = mission;
        gp->opx = x;
        gp->opy = y;
-       put_empobj(gp);
+       put_empobj(type, gp->uid, gp);
     }
     if (num == 0) {
        pr("No %s%s\n", ef_nameof(type), splur(num));
index 35a18d07f5902c9e3202c88ee9a75713e88873f0..2a1cca6b88b56da8a94c11fa0b0548c31ec2f0ea 100644 (file)
@@ -66,19 +66,9 @@ get_empobjp(int type, int id)
 }
 
 int
-put_empobj(struct empobj *gp)
+put_empobj(int type, int id, 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);
-    }
+    return ef_write(type, id, gp);
 }
 
 struct empobj_chr *
index ebc341c573449e42b9591f5f10b5339cc699b70c..bc13c745a6a33785ad69a8282f14077df0a0cce6 100644 (file)
@@ -118,7 +118,7 @@ unit_put(struct emp_qelem *list, natid actor)
        }
        if (ulp->unit.ef_type == EF_SHIP)
            ulp->unit.ship.shp_mobil = (int)ulp->mobil;
-       put_empobj(&ulp->unit.gen);
+       put_empobj(ulp->unit.gen.ef_type, ulp->unit.gen.uid, &ulp->unit.gen);
        newqp = qp->q_back;
        emp_remque(qp);
        free(qp);