/* * Empire - A multi-player, client/server Internet based war game. * Copyright (C) 1986-2014, Dave Pare, Jeff Bailey, Thomas Ruschak, * Ken Stevens, Steve McClure, Markus Armbruster * * Empire is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * --- * * See files README, COPYING and CREDITS in the root of the source * tree for related information and legal notices. It is expected * that future projects/authors will amend these files as needed. * * --- * * empobj.c: Common functions on struct empobj and * union empobj_storage * * Known contributors to this file: * Ron Koenderink, 2006 * Markus Armbruster, 2006-2008 */ #include #include "empobj.h" #include "file.h" #include "news.h" #include "optlist.h" #include "product.h" char * empobj_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 "The Beast"; } 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; } int empobj_in_use(int type, void *p) { switch (type) { case EF_SHIP: case EF_PLANE: case EF_LAND: case EF_NUKE: case EF_TRADE: case EF_COMM: case EF_LOST: return ((struct empobj *)p)->own != 0; case EF_NATION: case EF_COUNTRY: return ((struct natstr *)p)->nat_stat != STAT_UNUSED; case EF_NEWS: return ((struct nwsstr *)p)->nws_vrb != 0; case EF_LOAN: return ((struct lonstr *)p)->l_status != LS_FREE; case EF_REALM: return empobj_in_use(EF_NATION, ef_ptr(EF_NATION, ((struct realmstr *)p)->r_cnum)); case EF_PRODUCT: return ((struct pchrstr *)p)->p_sname[0]; case EF_SHIP_CHR: return ((struct mchrstr *)p)->m_name[0]; case EF_PLANE_CHR: return ((struct plchrstr *)p)->pl_name[0]; case EF_LAND_CHR: return ((struct lchrstr *)p)->l_name[0]; case EF_NUKE_CHR: return ((struct nchrstr *)p)->n_name[0]; case EF_NEWS_CHR: return ((struct rptstr *)p)->r_newspage != 0; default: return 1; } }