mirror of
https://github.com/DrBeef/Raze.git
synced 2024-11-15 08:52:00 +00:00
- position tweaking for Nam's skies.
Why is this such an utter mess to get skies placed correctly? :(
This commit is contained in:
parent
fc11f9327a
commit
e74aca291c
8 changed files with 18 additions and 6 deletions
|
@ -213,6 +213,7 @@ typedef struct {
|
|||
// The texel index offset in the y direction of a parallaxed sky:
|
||||
// XXX: currently always 0.
|
||||
int yoffs;
|
||||
int yoffs2;
|
||||
|
||||
int lognumtiles; // 1<<lognumtiles: number of tiles in multi-sky
|
||||
int16_t tileofs[MAXPSKYTILES]; // for 0 <= j < (1<<lognumtiles): tile offset relative to basetile
|
||||
|
@ -234,11 +235,11 @@ static inline psky_t *getpskyidx(int32_t picnum)
|
|||
|
||||
|
||||
EXTERN psky_t * tileSetupSky(int32_t tilenum);
|
||||
psky_t* defineSky(int32_t const tilenum, int horiz, int lognumtiles, const uint16_t* tileofs, int yoff = 0);
|
||||
psky_t* defineSky(int32_t const tilenum, int horiz, int lognumtiles, const uint16_t* tileofs, int yoff = 0, int yoff2 = 0x7fffffff);
|
||||
|
||||
// Get properties of parallaxed sky to draw.
|
||||
// Returns: pointer to tile offset array. Sets-by-pointer the other three.
|
||||
const int16_t* getpsky(int32_t picnum, int32_t* dapyscale, int32_t* dapskybits, int32_t* dapyoffs, int32_t* daptileyscale);
|
||||
const int16_t* getpsky(int32_t picnum, int32_t* dapyscale, int32_t* dapskybits, int32_t* dapyoffs, int32_t* daptileyscale, bool alt = false);
|
||||
|
||||
|
||||
EXTERN char parallaxtype;
|
||||
|
|
|
@ -595,19 +595,20 @@ psky_t * tileSetupSky(int32_t const tilenum)
|
|||
return &multipskies.Last();
|
||||
}
|
||||
|
||||
psky_t * defineSky(int32_t const tilenum, int horiz, int lognumtiles, const uint16_t *tileofs, int yoff)
|
||||
psky_t * defineSky(int32_t const tilenum, int horiz, int lognumtiles, const uint16_t *tileofs, int yoff, int yoff2)
|
||||
{
|
||||
auto sky = tileSetupSky(tilenum);
|
||||
sky->horizfrac = horiz;
|
||||
sky->lognumtiles = lognumtiles;
|
||||
sky->yoffs = yoff;
|
||||
sky->yoffs2 = yoff2 == 0x7fffffff ? yoff : yoff2;
|
||||
memcpy(sky->tileofs, tileofs, 2 << lognumtiles);
|
||||
return sky;
|
||||
}
|
||||
|
||||
// Get properties of parallaxed sky to draw.
|
||||
// Returns: pointer to tile offset array. Sets-by-pointer the other three.
|
||||
const int16_t* getpsky(int32_t picnum, int32_t* dapyscale, int32_t* dapskybits, int32_t* dapyoffs, int32_t* daptileyscale)
|
||||
const int16_t* getpsky(int32_t picnum, int32_t* dapyscale, int32_t* dapskybits, int32_t* dapyoffs, int32_t* daptileyscale, bool alt)
|
||||
{
|
||||
psky_t const* const psky = getpskyidx(picnum);
|
||||
|
||||
|
@ -616,7 +617,7 @@ const int16_t* getpsky(int32_t picnum, int32_t* dapyscale, int32_t* dapskybits,
|
|||
if (dapyscale)
|
||||
*dapyscale = (parallaxyscale_override == 0 ? psky->horizfrac : parallaxyscale_override);
|
||||
if (dapyoffs)
|
||||
*dapyoffs = psky->yoffs + parallaxyoffs_override;
|
||||
*dapyoffs = (alt? psky->yoffs2 : psky->yoffs) + parallaxyoffs_override;
|
||||
if (daptileyscale)
|
||||
*daptileyscale = psky->yscale;
|
||||
|
||||
|
|
|
@ -887,6 +887,7 @@ void parseMultiPsky(FScanner& sc, FScriptPosition& pos)
|
|||
|
||||
if (sky.tilenum != DEFAULTPSKY && (unsigned)sky.tilenum >= MAXUSERTILES) return;
|
||||
if ((1 << sky.lognumtiles) > MAXPSKYTILES) return;
|
||||
sky.yoffs2 = sky.yoffs;
|
||||
auto psky = tileSetupSky(sky.tilenum);
|
||||
*psky = sky;
|
||||
}
|
||||
|
|
|
@ -54,7 +54,7 @@ void initSkyInfo(HWDrawInfo *di, HWSkyInfo* sky, sectortype* sector, int plane,
|
|||
{
|
||||
int remap = TRANSLATION(Translation_Remap + curbasepal, palette);
|
||||
|
||||
int16_t const* dapskyoff = getpsky(picnum, &dapyscale, &dapskybits, &dapyoffs, &daptileyscale);
|
||||
int16_t const* dapskyoff = getpsky(picnum, &dapyscale, &dapskybits, &dapyoffs, &daptileyscale, true);
|
||||
int tw = tileWidth(picnum);
|
||||
if ((1 << sizeToBits(tw)) < tw) dapskybits--; // Build math is weird.
|
||||
|
||||
|
|
|
@ -642,6 +642,7 @@ void SerializeState(FSerializer& arc)
|
|||
("cheating", bPlayerCheated)
|
||||
("skyhoriz", pSky->horizfrac)
|
||||
("skyy", pSky->yoffs)
|
||||
("skyy2", pSky->yoffs2)
|
||||
("scale", pSky->yscale)
|
||||
.Array("tileofs", pSky->tileofs, countof(pSky->tileofs))
|
||||
("numtiles", pSky->lognumtiles)
|
||||
|
|
|
@ -219,6 +219,12 @@ static void setupbackdrop()
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isNam())
|
||||
{
|
||||
defineSky(212, 65536, 3, pskyoff, 0, 140);
|
||||
defineSky(225, 65536, 3, pskyoff, 0, 140);
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
|
|
@ -156,6 +156,7 @@ uint8_t LoadLevel(MapRecord* map)
|
|||
pSky->tileofs[2] = 0;
|
||||
pSky->tileofs[3] = 0;
|
||||
pSky->yoffs = 256;
|
||||
pSky->yoffs2 = 256;
|
||||
pSky->lognumtiles = 2;
|
||||
pSky->horizfrac = 65536;
|
||||
pSky->yscale = 65536;
|
||||
|
|
|
@ -110,6 +110,7 @@ void GameInterface::SerializeGameState(FSerializer& arc)
|
|||
pSky->tileofs[2] = 0;
|
||||
pSky->tileofs[3] = 0;
|
||||
pSky->yoffs = 256;
|
||||
pSky->yoffs2 = 256;
|
||||
pSky->lognumtiles = 2;
|
||||
pSky->horizfrac = 65536;
|
||||
pSky->yscale = 65536;
|
||||
|
|
Loading…
Reference in a new issue