static void saveg_write_ticcmd_t(ticcmd_t *str) { // signed char forwardmove; saveg_write8(str->forwardmove); // signed char sidemove; saveg_write8(str->sidemove); // short angleturn; saveg_write16(str->angleturn); // short consistancy; saveg_write16(str->consistancy); // byte chatchar; saveg_write8(str->chatchar); // byte buttons; saveg_write8(str->buttons); // byte buttons2; saveg_write8(str->buttons2); // [STRIFE] // int inventory; saveg_write32(str->inventory); // [STRIFE] }
void P_ArchiveMacros(void) { int i; saveg_write_pad(); // [kex] 12/26/11 - keep track of disabled macros for(i = 0; i < macros.macrocount; i++) { saveg_write8(macros.def[i].data[0].id == 0 ? 1 : 0); } if(!macro) { saveg_write8(0); return; } saveg_write8(1); saveg_write16(macroid); saveg_write16(macrocounter); saveg_write16(nextmacro - macro->data); saveg_write_mobjindex(mobjmacro); saveg_write16(taglistidx); for(i = 0; i < MAXQUEUELIST; i++) { saveg_write16(taglist[i]); } }
static void saveg_write_mapthing_t(mapthing_t *str) { saveg_write16(str->x); saveg_write16(str->y); saveg_write16(str->angle); saveg_write16(str->type); saveg_write16(str->options); }
static void saveg_write_ticcmd_t(ticcmd_t* cmd) { saveg_write8(cmd->forwardmove); saveg_write8(cmd->sidemove); saveg_write16(cmd->angleturn); saveg_write16(cmd->pitch); saveg_write8(cmd->consistancy); saveg_write8(cmd->chatchar); saveg_write8(cmd->buttons); saveg_write8(cmd->buttons2); }
static void saveg_write_floormove_t(floormove_t *str) { // thinker_t thinker; saveg_write_thinker_t(&str->thinker); // floor_e type; saveg_write_enum(str->type); // boolean crush; saveg_write32(str->crush); // sector_t* sector; saveg_write32(str->sector - sectors); // int direction; saveg_write32(str->direction); // int newspecial; saveg_write32(str->newspecial); // short texture; saveg_write16(str->texture); // fixed_t floordestheight; saveg_write32(str->floordestheight); // fixed_t speed; saveg_write32(str->speed); }
static void saveg_write_mapthing_t(mapthing_t *str) { // short x; saveg_write16(str->x); // short y; saveg_write16(str->y); // short angle; saveg_write16(str->angle); // short type; saveg_write16(str->type); // short options; saveg_write16(str->options); }
static void saveg_write_ticcmd_t(ticcmd_t *str) { saveg_write8(str->forwardmove); saveg_write8(str->sidemove); saveg_write16(str->angleturn); saveg_write8(str->buttons); saveg_write32(str->lookdir); }
static void saveg_write_floormove_t(floormove_t* floor) { saveg_write32(floor->type); saveg_write32(floor->crush); saveg_write32(floor->sector - sectors); saveg_write32(floor->direction); saveg_write32(floor->newspecial); saveg_write16(floor->texture); saveg_write32(floor->floordestheight); saveg_write32(floor->speed); saveg_write32(floor->instant); }
static void saveg_write_mapthing_t(mapthing_t* mt) { saveg_write16(mt->x); saveg_write16(mt->y); saveg_write16(mt->z); saveg_write16(mt->angle); saveg_write16(mt->type); saveg_write16(mt->options); saveg_write16(mt->tid); saveg_write_pad(); }
static void saveg_write_floormove_t(floormove_t *str) { saveg_write_enum(str->type); saveg_write_bool(str->crush); saveg_write32(str->sector->id); saveg_write32(str->direction); saveg_write32(str->newspecial); saveg_write16(str->texture); saveg_write32(str->floordestheight); saveg_write32(str->speed); saveg_write32(str->stopsound); }
static void saveg_write_ticcmd_t(ticcmd_t *str) { // signed char forwardmove; saveg_write8(str->forwardmove); // signed char sidemove; saveg_write8(str->sidemove); // short angleturn; saveg_write16(str->angleturn); // short consistancy; saveg_write16(str->consistancy); // byte chatchar; saveg_write8(str->chatchar); // byte buttons; saveg_write8(str->buttons); }
static void saveg_write_ceiling_t(ceiling_t *str) { saveg_write_enum(str->type); saveg_write32(str->sector->id); saveg_write32(str->bottomheight); saveg_write32(str->topheight); saveg_write32(str->speed); saveg_write32(str->oldspeed); saveg_write_bool(str->crush); saveg_write32(str->newspecial); saveg_write16(str->texture); saveg_write32(str->direction); saveg_write32(str->tag); saveg_write32(str->olddirection); }
// // P_ArchiveWorld // // haleyjd 09/28/10: [STRIFE] Minor modifications. // void P_ArchiveWorld (void) { int i; int j; sector_t* sec; line_t* li; side_t* si; // do sectors for (i=0, sec = sectors ; i<numsectors ; i++,sec++) { saveg_write16(sec->floorheight >> FRACBITS); saveg_write16(sec->ceilingheight >> FRACBITS); saveg_write16(sec->floorpic); //saveg_write16(sec->ceilingpic); [STRIFE] not saved. saveg_write16(sec->lightlevel); saveg_write16(sec->special); // needed? //saveg_write16(sec->tag); // needed? [STRIFE] not saved. } // do lines for (i=0, li = lines ; i<numlines ; i++,li++) { saveg_write16(li->flags); saveg_write16(li->special); //saveg_write16(li->tag); [STRIFE] not saved. for (j=0 ; j<2 ; j++) { if (li->sidenum[j] == -1) continue; si = &sides[li->sidenum[j]]; // [STRIFE] offsets not saved. //saveg_write16(si->textureoffset >> FRACBITS); //saveg_write16(si->rowoffset >> FRACBITS); saveg_write16(si->toptexture); saveg_write16(si->bottomtexture); saveg_write16(si->midtexture); } } }
static void saveg_write_mobj_t(mobj_t *str) { saveg_write32(str->x); saveg_write32(str->y); saveg_write32(str->z); saveg_write32(str->angle); saveg_write_enum(str->sprite); saveg_write32(str->frame); saveg_write32(str->floorz); saveg_write32(str->ceilingz); saveg_write32(str->dropoffz); saveg_write32(str->radius); saveg_write32(str->height); saveg_write32(str->momx); saveg_write32(str->momy); saveg_write32(str->momz); saveg_write_enum(str->type); saveg_write32(str->tics); saveg_write32((int)(str->state - states)); saveg_write32(str->flags); saveg_write32(str->flags2); saveg_write32(str->health); saveg_write32(str->movedir); saveg_write32(str->movecount); saveg_write32(P_ThingToIndex(str->target)); saveg_write32(str->reactiontime); saveg_write32(str->threshold); saveg_write_bool(!!str->player); saveg_write_mapthing_t(&str->spawnpoint); saveg_write32(P_ThingToIndex(str->tracer)); saveg_write32(P_ThingToIndex(str->lastenemy)); saveg_write32(str->floatbob); saveg_write32(str->shadowoffset); saveg_write16(str->gear); saveg_write32(str->bloodsplats); saveg_write32(str->blood); saveg_write32(str->interpolate); saveg_write32(str->oldx); saveg_write32(str->oldy); saveg_write32(str->oldz); saveg_write32(str->oldangle); saveg_write32(str->nudge); saveg_write32(str->pitch); saveg_write32(str->id); }
// // P_ArchiveWorld // void P_ArchiveWorld(void) { sector_t *sec = sectors; line_t *li = lines; // do sectors for (int i = 0; i < numsectors; i++, sec++) { saveg_write16(sec->floorheight >> FRACBITS); saveg_write16(sec->ceilingheight >> FRACBITS); saveg_write16(sec->floorpic); saveg_write16(sec->ceilingpic); saveg_write16(sec->lightlevel); saveg_write16(sec->special); saveg_write16(sec->tag); saveg_write32(P_ThingToIndex(sec->soundtarget)); } // do lines for (int i = 0; i < numlines; i++, li++) { saveg_write16(li->flags); saveg_write16(li->special); saveg_write16(li->tag); for (int j = 0; j < 2; j++) { side_t *si; if (li->sidenum[j] == NO_INDEX) continue; si = sides + li->sidenum[j]; saveg_write16(si->textureoffset >> FRACBITS); saveg_write16(si->rowoffset >> FRACBITS); saveg_write16(si->toptexture); saveg_write16(si->bottomtexture); saveg_write16(si->midtexture); saveg_write_bool(si->missingtoptexture); saveg_write_bool(si->missingbottomtexture); saveg_write_bool(si->missingmidtexture); } } }
static void saveg_write_player_t(player_t *str) { int i; // mobj_t* mo; saveg_writep(str->mo); // playerstate_t playerstate; saveg_write_enum(str->playerstate); // ticcmd_t cmd; saveg_write_ticcmd_t(&str->cmd); // fixed_t viewz; saveg_write32(str->viewz); // fixed_t viewheight; saveg_write32(str->viewheight); // fixed_t deltaviewheight; saveg_write32(str->deltaviewheight); // fixed_t bob; saveg_write32(str->bob); // int health; saveg_write32(str->health); // int armorpoints; saveg_write16(str->armorpoints); // [STRIFE] 32 -> 16 // int armortype; saveg_write16(str->armortype); // [STRIFE] 32 -> 16 // int powers[NUMPOWERS]; for (i=0; i<NUMPOWERS; ++i) { saveg_write32(str->powers[i]); } // int sigiltype; saveg_write32(str->sigiltype); // [STRIFE] // int nukagecount; saveg_write32(str->nukagecount); // [STRIFE] // int questflags; saveg_write32(str->questflags); // [STRIFE] // int pitch; saveg_write32(str->pitch); // [STRIFE] // int centerview; saveg_write32(str->centerview); // [STRIFE] // inventory_t inventory[NUMINVENTORY]; for(i = 0; i < NUMINVENTORY; ++i) // [STRIFE] { saveg_write_inventory_t(&str->inventory[i]); } // int st_update; saveg_write32(str->st_update); // [STRIFE] // short numinventory; saveg_write16(str->numinventory); // [STRIFE] // short inventorycursor; saveg_write16(str->inventorycursor); // [STRIFE] // short accuracy; saveg_write16(str->accuracy); // [STRIFE] // short stamina; saveg_write16(str->stamina); // [STRIFE] // boolean cards[NUMCARDS]; for (i=0; i<NUMCARDS; ++i) { saveg_write32(str->cards[i]); } // boolean backpack; saveg_write32(str->backpack); // int attackdown; saveg_write32(str->attackdown); // int usedown; saveg_write32(str->usedown); // int inventorydown; saveg_write32(str->inventorydown); // [STRIFE] // int frags[MAXPLAYERS]; for (i=0; i<MAXPLAYERS; ++i) { saveg_write32(str->frags[i]); } // weapontype_t readyweapon; saveg_write_enum(str->readyweapon); // weapontype_t pendingweapon; saveg_write_enum(str->pendingweapon); // boolean weaponowned[NUMWEAPONS]; for (i=0; i<NUMWEAPONS; ++i) { saveg_write32(str->weaponowned[i]); } // int ammo[NUMAMMO]; for (i=0; i<NUMAMMO; ++i) { saveg_write32(str->ammo[i]); } // int maxammo[NUMAMMO]; for (i=0; i<NUMAMMO; ++i) { saveg_write32(str->maxammo[i]); } // int cheats; saveg_write32(str->cheats); // int refire; saveg_write32(str->refire); // short killcount; saveg_write16(str->killcount); // [STRIFE] 32 -> 16 // haleyjd 08/30/10 [STRIFE] No itemcount // int itemcount; //saveg_write32(str->itemcount); // haleyjd 08/30/10 [STRIFE] No secretcount // int secretcount; //saveg_write32(str->secretcount); // char* message; saveg_writep(str->message); // int damagecount; saveg_write32(str->damagecount); // int bonuscount; saveg_write32(str->bonuscount); // mobj_t* attacker; saveg_writep(str->attacker); // int extralight; saveg_write32(str->extralight); // int fixedcolormap; saveg_write32(str->fixedcolormap); // int colormap; [STRIFE] no such field //saveg_write32(str->colormap); // short allegiance; saveg_write16(str->allegiance); // [STRIFE] // pspdef_t psprites[NUMPSPRITES]; for (i=0; i<NUMPSPRITES; ++i) { saveg_write_pspdef_t(&str->psprites[i]); } // int mapstate[40]; for(i = 0; i < 40; ++i) // [STRIFE] { saveg_write32(str->mapstate[i]); } // haleyjd 08/30/10: [STRIFE] No intermission, no secret. // boolean didsecret; //saveg_write32(str->didsecret); }
static void saveg_write_header(char *description) { int i; int size; char date[32]; byte* tbn; for(i = 0; description[i] != '\0'; i++) { saveg_write8(description[i]); } for(; i < SAVESTRINGSIZE; i++) { saveg_write8(0); } sprintf(date, "%s", saveg_gettime()); size = dstrlen(date); for(i = 0; i < size; i++) { saveg_write8(date[i]); } for(; i < 32; i++) { saveg_write8(0); } size = M_CacheThumbNail(&tbn); saveg_write32(size); for(i = 0; i < size; i++) { saveg_write8(tbn[i]); } Z_Free(tbn); for(i = 0; i < 16; i++) { saveg_write8(passwordData[i]); } saveg_write8(gameskill); saveg_write8(gamemap); saveg_write8(nextmap); saveg_write_pad(); saveg_write16(globalint); // // [kex] 12/26/11 - write total stat info // saveg_write_pad(); saveg_write32(totalkills); saveg_write32(totalitems); saveg_write32(totalsecret); for(i = 0; i < MAXPLAYERS; i++) { saveg_write8(playeringame[i]); } saveg_write8((leveltime >> 16) & 0xff); saveg_write8((leveltime >> 8) & 0xff); saveg_write8(leveltime & 0xff); saveg_write_pad(); }
// // P_ArchiveWorld // void P_ArchiveWorld(void) { int i; int j; sector_t *sec; line_t *li; side_t *si; light_t *light; // do sectors for(i = 0, sec = sectors; i < numsectors; i++, sec++) { saveg_write16(F2INT(sec->floorheight)); saveg_write16(F2INT(sec->ceilingheight)); saveg_write16(sec->floorpic); saveg_write16(sec->ceilingpic); saveg_write16(sec->special); saveg_write16(sec->tag); saveg_write16(sec->flags); saveg_write16(sec->lightlevel); saveg_write32(sec->xoffset); saveg_write32(sec->yoffset); saveg_write_mobjindex(sec->soundtarget); for(j = 0; j < 5; j++) { saveg_write16(sec->colors[j]); } } // do lines for(i = 0, li = lines; i < numlines; i++, li++) { saveg_write16((li->flags >> 16)); saveg_write16((li->flags & 0xFFFF)); saveg_write16(li->special); saveg_write16(li->tag); for(j = 0; j < 2; j++) { if(li->sidenum[j] == NO_SIDE_INDEX) { continue; } si = &sides[li->sidenum[j]]; saveg_write16(F2INT(si->textureoffset)); saveg_write16(F2INT(si->rowoffset)); saveg_write16(si->toptexture); saveg_write16(si->bottomtexture); saveg_write16(si->midtexture); } } // do lights for(i = 0, light = lights; i < numlights; i++, light++) { saveg_write8(light->base_r); saveg_write8(light->base_g); saveg_write8(light->base_b); saveg_write8(light->active_r); saveg_write8(light->active_g); saveg_write8(light->active_b); saveg_write8(light->r); saveg_write8(light->g); saveg_write8(light->b); saveg_write_pad(); saveg_write16(light->tag); } }