diff --git a/source/games/duke/src/animatesprites_d.cpp b/source/games/duke/src/animatesprites_d.cpp index e1211d9c0..b1e2bdd92 100644 --- a/source/games/duke/src/animatesprites_d.cpp +++ b/source/games/duke/src/animatesprites_d.cpp @@ -82,7 +82,7 @@ void animatesprites_d(tspriteArray& tsprites, const DVector2& viewVec, DAngle vi { if (t->lotag == SE_27_DEMO_CAM && ud.recstat == 1) { - t->picnum = 11 + ((PlayClock >> 3) & 1); + t->setspritetexture(TexMan.CheckForTexture("DEMOCAM", ETextureType::Any)); t->cstat |= CSTAT_SPRITE_YCENTER; } else @@ -147,24 +147,23 @@ void animatesprites_d(tspriteArray& tsprites, const DVector2& viewVec, DAngle vi newtspr->shade = t->shade; newtspr->cstat = 0; + const char* texname = nullptr; switch (ps[p].curr_weapon) { - case PISTOL_WEAPON: newtspr->picnum = DTILE_FIRSTGUNSPRITE; break; - case SHOTGUN_WEAPON: newtspr->picnum = DTILE_SHOTGUNSPRITE; break; - case CHAINGUN_WEAPON: newtspr->picnum = DTILE_CHAINGUNSPRITE; break; - case RPG_WEAPON: newtspr->picnum = DTILE_RPGSPRITE; break; - case HANDREMOTE_WEAPON: - case HANDBOMB_WEAPON: newtspr->picnum = DTILE_HEAVYHBOMB; break; - case TRIPBOMB_WEAPON: newtspr->picnum = DTILE_TRIPBOMBSPRITE; break; - case GROW_WEAPON: newtspr->picnum = DTILE_GROWSPRITEICON; break; - case SHRINKER_WEAPON: newtspr->picnum = DTILE_SHRINKERSPRITE; break; - case FREEZE_WEAPON: newtspr->picnum = DTILE_FREEZESPRITE; break; - case FLAMETHROWER_WEAPON: //Twentieth Anniversary World Tour - if (isWorldTour()) - newtspr->picnum = DTILE_FLAMETHROWERSPRITE; - break; - case DEVISTATOR_WEAPON: newtspr->picnum = DTILE_DEVISTATORSPRITE; break; + case PISTOL_WEAPON: texname = "FIRSTGUNSPRITE"; break; + case SHOTGUN_WEAPON: texname = "SHOTGUNSPRITE"; break; + case CHAINGUN_WEAPON: texname = "CHAINGUNSPRITE"; break; + case RPG_WEAPON: texname = "RPGSPRITE"; break; + case HANDREMOTE_WEAPON: + case HANDBOMB_WEAPON: texname = "HEAVYHBOMB"; break; + case TRIPBOMB_WEAPON: texname = "TRIPBOMBSPRITE"; break; + case GROW_WEAPON: texname = "GROWSPRITEICON"; break; + case SHRINKER_WEAPON: texname = "SHRINKERSPRITE"; break; + case FREEZE_WEAPON: texname = "FREEZESPRITE"; break; + case FLAMETHROWER_WEAPON:texname = "FLAMETHROWERSPRITE"; break; + case DEVISTATOR_WEAPON: texname = "DEVISTATORSPRITE"; break; } + t->setspritetexture(TexMan.CheckForTexture(texname, ETextureType::Any)); if (h->GetOwner()) newtspr->pos.Z = ps[p].GetActor()->getOffsetZ() - 12; else newtspr->pos.Z = h->spr.pos.Z - 51; diff --git a/source/games/duke/src/animatesprites_r.cpp b/source/games/duke/src/animatesprites_r.cpp index 424c643ed..47d6ad15e 100644 --- a/source/games/duke/src/animatesprites_r.cpp +++ b/source/games/duke/src/animatesprites_r.cpp @@ -75,11 +75,12 @@ void animatesprites_r(tspriteArray& tsprites, const DVector2& viewVec, DAngle vi { if (t->lotag == SE_27_DEMO_CAM && ud.recstat == 1) { - t->picnum = 11 + ((PlayClock >> 3) & 1); + t->setspritetexture(TexMan.CheckForTexture("DEMOCAM", ETextureType::Any)); t->cstat |= CSTAT_SPRITE_YCENTER; } else t->scale = DVector2(0, 0); + break; } if (t->statnum == STAT_TEMP) continue; @@ -145,22 +146,24 @@ void animatesprites_r(tspriteArray& tsprites, const DVector2& viewVec, DAngle vi newtspr->shade = t->shade; newtspr->cstat = 0; + const char* texname = nullptr; switch (ps[p].curr_weapon) { - case PISTOL_WEAPON: newtspr->picnum = RTILE_FIRSTGUNSPRITE; break; - case SHOTGUN_WEAPON: newtspr->picnum = RTILE_SHOTGUNSPRITE; break; - case RIFLEGUN_WEAPON: newtspr->picnum = RTILE_RIFLEGUNSPRITE; break; - case CROSSBOW_WEAPON: newtspr->picnum = RTILE_CROSSBOWSPRITE; break; - case CHICKEN_WEAPON: newtspr->picnum = RTILE_CROSSBOWSPRITE; break; + case PISTOL_WEAPON: texname = "FIRSTGUNSPRITE"; break; + case SHOTGUN_WEAPON: texname = "SHOTGUNSPRITE"; break; + case RIFLEGUN_WEAPON: texname = "RIFLEGUNSPRITE"; break; + case CROSSBOW_WEAPON: texname = "CROSSBOWSPRITE"; break; + case CHICKEN_WEAPON: texname = "CROSSBOWSPRITE"; break; case THROWINGDYNAMITE_WEAPON: - case DYNAMITE_WEAPON: newtspr->picnum = RTILE_DYNAMITE; break; - case POWDERKEG_WEAPON: newtspr->picnum = RTILE_POWDERKEG; break; - case BOWLING_WEAPON: newtspr->picnum = RTILE_BOWLINGBALLSPRITE; break; - case THROWSAW_WEAPON: newtspr->picnum = RTILE_RIPSAWSPRITE; break; - case BUZZSAW_WEAPON: newtspr->picnum = RTILE_RIPSAWSPRITE; break; - case ALIENBLASTER_WEAPON: newtspr->picnum = RTILE_ALIENBLASTERSPRITE; break; - case TIT_WEAPON: newtspr->picnum = RTILE_TITSPRITE; break; + case DYNAMITE_WEAPON: texname = "DYNAMITE"; break; + case POWDERKEG_WEAPON: texname = "POWDERKEG"; break; + case BOWLING_WEAPON: texname = "BOWLINGBALLSPRITE"; break; + case THROWSAW_WEAPON: texname = "RIPSAWSPRITE"; break; + case BUZZSAW_WEAPON: texname = "RIPSAWSPRITE"; break; + case ALIENBLASTER_WEAPON: texname = "ALIENBLASTERSPRITE"; break; + case TIT_WEAPON: texname = "TITSPRITE"; break; } + t->setspritetexture(TexMan.CheckForTexture(texname, ETextureType::Any)); if (h->GetOwner()) newtspr->pos.Z = ps[p].GetActor()->getOffsetZ() - 12; else newtspr->pos.Z = h->spr.pos.Z - 51; @@ -201,14 +204,14 @@ void animatesprites_r(tspriteArray& tsprites, const DVector2& viewVec, DAngle vi if (ps[p].OnMotorcycle && p == screenpeek) { - t->picnum = RTILE_PLAYERONBIKEBACK; + t->setspritetexture(TexMan.CheckForTexture("PLAYERONBIKEBACK", ETextureType::Any)); t->scale = DVector2(0.28125, 0.28125); drawshadows(tsprites, t, h); continue; } else if (ps[p].OnMotorcycle) { - t->picnum = RTILE_PLAYERONBIKE; + t->setspritetexture(TexMan.CheckForTexture("PLAYERONBIKE", ETextureType::Any)); applyRotation2(h, t, viewang); t->scale = DVector2(0.28125, 0.28125); drawshadows(tsprites, t, h); @@ -216,14 +219,14 @@ void animatesprites_r(tspriteArray& tsprites, const DVector2& viewVec, DAngle vi } else if (ps[p].OnBoat && p == screenpeek) { - t->picnum = RTILE_PLAYERONBOATBACK; + t->setspritetexture(TexMan.CheckForTexture("PLAYERONBOATBACK", ETextureType::Any)); t->scale = DVector2(0.5, 0.5); drawshadows(tsprites, t, h); continue; } else if (ps[p].OnBoat) { - t->picnum = RTILE_PLAYERONBOAT; + t->setspritetexture(TexMan.CheckForTexture("PLAYERONBOAT", ETextureType::Any)); k = angletorotation2(h->spr.Angles.Yaw, viewang); applyRotation2(h, t, viewang); t->scale = DVector2(0.5, 0.5); diff --git a/source/games/duke/src/namelist_d.h b/source/games/duke/src/namelist_d.h index d1aacc5ef..d324e7d13 100644 --- a/source/games/duke/src/namelist_d.h +++ b/source/games/duke/src/namelist_d.h @@ -1,3 +1,4 @@ +x(DEMOCAM1, 11) x(ARROW, 20) x(FIRSTGUNSPRITE, 21) x(CHAINGUNSPRITE, 22)