]> git.pond.sub.org Git - empserver/blobdiff - src/lib/global/nsc.c
Clean up initialization of nat_ca[]
[empserver] / src / lib / global / nsc.c
index 77ff582866f6c93ca52484a40e3c60afe8ebc21e..a088976323d4d48761d67e75b85754725e20315f 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  Empire - A multi-player, client/server Internet based war game.
- *  Copyright (C) 1986-2007, 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
@@ -28,7 +28,7 @@
  *  nsc.c: Empire selection global structures
  * 
  *  Known contributors to this file:
- *     Markus Armbruster, 2004-2006
+ *     Markus Armbruster, 2004-2007
  */
 
 /*
@@ -105,6 +105,7 @@ struct castr pchr_ca[] = {
 struct castr sect_ca[] = {
     /* uid is encoded in x, y */
     {NSC_NATID, 0, 0, fldoff(sctstr, sct_own), "owner", EF_NATION},
+    {NSC_SHORT, NSC_DEITY, 0, fldoff(sctstr, sct_elev), "elev", EF_BAD},
     {NSC_XCOORD, NSC_CONST, 0, fldoff(sctstr, sct_x), "xloc", EF_BAD},
     {NSC_YCOORD, NSC_CONST, 0, fldoff(sctstr, sct_y), "yloc", EF_BAD},
     {NSC_UCHAR, 0, 0, fldoff(sctstr, sct_type), "des", EF_SECTOR_CHR},
