]> git.pond.sub.org Git - empserver/blobdiff - src/lib/common/empobj.c
Update copyright notice
[empserver] / src / lib / common / empobj.c
index 4199a473675dae616c344f04b9662cc7ea26c357..35a18d07f5902c9e3202c88ee9a75713e88873f0 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  Empire - A multi-player, client/server Internet based war game.
- *  Copyright (C) 1986-2006, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ *  Copyright (C) 1986-2008, Dave Pare, Jeff Bailey, Thomas Ruschak,
  *                           Ken Stevens, Steve McClure
  *
  *  This program is free software; you can redistribute it and/or modify
@@ -37,6 +37,7 @@
 
 #include "empobj.h"
 #include "file.h"
+#include "optlist.h"
 #include "prototypes.h"
 
 char *
@@ -52,6 +53,85 @@ obj_nameof(struct empobj *gp)
     case EF_NUKE:
        return prnuke((struct nukstr *)gp);
     }
-    CANT_HAPPEN("unsupported TYPE");
-    return "";
+    CANT_REACH();
+    return "The Beast #666";
+}
+
+struct empobj *
+get_empobjp(int type, int id)
+{
+    if (CANT_HAPPEN(type == EF_SECTOR || type == EF_BAD))
+       return NULL;
+    return ef_ptr(type, id);
+}
+
+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);
+    }
+}
+
+struct empobj_chr *
+get_empobj_chr(struct empobj *gp)
+{
+    switch (gp->ef_type) {
+    case EF_LAND:
+       return (struct empobj_chr *)&lchr[(int)gp->type];
+    case EF_SHIP:
+       return (struct empobj_chr *)&mchr[(int)gp->type];
+    case EF_PLANE:
+       return (struct empobj_chr *)&plchr[(int)gp->type];
+    case EF_NUKE:
+       return (struct empobj_chr *)&nchr[(int)gp->type];
+    case EF_SECTOR:
+       return (struct empobj_chr *)&dchr[(int)gp->type];
+    }
+    CANT_REACH();
+    return NULL;
+}
+
+char *
+emp_obj_chr_name(struct empobj *gp)
+{
+    switch (gp->ef_type) {
+    case EF_LAND:
+       return lchr[(int)gp->type].l_name;
+    case EF_SHIP:
+       return mchr[(int)gp->type].m_name;
+    case EF_PLANE:
+       return plchr[(int)gp->type].pl_name;
+    case EF_NUKE:
+       return nchr[(int)gp->type].n_name;
+    case EF_SECTOR:
+       return dchr[(int)gp->type].d_name;
+    }
+    CANT_REACH();
+    return NULL;
+}
+
+int
+get_empobj_mob_max(int type)
+{
+    switch (type) {
+    case EF_SHIP:
+       return ship_mob_max;
+    case EF_LAND:
+       return land_mob_max;
+    case EF_PLANE:
+       return plane_mob_max;
+    case EF_SECTOR:
+       return sect_mob_max;
+    }
+    CANT_REACH();
+    return -1;
 }