From d423ad0d1812bd915f5161a8a70edfd3bf2cf597 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 17 Mar 2017 23:08:22 +0100 Subject: [PATCH] - moved CheckRealHeight from wi_stuff.cpp to texture code. --- src/p_pspr.cpp | 9 --------- src/p_pspr.h | 1 - src/textures/texture.cpp | 38 ++++++++++++++++++++++++++++++++++++++ src/textures/textures.h | 1 + src/wi_stuff.cpp | 38 +------------------------------------- 5 files changed, 40 insertions(+), 47 deletions(-) diff --git a/src/p_pspr.cpp b/src/p_pspr.cpp index 11bfc4b02..c0e8a3a4b 100644 --- a/src/p_pspr.cpp +++ b/src/p_pspr.cpp @@ -839,15 +839,6 @@ void DoReadyWeaponToGeneric(AActor *self, int paramflags) } } -// This function replaces calls to A_WeaponReady in other codepointers. -void DoReadyWeapon(AActor *self) -{ - DoReadyWeaponToBob(self); - DoReadyWeaponToFire(self); - DoReadyWeaponToSwitch(self); - DoReadyWeaponToGeneric(self, ~0); -} - DEFINE_ACTION_FUNCTION(AStateProvider, A_WeaponReady) { PARAM_ACTION_PROLOGUE(AStateProvider); diff --git a/src/p_pspr.h b/src/p_pspr.h index 656cc67a9..08d78429a 100644 --- a/src/p_pspr.h +++ b/src/p_pspr.h @@ -119,7 +119,6 @@ void P_BobWeapon (player_t *player, float *x, float *y, double ticfrac); DAngle P_BulletSlope (AActor *mo, FTranslatedLineTarget *pLineTarget = NULL, int aimflags = 0); AActor *P_AimTarget(AActor *mo); -void DoReadyWeapon(AActor *self); void DoReadyWeaponToBob(AActor *self); void DoReadyWeaponToFire(AActor *self, bool primary = true, bool secondary = true); void DoReadyWeaponToSwitch(AActor *self, bool switchable = true); diff --git a/src/textures/texture.cpp b/src/textures/texture.cpp index 74f9cd04b..2d7cc9486 100644 --- a/src/textures/texture.cpp +++ b/src/textures/texture.cpp @@ -912,6 +912,44 @@ PalEntry FTexture::GetSkyCapColor(bool bottom) return bottom ? FloorSkyColor : CeilingSkyColor; } +//==================================================================== +// +// CheckRealHeight +// +// Checks the posts in a texture and returns the lowest row (plus one) +// of the texture that is actually used. +// +//==================================================================== + +int FTexture::CheckRealHeight() +{ + const FTexture::Span *span; + int maxy = 0, miny = GetHeight(); + + for (int i = 0; i < GetWidth(); ++i) + { + GetColumn(i, &span); + while (span->Length != 0) + { + if (span->TopOffset < miny) + { + miny = span->TopOffset; + } + if (span->TopOffset + span->Length > maxy) + { + maxy = span->TopOffset + span->Length; + } + span++; + } + } + // Scale maxy before returning it + maxy = int((maxy * 2) / Scale.Y); + maxy = (maxy >> 1) + (maxy & 1); + return maxy; +} + + + FDummyTexture::FDummyTexture () { diff --git a/src/textures/textures.h b/src/textures/textures.h index e647d7dab..bdfb7d2de 100644 --- a/src/textures/textures.h +++ b/src/textures/textures.h @@ -358,6 +358,7 @@ public: static bool SmoothEdges(unsigned char * buffer,int w, int h); void CheckTrans(unsigned char * buffer, int size, int trans); bool ProcessData(unsigned char * buffer, int w, int h, bool ispatch); + int CheckRealHeight(); }; class FxAddSub; diff --git a/src/wi_stuff.cpp b/src/wi_stuff.cpp index 5542130e6..00ebfa72d 100644 --- a/src/wi_stuff.cpp +++ b/src/wi_stuff.cpp @@ -778,42 +778,6 @@ public: - //==================================================================== - // - // CheckRealHeight - // - // Checks the posts in a texture and returns the lowest row (plus one) - // of the texture that is actually used. - // - //==================================================================== - - int CheckRealHeight(FTexture *tex) - { - const FTexture::Span *span; - int maxy = 0, miny = tex->GetHeight(); - - for (int i = 0; i < tex->GetWidth(); ++i) - { - tex->GetColumn(i, &span); - while (span->Length != 0) - { - if (span->TopOffset < miny) - { - miny = span->TopOffset; - } - if (span->TopOffset + span->Length > maxy) - { - maxy = span->TopOffset + span->Length; - } - span++; - } - } - // Scale maxy before returning it - maxy = int((maxy *2) / tex->Scale.Y); - maxy = (maxy >> 1) + (maxy & 1); - return maxy; - } - //==================================================================== // // Draws a single character with a shadow @@ -847,7 +811,7 @@ public: if (h > 50) { // Fix for Deus Vult II and similar wads that decide to make these hugely tall // patches with vast amounts of empty space at the bottom. - h = CheckRealHeight(tex); + h = tex->CheckRealHeight(); } return y + (h + BigFont->GetHeight()/4) * CleanYfac; }