@@ -142,7 +143,7 @@ struct castr sect_ca[] = {
     {NSC_NATID, NSC_DEITY, 0, fldoff(sctstr, sct_che_target), "che_target",
      EF_NATION},
     {NSC_USHORT, 0, 0, fldoff(sctstr, sct_fallout), "fallout", EF_BAD},
-    {NSC_TIME, 0, 0, fldoff(sctstr, sct_access), "access", EF_BAD},
+    {NSC_SHORT, 0, 0, fldoff(sctstr, sct_access), "access", EF_BAD},
     {NSC_UCHAR, 0, 0, fldoff(sctstr, sct_road), "road", EF_BAD},
     {NSC_UCHAR, 0, 0, fldoff(sctstr, sct_rail), "rail", EF_BAD},
     {NSC_UCHAR, 0, 0, fldoff(sctstr, sct_defense), "dfense", EF_BAD},
@@ -211,7 +212,7 @@ struct castr ship_ca[] = {
     {NSC_SHORT, NSC_DEITY, 0, fldoff(shpstr, shp_pstage), "pstage",
      EF_PLAGUE_STAGES},
     {NSC_SHORT, NSC_DEITY, 0, fldoff(shpstr, shp_ptime), "ptime", EF_BAD},
-    {NSC_TIME, 0, 0, fldoff(shpstr, shp_access), "access", EF_BAD},
+    {NSC_SHORT, 0, 0, fldoff(shpstr, shp_access), "access", EF_BAD},
     {NSC_TIME, NSC_EXTRA, 0, fldoff(shpstr, shp_timestamp), "timestamp",
      EF_BAD},
     {NSC_UCHAR, 0, 0, fldoff(shpstr, shp_mobquota), "mquota", EF_BAD},
@@ -271,7 +272,7 @@ struct castr plane_ca[] = {
     {NSC_CHAR, 0, 0, fldoff(plnstr, pln_nuketype), "nuketype", EF_BAD},
     {NSC_CHAR, NSC_BITS, 0, fldoff(plnstr, pln_flags), "flags",
      EF_PLANE_FLAGS},
-    {NSC_TIME, 0, 0, fldoff(plnstr, pln_access), "access", EF_BAD},
+    {NSC_SHORT, 0, 0, fldoff(plnstr, pln_access), "access", EF_BAD},
     {NSC_TIME, NSC_EXTRA, 0, fldoff(plnstr, pln_timestamp), "timestamp",
      EF_BAD},
     {NSC_FLOAT, 0, 0, fldoff(plnstr, pln_theta), "theta", EF_BAD},
@@ -316,7 +317,7 @@ struct castr land_ca[] = {
     {NSC_SHORT, NSC_DEITY, 0, fldoff(lndstr, lnd_ptime), "ptime", EF_BAD},
     {NSC_SHORT, 0, 0, fldoff(lndstr, lnd_land), "land", EF_BAD},
     {NSC_UCHAR, NSC_EXTRA, 0, fldoff(lndstr, lnd_nland), "nland", EF_BAD},
-    {NSC_TIME, 0, 0, fldoff(lndstr, lnd_access), "access", EF_BAD},
+    {NSC_SHORT, 0, 0, fldoff(lndstr, lnd_access), "access", EF_BAD},
     {NSC_FLOAT, NSC_EXTRA, 0, fldoff(lndstr, lnd_att), "att", EF_BAD},
     {NSC_FLOAT, NSC_EXTRA, 0, fldoff(lndstr, lnd_def), "def", EF_BAD},
     {NSC_INT, NSC_EXTRA, 0, fldoff(lndstr, lnd_vul), "vul", EF_BAD},
@@ -505,6 +506,7 @@ struct castr cou_ca[] = {
     {NSC_USHORT, 0, 0, fldoff(natstr, nat_ann), "ann", EF_BAD},
     {NSC_USHORT, 0, 0, fldoff(natstr, nat_minused), "minused", EF_BAD},
     {NSC_SHORT, 0, 0, fldoff(natstr, nat_btu), "btu", EF_BAD},
+    {NSC_SHORT, 0, 0, fldoff(natstr, nat_access), "access", EF_BAD},
     {NSC_LONG, 0, 0, fldoff(natstr, nat_reserve), "milreserve", EF_BAD},
     {NSC_LONG, 0, 0, fldoff(natstr, nat_money), "money", EF_BAD},
     {NSC_TIME, 0, 0, fldoff(natstr, nat_last_login), "login", EF_BAD},
@@ -524,14 +526,13 @@ struct castr cou_ca[] = {
      "contacts", EF_BAD},
     {NSC_UCHAR, NSC_EXTRA | NSC_BITS, MAXNOC, fldoff(natstr, nat_rejects),
      "rejects", EF_NATION_REJECTS},
-    /* FIXME nat_priorities[] */
     {NSC_LONG, NSC_BITS, 0, fldoff(natstr, nat_flags), "flags",
      EF_NATION_FLAGS},
     {NSC_NOTYPE, 0, 0, 0, NULL, EF_BAD}
 };
 
 struct castr nat_ca[sizeof(cou_ca) / sizeof(*cou_ca)];
-/* initialized in ef_init_srv() */
+/* initialized by nsc_init() */
 
 struct castr realm_ca[] = {
     /* uid is encoded in cnum, realm */
@@ -545,6 +546,9 @@ struct castr realm_ca[] = {
 };
 
 struct castr game_ca[] = {
+    /* no need for uid */
+    {NSC_CHAR, 0, 0, offsetof(struct gamestr, game_upd_disable),
+     "upd_disable", EF_BAD},
     {NSC_SHORT, 0, 0, offsetof(struct gamestr, game_turn), "turn", EF_BAD},
     {NSC_SHORT, NSC_DEITY, 0, offsetof(struct gamestr, game_tick), "tick",
      EF_BAD},
@@ -575,6 +579,11 @@ struct castr rpt_ca[] = {
     {NSC_NOTYPE, 0, 0, 0, NULL, EF_BAD}
 };
 
+struct castr update_ca[] = {
+    {NSC_TIME, 0, 0, 0, "time", EF_BAD},
+    {NSC_NOTYPE, 0, 0, 0, NULL, EF_BAD}
+};
+
 struct castr empfile_ca[] = {
     {NSC_INT, 0, 0, offsetof(struct empfile, uid), "uid", EF_TABLE},
     {NSC_STRING, NSC_CONST, 0, offsetof(struct empfile, name), "name", EF_BAD},
@@ -590,6 +599,7 @@ struct castr symbol_ca[] = {
     {NSC_STRING, NSC_CONST, 0, offsetof(struct symbol, name), "name", EF_BAD},
     {NSC_NOTYPE, 0, 0, 0, NULL, EF_BAD}
 };
+
 struct castr mdchr_ca[] = {
     /* no need for uid */
     /* name must come first, clients may rely on it */
@@ -605,3 +615,21 @@ struct castr mdchr_ca[] = {
      EF_BAD},
     {NSC_NOTYPE, 0, 0, 0, NULL, EF_BAD}
 };
+
+void
+nsc_init(void)
+{
+    int i;
+    unsigned flags;
+
+    for (i = 0; cou_ca[i].ca_name; i++) {
+       nat_ca[i] = cou_ca[i];
+       flags = nat_ca[i].ca_flags;
+       if (flags & NSC_EXTRA)
+           flags &= ~NSC_EXTRA;
+       else if (i != 0)
+           flags |= NSC_DEITY;
+       nat_ca[i].ca_flags = flags;
+    }
+    nat_ca[i] = cou_ca[i];
+}