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); }
static void saveg_write_mobj_t(mobj_t* mo) { saveg_write32(mo->x); saveg_write32(mo->y); saveg_write32(mo->z); saveg_write32(mo->tid); saveg_write_mobjindex(mo->snext); saveg_write_mobjindex(mo->sprev); saveg_write32(mo->angle); saveg_write32(mo->pitch); saveg_write32(mo->sprite); saveg_write32(mo->frame); saveg_write_mobjindex(mo->bnext); saveg_write_mobjindex(mo->bprev); saveg_write32(mo->subsector - subsectors); saveg_write32(mo->floorz); saveg_write32(mo->ceilingz); saveg_write32(mo->radius); saveg_write32(mo->height); saveg_write32(mo->momx); saveg_write32(mo->momy); saveg_write32(mo->momz); saveg_write32(mo->validcount); saveg_write32(mo->state - states); saveg_write32(mo->type); saveg_write32(mo->tics); saveg_write32(mo->flags); saveg_write32(mo->health); saveg_write32(mo->alpha); saveg_write32(mo->blockflag); saveg_write32(mo->movedir); saveg_write32(mo->movecount); saveg_write_mobjindex(mo->target); saveg_write32(mo->reactiontime); saveg_write32(mo->threshold); saveg_write32(mo->player ? mo->player - players + 1 : 0); saveg_write_mapthing_t(&mo->spawnpoint); saveg_write_mobjindex(mo->tracer); saveg_write32(mo->frame_x); saveg_write32(mo->frame_y); saveg_write32(mo->frame_z); saveg_write32(mo->mobjfunc == P_RespawnSpecials ? 1 : 0); }
static void saveg_write_mobj_t(mobj_t *str) { // thinker_t thinker; saveg_write_thinker_t(&str->thinker); // fixed_t x; saveg_write32(str->x); // fixed_t y; saveg_write32(str->y); // fixed_t z; saveg_write32(str->z); // struct mobj_s* snext; saveg_writep(str->snext); // struct mobj_s* sprev; saveg_writep(str->sprev); // angle_t angle; saveg_write32(str->angle); // spritenum_t sprite; saveg_write_enum(str->sprite); // int frame; saveg_write32(str->frame); // struct mobj_s* bnext; saveg_writep(str->bnext); // struct mobj_s* bprev; saveg_writep(str->bprev); // struct subsector_s* subsector; saveg_writep(str->subsector); // fixed_t floorz; saveg_write32(str->floorz); // fixed_t ceilingz; saveg_write32(str->ceilingz); // fixed_t radius; saveg_write32(str->radius); // fixed_t height; saveg_write32(str->height); // fixed_t momx; saveg_write32(str->momx); // fixed_t momy; saveg_write32(str->momy); // fixed_t momz; saveg_write32(str->momz); // int validcount; saveg_write32(str->validcount); // mobjtype_t type; saveg_write_enum(str->type); // mobjinfo_t* info; saveg_writep(str->info); // int tics; saveg_write32(str->tics); // state_t* state; saveg_write32(str->state - states); // int flags; saveg_write32(str->flags); // int health; saveg_write32(str->health); // int movedir; saveg_write32(str->movedir); // int movecount; saveg_write32(str->movecount); // struct mobj_s* target; saveg_writep(str->target); // int reactiontime; saveg_write32(str->reactiontime); // int threshold; saveg_write32(str->threshold); // struct player_s* player; if (str->player) { saveg_write32(str->player - players + 1); } else { saveg_write32(0); } // int lastlook; saveg_write32(str->lastlook); // mapthing_t spawnpoint; saveg_write_mapthing_t(&str->spawnpoint); // struct mobj_s* tracer; saveg_writep(str->tracer); }
static void saveg_write_mobj_t(mobj_t *str) { // thinker_t thinker; saveg_write_thinker_t(&str->thinker); // fixed_t x, y, z; SV_WriteLong(str->x); SV_WriteLong(str->y); SV_WriteLong(str->z); // struct mobj_s *snext, *sprev; SV_WritePtr(str->snext); SV_WritePtr(str->sprev); // angle_t angle; SV_WriteLong(str->angle); // spritenum_t sprite; SV_WriteLong(str->sprite); // int frame; SV_WriteLong(str->frame); // struct mobj_s *bnext, *bprev; SV_WritePtr(str->bnext); SV_WritePtr(str->bprev); // struct subsector_s *subsector; SV_WritePtr(str->subsector); // fixed_t floorz, ceilingz; SV_WriteLong(str->floorz); SV_WriteLong(str->ceilingz); // fixed_t radius, height; SV_WriteLong(str->radius); SV_WriteLong(str->height); // fixed_t momx, momy, momz; SV_WriteLong(str->momx); SV_WriteLong(str->momy); SV_WriteLong(str->momz); // int validcount; SV_WriteLong(str->validcount); // mobjtype_t type; // Our mobjinfo table has an extra entry, for compatibility with v1.0 // HHE patches. So translate the internal thing type index to the // equivalent for Vanilla Heretic v1.3, for savegame compatibility. if (str->type > MT_PHOENIXFX_REMOVED) { SV_WriteLong(str->type - 1); } else if (str->type == MT_PHOENIXFX_REMOVED) { // This should never happen, but just in case, do something // vaguely sensible ... ? SV_WriteLong(MT_PHOENIXFX1); } else { SV_WriteLong(str->type); } // mobjinfo_t *info; SV_WritePtr(str->info); // int tics; SV_WriteLong(str->tics); // state_t *state; saveg_write_state_ptr(str->state); // int damage; SV_WriteLong(str->damage); // int flags; SV_WriteLong(str->flags); // int flags2; SV_WriteLong(str->flags2); // specialval_t special1; saveg_write_specialval_t(&str->special1); // specialval_t special2; saveg_write_specialval_t(&str->special2); // int health; SV_WriteLong(str->health); // int movedir; SV_WriteLong(str->movedir); // int movecount; SV_WriteLong(str->movecount); // struct mobj_s *target; SV_WritePtr(str->target); // int reactiontime; SV_WriteLong(str->reactiontime); // int threshold; SV_WriteLong(str->threshold); // struct player_s *player; if (str->player != NULL) { SV_WriteLong(str->player - players + 1); } else { SV_WriteLong(0); } // int lastlook; SV_WriteLong(str->lastlook); // mapthing_t spawnpoint; saveg_write_mapthing_t(&str->spawnpoint); }