Exemplo n.º 1
0
//
// 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();
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
0
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();
}
Exemplo n.º 4
0
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);
}