Exemplo n.º 1
0
void write_allies(gamedata * data, const allies *alist)
{
    const allies *al;
    for (al = alist; al; al = al->next) {
        int i;
        for (i = 0; i != al->num; ++i) {
            const faction * f = al->factions[i];
            if (f && f->_alive) {
                write_faction_reference(f, data->store);
                assert(al->status[i] > 0);
                WRITE_INT(data->store, al->status[i]);
            }
        }
    }
    write_faction_reference(NULL, data->store);
}
Exemplo n.º 2
0
static void createunit_write(const trigger * t, struct storage *store)
{
    createunit_data *td = (createunit_data *)t->data.v;
    write_faction_reference(td->f, store);
    write_region_reference(td->r, store);
    write_race_reference(td->race, store);
    WRITE_INT(store, td->number);
}
Exemplo n.º 3
0
void write_groups(struct storage *store, const faction * f)
{
    group *g;
    for (g = f->groups; g; g = g->next) {
        ally *a;
        WRITE_INT(store, g->gid);
        WRITE_STR(store, g->name);
        for (a = g->allies; a; a = a->next) {
            if (a->faction) {
                write_faction_reference(a->faction, store);
                WRITE_INT(store, a->status);
            }
        }
        WRITE_INT(store, 0);
        a_write(store, g->attribs, g);
        WRITE_SECTION(store);
    }
    WRITE_INT(store, 0);
}
Exemplo n.º 4
0
static void
object_write(const attrib * a, const void *owner, struct storage *store)
{
  const object_data *data = (object_data *) a->data.v;
  int type = (int)data->type;
  WRITE_TOK(store, data->name);
  WRITE_INT(store, type);
  switch (data->type) {
    case TINTEGER:
      WRITE_INT(store, data->data.i);
      break;
    case TREAL:
      WRITE_FLT(store, (float)data->data.real);
      break;
    case TSTRING:
      WRITE_STR(store, data->data.str);
      break;
    case TUNIT:
      write_unit_reference(data->data.u, store);
      break;
    case TFACTION:
      write_faction_reference(data->data.f, store);
      break;
    case TBUILDING:
      write_building_reference(data->data.b, store);
      break;
    case TSHIP:
      /* write_ship_reference(data->data.sh, store); */
      assert(!"not implemented");
      break;
    case TREGION:
      write_region_reference(data->data.r, store);
      break;
    case TNONE:
      break;
    default:
      assert(!"illegal type in object-attribute");
  }
}