mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-27 22:33:17 +00:00
Merge branch 'master' of https://github.com/rheit/zdoom
This commit is contained in:
commit
bfb5944517
13 changed files with 101 additions and 18 deletions
|
@ -37,7 +37,7 @@ In addition to the base specification ZDoom recognizes the following lumps
|
|||
between the TEXTMAP and ENDMAP lumps:
|
||||
|
||||
BEHAVIOR = contains compiled ACS code
|
||||
DIALOGUE = contains compiled Strife conversation scripts.
|
||||
DIALOGUE = contains compiled Strife or USDF conversation scripts.
|
||||
ZNODES = Nodes (must be stored as extended GL nodes. Compression is allowed
|
||||
but deprecated for portability reasons.)
|
||||
BLOCKMAP = blockmap. It is recommended not to include this lump in UDMF maps.
|
||||
|
@ -166,6 +166,14 @@ Note: All <bool> fields default to false unless mentioned otherwise.
|
|||
yscaleceiling = <float>; // Y texture scale of ceiling texture, Default = 1.0.
|
||||
rotationfloor = <float>; // Rotation of floor texture in degrees, Default = 0.0.
|
||||
rotationceiling = <float>; // Rotation of ceiling texture in degrees, Default = 0.0.
|
||||
ceilingplane_a = <float>; // Define the plane equation for the sector's ceiling. Default is a horizontal plane at 'heightceiling'.
|
||||
ceilingplane_b = <float>; // 'heightceiling' will still be used to calculate texture alignment.
|
||||
ceilingplane_c = <float>; // The plane equation will only be used if all 4 values are given.
|
||||
ceilingplane_d = <float>;
|
||||
floorplane_a = <float>; // Define the plane equation for the sector's floor. Default is a horizontal plane at 'heightfloor'.
|
||||
floorplane_b = <float>; // 'heightfloor' will still be used to calculate texture alignment.
|
||||
floorplane_c = <float>; // The plane equation will only be used if all 4 values are given.
|
||||
floorplane_d = <float>;
|
||||
lightfloor = <integer>; // The floor's light level. Default is 0.
|
||||
lightceiling = <integer>; // The ceiling's light level. Default is 0.
|
||||
lightfloorabsolute = <bool>; // true = 'lightfloor' is an absolute value. Default is
|
||||
|
@ -355,6 +363,10 @@ Added waterzone sector property.
|
|||
1.22 12.04.2014
|
||||
Added transparent line property (to be folded back to core UDMF standard), and health, score, renderstyle, fillcolor, alpha, scale, scalex, scaley, pitch and roll thing properties.
|
||||
|
||||
1.24 14.05.2014
|
||||
Added plane equations for sector slopes. (Please read carefully to ensure proper use!)
|
||||
Changed language describing the DIALOGUE lump to mention USDF as an option.
|
||||
|
||||
===============================================================================
|
||||
EOF
|
||||
===============================================================================
|
||||
|
|
|
@ -302,7 +302,7 @@ FString level_info_t::LookupLevelName()
|
|||
// Strip out the header from the localized string
|
||||
if (MapName.Len() > 3 && MapName[0] == 'E' && MapName[2] == 'M')
|
||||
{
|
||||
mysnprintf (checkstring, countof(checkstring), "%s: ", MapName);
|
||||
mysnprintf (checkstring, countof(checkstring), "%s: ", MapName.GetChars());
|
||||
}
|
||||
else if (MapName.Len() > 3 && MapName[0] == 'M' && MapName[1] == 'A' && MapName[2] == 'P')
|
||||
{
|
||||
|
|
|
@ -323,6 +323,7 @@ void FMapInfoParser::ParseGameInfo()
|
|||
GAMEINFOKEY_BOOL(noloopfinalemusic, "noloopfinalemusic")
|
||||
GAMEINFOKEY_BOOL(drawreadthis, "drawreadthis")
|
||||
GAMEINFOKEY_BOOL(swapmenu, "swapmenu")
|
||||
GAMEINFOKEY_BOOL(dontcrunchcorpses, "dontcrunchcorpses")
|
||||
GAMEINFOKEY_BOOL(intermissioncounter, "intermissioncounter")
|
||||
GAMEINFOKEY_BOOL(nightmarefast, "nightmarefast")
|
||||
GAMEINFOKEY_COLOR(dimcolor, "dimcolor")
|
||||
|
|
1
src/gi.h
1
src/gi.h
|
@ -113,6 +113,7 @@ struct gameinfo_t
|
|||
bool intermissioncounter;
|
||||
bool nightmarefast;
|
||||
bool swapmenu;
|
||||
bool dontcrunchcorpses;
|
||||
TArray<FName> creditPages;
|
||||
TArray<FName> finalePages;
|
||||
TArray<FName> infoPages;
|
||||
|
|
|
@ -488,6 +488,15 @@ xx(blockhitscan)
|
|||
|
||||
xx(Renderstyle)
|
||||
|
||||
xx(ceilingplane_a)
|
||||
xx(ceilingplane_b)
|
||||
xx(ceilingplane_c)
|
||||
xx(ceilingplane_d)
|
||||
xx(floorplane_a)
|
||||
xx(floorplane_b)
|
||||
xx(floorplane_c)
|
||||
xx(floorplane_d)
|
||||
|
||||
// USDF keywords
|
||||
xx(Amount)
|
||||
xx(Text)
|
||||
|
|
|
@ -347,7 +347,7 @@ inline int FNodeBuilder::ClassifyLine (node_t &node, const FPrivVert *v1, const
|
|||
#ifdef DISABLE_SSE
|
||||
return ClassifyLine2 (node, v1, v2, sidev);
|
||||
#else
|
||||
#if defined(__SSE2__) || defined(_M_IX64)
|
||||
#if defined(__SSE2__) || defined(_M_X64)
|
||||
// If compiling with SSE2 support everywhere, just use the SSE2 version.
|
||||
return ClassifyLineSSE2 (node, v1, v2, sidev);
|
||||
#elif defined(_MSC_VER) && _MSC_VER < 1300
|
||||
|
|
|
@ -1010,6 +1010,16 @@ bool AActor::Grind(bool items)
|
|||
if ((flags & MF_CORPSE) && !(flags3 & MF3_DONTGIB) && (health <= 0))
|
||||
{
|
||||
FState * state = FindState(NAME_Crush);
|
||||
|
||||
// In Heretic and Chex Quest we don't change the actor's sprite, just its size.
|
||||
if (state == NULL && gameinfo.dontcrunchcorpses)
|
||||
{
|
||||
flags &= ~MF_SOLID;
|
||||
flags3 |= MF3_DONTGIB;
|
||||
height = radius = 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
bool isgeneric = false;
|
||||
// ZDoom behavior differs from standard as crushed corpses cannot be raised.
|
||||
// The reason for the change was originally because of a problem with players,
|
||||
|
|
|
@ -1245,6 +1245,7 @@ public:
|
|||
int lightcolor = -1;
|
||||
int fadecolor = -1;
|
||||
int desaturation = -1;
|
||||
int fplaneflags = 0, cplaneflags = 0;
|
||||
|
||||
memset(sec, 0, sizeof(*sec));
|
||||
sec->lightlevel = 160;
|
||||
|
@ -1446,6 +1447,48 @@ public:
|
|||
Flag(sec->MoreFlags, SECF_UNDERWATER, key);
|
||||
break;
|
||||
|
||||
case NAME_floorplane_a:
|
||||
fplaneflags |= 1;
|
||||
sec->floorplane.a = CheckFixed(key);
|
||||
break;
|
||||
|
||||
case NAME_floorplane_b:
|
||||
fplaneflags |= 2;
|
||||
sec->floorplane.b = CheckFixed(key);
|
||||
break;
|
||||
|
||||
case NAME_floorplane_c:
|
||||
fplaneflags |= 4;
|
||||
sec->floorplane.c = CheckFixed(key);
|
||||
sec->floorplane.ic = FixedDiv(FRACUNIT, sec->floorplane.c);
|
||||
break;
|
||||
|
||||
case NAME_floorplane_d:
|
||||
fplaneflags |= 8;
|
||||
sec->floorplane.d = CheckFixed(key);
|
||||
break;
|
||||
|
||||
case NAME_ceilingplane_a:
|
||||
cplaneflags |= 1;
|
||||
sec->ceilingplane.a = CheckFixed(key);
|
||||
break;
|
||||
|
||||
case NAME_ceilingplane_b:
|
||||
cplaneflags |= 2;
|
||||
sec->ceilingplane.b = CheckFixed(key);
|
||||
break;
|
||||
|
||||
case NAME_ceilingplane_c:
|
||||
cplaneflags |= 4;
|
||||
sec->ceilingplane.c = CheckFixed(key);
|
||||
sec->ceilingplane.ic = FixedDiv(FRACUNIT, sec->ceilingplane.c);
|
||||
break;
|
||||
|
||||
case NAME_ceilingplane_d:
|
||||
cplaneflags |= 8;
|
||||
sec->ceilingplane.d = CheckFixed(key);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -1457,12 +1500,22 @@ public:
|
|||
}
|
||||
|
||||
sec->secretsector = !!(sec->special&SECRET_MASK);
|
||||
|
||||
// Reset the planes to their defaults if not all of the plane equation's parameters were found.
|
||||
if (fplaneflags != 15)
|
||||
{
|
||||
sec->floorplane.a = sec->floorplane.b = 0;
|
||||
sec->floorplane.d = -sec->GetPlaneTexZ(sector_t::floor);
|
||||
sec->floorplane.c = FRACUNIT;
|
||||
sec->floorplane.ic = FRACUNIT;
|
||||
}
|
||||
if (cplaneflags != 15)
|
||||
{
|
||||
sec->ceilingplane.a = sec->ceilingplane.b = 0;
|
||||
sec->ceilingplane.d = sec->GetPlaneTexZ(sector_t::ceiling);
|
||||
sec->ceilingplane.c = -FRACUNIT;
|
||||
sec->ceilingplane.ic = -FRACUNIT;
|
||||
}
|
||||
|
||||
if (lightcolor == -1 && fadecolor == -1 && desaturation == -1)
|
||||
{
|
||||
|
|
|
@ -172,11 +172,7 @@ static int DoomSpecificInfo (char *buffer, char *end)
|
|||
}
|
||||
else
|
||||
{
|
||||
char name[9];
|
||||
|
||||
strncpy (name, level.mapname, 8);
|
||||
name[8] = 0;
|
||||
p += snprintf (buffer+p, size-p, "\n\nCurrent map: %s", name);
|
||||
p += snprintf (buffer+p, size-p, "\n\nCurrent map: %s", level.MapName.GetChars());
|
||||
|
||||
if (!viewactive)
|
||||
{
|
||||
|
|
|
@ -220,9 +220,9 @@ FTextureID FTextureManager::CheckForTexture (const char *name, int usetype, BITF
|
|||
{
|
||||
if (firsttype == FTexture::TEX_Null) return FTextureID(0);
|
||||
if (firsttype == FTexture::TEX_FirstDefined && !(flags & TEXMAN_ReturnFirst)) return FTextureID(0);
|
||||
}
|
||||
return FTextureID(firstfound);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (!(flags & TEXMAN_ShortNameOnly))
|
||||
|
@ -233,7 +233,7 @@ FTextureID FTextureManager::CheckForTexture (const char *name, int usetype, BITF
|
|||
{
|
||||
FTexture *const NO_TEXTURE = (FTexture*)-1;
|
||||
int lump = Wads.CheckNumForFullName(name);
|
||||
if (lump != NULL)
|
||||
if (lump >= 0)
|
||||
{
|
||||
FTexture *tex = Wads.GetLinkedTexture(lump);
|
||||
if (tex == NO_TEXTURE) return FTextureID(-1);
|
||||
|
|
|
@ -314,7 +314,7 @@ static bool IsExMy(const char * name)
|
|||
|
||||
void WI_LoadBackground(bool isenterpic)
|
||||
{
|
||||
const char *lumpname;
|
||||
const char *lumpname = NULL;
|
||||
char buffer[10];
|
||||
in_anim_t an;
|
||||
lnode_t pt;
|
||||
|
|
|
@ -299,7 +299,7 @@ void DoBlending_SSE2(const PalEntry *from, PalEntry *to, int count, int r, int g
|
|||
}
|
||||
#endif
|
||||
|
||||
#if defined(__amd64__) || defined(_M_IX64)
|
||||
#if defined(__amd64__) || defined(_M_X64)
|
||||
long long color;
|
||||
|
||||
blending256 = _mm_set_epi64x(0x10001000100ll, 0x10001000100ll);
|
||||
|
|
|
@ -40,6 +40,7 @@ gameinfo
|
|||
definventorymaxamount = 25
|
||||
defaultrespawntime = 12
|
||||
defaultdropstyle = 1
|
||||
dontcrunchcorpses = true
|
||||
endoom = "ENDOOM"
|
||||
player5start = 4001
|
||||
drawreadthis = true
|
||||
|
|
Loading…
Reference in a new issue