// // mobj_t // static void saveg_read_mobj_t(mobj_t *str) { str->x = saveg_read32(); str->y = saveg_read32(); str->z = saveg_read32(); str->angle = saveg_read32(); str->sprite = (spritenum_t)saveg_read_enum(); str->frame = saveg_read32(); str->floorz = saveg_read32(); str->ceilingz = saveg_read32(); str->dropoffz = saveg_read32(); str->radius = saveg_read32(); str->height = saveg_read32(); str->momx = saveg_read32(); str->momy = saveg_read32(); str->momz = saveg_read32(); str->type = (mobjtype_t)saveg_read_enum(); str->tics = saveg_read32(); str->state = &states[saveg_read32()]; str->flags = saveg_read32(); str->flags2 = saveg_read32(); str->health = saveg_read32(); str->movedir = saveg_read32(); str->movecount = saveg_read32(); targets[thingindex] = saveg_read32(); str->reactiontime = saveg_read32(); str->threshold = saveg_read32(); if (saveg_read_bool()) { str->player = viewplayer; str->player->mo = str; } saveg_read_mapthing_t(&str->spawnpoint); tracers[thingindex] = saveg_read32(); lastenemies[thingindex] = saveg_read32(); str->floatbob = saveg_read32(); str->shadowoffset = saveg_read32(); str->gear = saveg_read16(); str->bloodsplats = saveg_read32(); str->blood = saveg_read32(); str->interpolate = saveg_read32(); str->oldx = saveg_read32(); str->oldy = saveg_read32(); str->oldz = saveg_read32(); str->oldangle = saveg_read32(); str->nudge = saveg_read32(); str->pitch = saveg_read32(); str->id = saveg_read32(); }
static void saveg_read_mobj_t(mobj_t* mo) { int pl; mo->x = saveg_read32(); mo->y = saveg_read32(); mo->z = saveg_read32(); mo->tid = saveg_read32(); mo->snext = saveg_read_mobjindex(); mo->sprev = saveg_read_mobjindex(); mo->angle = saveg_read32(); mo->pitch = saveg_read32(); mo->sprite = saveg_read32(); mo->frame = saveg_read32(); mo->bnext = saveg_read_mobjindex(); mo->bprev = saveg_read_mobjindex(); mo->subsector = &subsectors[saveg_read32() - numsubsectors]; mo->floorz = saveg_read32(); mo->ceilingz = saveg_read32(); mo->radius = saveg_read32(); mo->height = saveg_read32(); mo->momx = saveg_read32(); mo->momy = saveg_read32(); mo->momz = saveg_read32(); mo->validcount = saveg_read32(); mo->state = &states[saveg_read32()]; mo->type = saveg_read32(); mo->tics = saveg_read32(); mo->flags = saveg_read32(); mo->health = saveg_read32(); mo->alpha = saveg_read32(); mo->blockflag = saveg_read32(); mo->movedir = saveg_read32(); mo->movecount = saveg_read32(); saveg_set_mobjtarget(&mo->target, saveg_read_mobjindex()); mo->reactiontime = saveg_read32(); mo->threshold = saveg_read32(); pl = saveg_read32(); mo->player = pl > 0 ? &players[pl - 1] : NULL; saveg_read_mapthing_t(&mo->spawnpoint); saveg_set_mobjtarget(&mo->tracer, saveg_read_mobjindex()); mo->frame_x = saveg_read32(); mo->frame_y = saveg_read32(); mo->frame_z = saveg_read32(); mo->mobjfunc = saveg_read32() ? P_RespawnSpecials : NULL; }
static void saveg_read_mobj_t(mobj_t *str) { int pl; // thinker_t thinker; saveg_read_thinker_t(&str->thinker); // fixed_t x; str->x = saveg_read32(); // fixed_t y; str->y = saveg_read32(); // fixed_t z; str->z = saveg_read32(); // struct mobj_s* snext; str->snext = saveg_readp(); // struct mobj_s* sprev; str->sprev = saveg_readp(); // angle_t angle; str->angle = saveg_read32(); // spritenum_t sprite; str->sprite = saveg_read_enum(); // int frame; str->frame = saveg_read32(); // struct mobj_s* bnext; str->bnext = saveg_readp(); // struct mobj_s* bprev; str->bprev = saveg_readp(); // struct subsector_s* subsector; str->subsector = saveg_readp(); // fixed_t floorz; str->floorz = saveg_read32(); // fixed_t ceilingz; str->ceilingz = saveg_read32(); // fixed_t radius; str->radius = saveg_read32(); // fixed_t height; str->height = saveg_read32(); // fixed_t momx; str->momx = saveg_read32(); // fixed_t momy; str->momy = saveg_read32(); // fixed_t momz; str->momz = saveg_read32(); // int validcount; str->validcount = saveg_read32(); // mobjtype_t type; str->type = saveg_read_enum(); // mobjinfo_t* info; str->info = saveg_readp(); // int tics; str->tics = saveg_read32(); // state_t* state; str->state = &states[saveg_read32()]; // int flags; str->flags = saveg_read32(); // int health; str->health = saveg_read32(); // int movedir; str->movedir = saveg_read32(); // int movecount; str->movecount = saveg_read32(); // struct mobj_s* target; str->target = saveg_readp(); // int reactiontime; str->reactiontime = saveg_read32(); // int threshold; str->threshold = saveg_read32(); // struct player_s* player; pl = saveg_read32(); if (pl > 0) { str->player = &players[pl - 1]; str->player->mo = str; } else { str->player = NULL; } // int lastlook; str->lastlook = saveg_read32(); // mapthing_t spawnpoint; saveg_read_mapthing_t(&str->spawnpoint); // struct mobj_s* tracer; str->tracer = saveg_readp(); }
static void saveg_read_mobj_t(mobj_t *str) { int i; // thinker_t thinker; saveg_read_thinker_t(&str->thinker); // fixed_t x, y, z; str->x = SV_ReadLong(); str->y = SV_ReadLong(); str->z = SV_ReadLong(); // struct mobj_s *snext, *sprev; SV_ReadLong(); str->snext = NULL; SV_ReadLong(); str->sprev = NULL; // angle_t angle; str->angle = SV_ReadLong(); // spritenum_t sprite; str->sprite = SV_ReadLong(); // int frame; str->frame = SV_ReadLong(); // struct mobj_s *bnext, *bprev; SV_ReadLong(); str->bnext = NULL; SV_ReadLong(); str->bprev = NULL; // struct subsector_s *subsector; SV_ReadLong(); str->subsector = NULL; // fixed_t floorz, ceilingz; str->floorz = SV_ReadLong(); str->ceilingz = SV_ReadLong(); // fixed_t radius, height; str->radius = SV_ReadLong(); str->height = SV_ReadLong(); // fixed_t momx, momy, momz; str->momx = SV_ReadLong(); str->momy = SV_ReadLong(); str->momz = SV_ReadLong(); // int validcount; str->validcount = SV_ReadLong(); // mobjtype_t type; str->type = SV_ReadLong(); // An extra thing type was added for v1.0 HHE compatibility. // Map from the v1.3 thing type index to the internal one. if (str->type >= MT_PHOENIXFX_REMOVED) { ++str->type; } // mobjinfo_t *info; SV_ReadLong(); str->info = NULL; // int tics; str->tics = SV_ReadLong(); // state_t *state; saveg_read_state_ptr(&str->state); // int damage; str->damage = SV_ReadLong(); // int flags; str->flags = SV_ReadLong(); // int flags2; str->flags2 = SV_ReadLong(); // specialval_t special1; saveg_read_specialval_t(&str->special1); // specialval_t special2; saveg_read_specialval_t(&str->special2); // Now we have a bunch of hacks to try to NULL out special values // where special[12] contained a mobj_t pointer that isn't valid // any more. This isn't in Vanilla but at least it stops the game // from crashing. switch (str->type) { // Gas pods use special2.m to point to the pod generator // that made it. case MT_POD: str->special2.m = NULL; break; // Several thing types use special1.m to mean 'target': case MT_MACEFX4: // A_DeathBallImpact case MT_WHIRLWIND: // A_WhirlwindSeek case MT_MUMMYFX1: // A_MummyFX1Seek case MT_HORNRODFX2: // A_SkullRodPL2Seek case MT_PHOENIXFX1: // A_PhoenixPuff str->special1.m = NULL; break; default: break; } // int health; str->health = SV_ReadLong(); // int movedir; str->movedir = SV_ReadLong(); // int movecount; str->movecount = SV_ReadLong(); // struct mobj_s *target; SV_ReadLong(); str->target = NULL; // int reactiontime; str->reactiontime = SV_ReadLong(); // int threshold; str->threshold = SV_ReadLong(); // struct player_s *player; i = SV_ReadLong(); if (i != 0) { str->player = &players[i - 1]; str->player->mo = str; } else { str->player = NULL; } // int lastlook; str->lastlook = SV_ReadLong(); // mapthing_t spawnpoint; saveg_read_mapthing_t(&str->spawnpoint); }