mirror of
https://github.com/ZDoom/gzdoom-last-svn.git
synced 2025-05-31 09:21:06 +00:00
* Updated to ZDoom 3938:
- Fixed: Player sounds that explicitly use dsempty will now properly silence the sound instead of looking for a more audible version. - Remove deleted file a_macil.cpp from the project file. - Use an FString to store demoname instead of a fixed-size array. - Fixed: Masked mid textures should get their light level from the frontsector they reference, not from the sector they appear in. - Fixed: Corpse queue accounting went awry once things started being kicked out of it. - Added a new UDMF sidedef flag: lightfog. git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@1464 b0f79afe-0144-0410-b225-9a4edf0717df
This commit is contained in:
parent
e77aa5bcfc
commit
83db0838d1
12 changed files with 52 additions and 53 deletions
|
@ -6611,42 +6611,6 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath=".\src\g_strife\a_macil.cpp"
|
|
||||||
>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Release|Win32"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Release|x64"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Debug|x64"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath=".\src\g_strife\a_oracle.cpp"
|
RelativePath=".\src\g_strife\a_oracle.cpp"
|
||||||
>
|
>
|
||||||
|
|
|
@ -141,6 +141,9 @@ Note: All <bool> fields default to false unless mentioned otherwise.
|
||||||
light = <integer>; // This side's light level. Default is 0.
|
light = <integer>; // This side's light level. Default is 0.
|
||||||
lightabsolute = <bool>; // true = 'light' is an absolute value. Default is
|
lightabsolute = <bool>; // true = 'light' is an absolute value. Default is
|
||||||
// relative to the owning sector's light level.
|
// relative to the owning sector's light level.
|
||||||
|
lightfog = <bool>; // true = This side's relative lighting is used even in
|
||||||
|
// foggy sectors. Default is to disable relative
|
||||||
|
// lighting in foggy sectors.
|
||||||
nofakecontrast = <bool>; // Disables use of fake contrast on this sidedef.
|
nofakecontrast = <bool>; // Disables use of fake contrast on this sidedef.
|
||||||
smoothlighting = <bool>; // Use smooth fake contrast.
|
smoothlighting = <bool>; // Use smooth fake contrast.
|
||||||
clipmidtex = <bool>; // Side's mid textures are clipped to floor and ceiling.
|
clipmidtex = <bool>; // Side's mid textures are clipped to floor and ceiling.
|
||||||
|
|
|
@ -161,7 +161,7 @@ int consoleplayer; // player taking events
|
||||||
int gametic;
|
int gametic;
|
||||||
|
|
||||||
CVAR(Bool, demo_compress, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG);
|
CVAR(Bool, demo_compress, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG);
|
||||||
char demoname[256];
|
FString demoname;
|
||||||
bool demorecording;
|
bool demorecording;
|
||||||
bool demoplayback;
|
bool demoplayback;
|
||||||
bool netdemo;
|
bool netdemo;
|
||||||
|
@ -2271,7 +2271,7 @@ void G_WriteDemoTiccmd (ticcmd_t *cmd, int player, int buf)
|
||||||
void G_RecordDemo (const char* name)
|
void G_RecordDemo (const char* name)
|
||||||
{
|
{
|
||||||
usergame = false;
|
usergame = false;
|
||||||
strcpy (demoname, name);
|
demoname = name;
|
||||||
FixPathSeperator (demoname);
|
FixPathSeperator (demoname);
|
||||||
DefaultExtension (demoname, ".lmp");
|
DefaultExtension (demoname, ".lmp");
|
||||||
maxdemosize = 0x20000;
|
maxdemosize = 0x20000;
|
||||||
|
@ -2710,11 +2710,18 @@ bool G_CheckDemoStatus (void)
|
||||||
formlen = demobuffer + 4;
|
formlen = demobuffer + 4;
|
||||||
WriteLong (int(demo_p - demobuffer - 8), &formlen);
|
WriteLong (int(demo_p - demobuffer - 8), &formlen);
|
||||||
|
|
||||||
M_WriteFile (demoname, demobuffer, int(demo_p - demobuffer));
|
bool saved = M_WriteFile (demoname, demobuffer, int(demo_p - demobuffer));
|
||||||
M_Free (demobuffer);
|
M_Free (demobuffer);
|
||||||
demorecording = false;
|
demorecording = false;
|
||||||
stoprecording = false;
|
stoprecording = false;
|
||||||
Printf ("Demo %s recorded\n", demoname);
|
if (saved)
|
||||||
|
{
|
||||||
|
Printf ("Demo %s recorded\n", demoname.GetChars());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Printf ("Demo %s could not be saved\n", demoname.GetChars());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -350,7 +350,6 @@ CUSTOM_CVAR(Int, sv_corpsequeuesize, 64, CVAR_ARCHIVE|CVAR_SERVERINFO)
|
||||||
while (first != NULL && first->Count > (DWORD)self)
|
while (first != NULL && first->Count > (DWORD)self)
|
||||||
{
|
{
|
||||||
DCorpsePointer *next = iterator.Next ();
|
DCorpsePointer *next = iterator.Next ();
|
||||||
next->Count = first->Count;
|
|
||||||
first->Destroy ();
|
first->Destroy ();
|
||||||
first = next;
|
first = next;
|
||||||
}
|
}
|
||||||
|
@ -373,9 +372,8 @@ DCorpsePointer::DCorpsePointer (AActor *ptr)
|
||||||
if (first->Count >= (DWORD)sv_corpsequeuesize)
|
if (first->Count >= (DWORD)sv_corpsequeuesize)
|
||||||
{
|
{
|
||||||
DCorpsePointer *next = iterator.Next ();
|
DCorpsePointer *next = iterator.Next ();
|
||||||
next->Count = first->Count;
|
|
||||||
first->Destroy ();
|
first->Destroy ();
|
||||||
return;
|
first = next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
++first->Count;
|
++first->Count;
|
||||||
|
|
|
@ -448,6 +448,7 @@ xx(scalex_bottom)
|
||||||
xx(scaley_bottom)
|
xx(scaley_bottom)
|
||||||
xx(light)
|
xx(light)
|
||||||
xx(lightabsolute)
|
xx(lightabsolute)
|
||||||
|
xx(lightfog)
|
||||||
xx(nofakecontrast)
|
xx(nofakecontrast)
|
||||||
xx(smoothlighting)
|
xx(smoothlighting)
|
||||||
xx(blockprojectiles)
|
xx(blockprojectiles)
|
||||||
|
|
|
@ -996,10 +996,10 @@ int side_t::GetLightLevel (bool foggy, int baselight, bool noabsolute, int *pfak
|
||||||
baselight += rel;
|
baselight += rel;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!(Flags & WALLF_ABSLIGHTING))
|
}
|
||||||
{
|
if (!(Flags & WALLF_ABSLIGHTING) && (!foggy || (Flags & WALLF_LIGHT_FOG)))
|
||||||
baselight = clamp(baselight + this->Light, 0, 255);
|
{
|
||||||
}
|
baselight = clamp(baselight + this->Light, 0, 255);
|
||||||
}
|
}
|
||||||
return baselight;
|
return baselight;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1053,6 +1053,10 @@ public:
|
||||||
Flag(sd->Flags, WALLF_ABSLIGHTING, key);
|
Flag(sd->Flags, WALLF_ABSLIGHTING, key);
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
case NAME_lightfog:
|
||||||
|
Flag(sd->Flags, WALLF_LIGHT_FOG, key);
|
||||||
|
continue;
|
||||||
|
|
||||||
case NAME_nofakecontrast:
|
case NAME_nofakecontrast:
|
||||||
Flag(sd->Flags, WALLF_NOFAKECONTRAST, key);
|
Flag(sd->Flags, WALLF_NOFAKECONTRAST, key);
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -815,6 +815,7 @@ enum
|
||||||
WALLF_CLIP_MIDTEX = 16, // Like the line counterpart, but only for this side.
|
WALLF_CLIP_MIDTEX = 16, // Like the line counterpart, but only for this side.
|
||||||
WALLF_WRAP_MIDTEX = 32, // Like the line counterpart, but only for this side.
|
WALLF_WRAP_MIDTEX = 32, // Like the line counterpart, but only for this side.
|
||||||
WALLF_POLYOBJ = 64, // This wall belongs to a polyobject.
|
WALLF_POLYOBJ = 64, // This wall belongs to a polyobject.
|
||||||
|
WALLF_LIGHT_FOG = 128, // This wall's Light is used even in fog.
|
||||||
};
|
};
|
||||||
|
|
||||||
struct side_t
|
struct side_t
|
||||||
|
|
|
@ -2427,7 +2427,20 @@ void R_StoreWallRange (int start, int stop)
|
||||||
}
|
}
|
||||||
ds_p->light = rw_light;
|
ds_p->light = rw_light;
|
||||||
ds_p->lightstep = rw_lightstep;
|
ds_p->lightstep = rw_lightstep;
|
||||||
ds_p->shade = wallshade;
|
|
||||||
|
// Masked midtextures should get the light level from the sector they reference,
|
||||||
|
// not from the current subsector, which is what the current wallshade value
|
||||||
|
// comes from. We make an exeption for polyobjects, however, since their "home"
|
||||||
|
// sector should be whichever one they move into.
|
||||||
|
if (curline->sidedef->Flags & WALLF_POLYOBJ)
|
||||||
|
{
|
||||||
|
ds_p->shade = wallshade;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ds_p->shade = LIGHT2SHADE(curline->sidedef->GetLightLevel(foggy, curline->frontsector->lightlevel)
|
||||||
|
+ r_actualextralight);
|
||||||
|
}
|
||||||
|
|
||||||
if (ds_p->bFogBoundary || ds_p->maskedtexturecol != -1)
|
if (ds_p->bFogBoundary || ds_p->maskedtexturecol != -1)
|
||||||
{
|
{
|
||||||
|
|
|
@ -519,6 +519,7 @@ int S_AddSoundLump (const char *logicalname, int lump)
|
||||||
newsfx.bUsed = false;
|
newsfx.bUsed = false;
|
||||||
newsfx.bSingular = false;
|
newsfx.bSingular = false;
|
||||||
newsfx.bTentative = false;
|
newsfx.bTentative = false;
|
||||||
|
newsfx.bPlayerSilent = false;
|
||||||
newsfx.link = sfxinfo_t::NO_LINK;
|
newsfx.link = sfxinfo_t::NO_LINK;
|
||||||
newsfx.Rolloff.RolloffType = ROLLOFF_Doom;
|
newsfx.Rolloff.RolloffType = ROLLOFF_Doom;
|
||||||
newsfx.Rolloff.MinDistance = 0;
|
newsfx.Rolloff.MinDistance = 0;
|
||||||
|
@ -1110,10 +1111,14 @@ static void S_AddSNDINFO (int lump)
|
||||||
case SI_PlayerSound: {
|
case SI_PlayerSound: {
|
||||||
// $playersound <player class> <gender> <logical name> <lump name>
|
// $playersound <player class> <gender> <logical name> <lump name>
|
||||||
FString pclass;
|
FString pclass;
|
||||||
int gender, refid;
|
int gender, refid, sfxnum;
|
||||||
|
|
||||||
S_ParsePlayerSoundCommon (sc, pclass, gender, refid);
|
S_ParsePlayerSoundCommon (sc, pclass, gender, refid);
|
||||||
S_AddPlayerSound (pclass, gender, refid, sc.String);
|
sfxnum = S_AddPlayerSound (pclass, gender, refid, sc.String);
|
||||||
|
if (0 == stricmp(sc.String, "dsempty"))
|
||||||
|
{
|
||||||
|
S_sfx[sfxnum].bPlayerSilent = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1665,7 +1670,9 @@ static int S_LookupPlayerSound (int classidx, int gender, FSoundID refid)
|
||||||
// If we're not done parsing SNDINFO yet, assume that the target sound is valid
|
// If we're not done parsing SNDINFO yet, assume that the target sound is valid
|
||||||
if (PlayerClassesIsSorted &&
|
if (PlayerClassesIsSorted &&
|
||||||
(sndnum == 0 ||
|
(sndnum == 0 ||
|
||||||
((S_sfx[sndnum].lumpnum == -1 || S_sfx[sndnum].lumpnum == sfx_empty) && S_sfx[sndnum].link == sfxinfo_t::NO_LINK)))
|
((S_sfx[sndnum].lumpnum == -1 || S_sfx[sndnum].lumpnum == sfx_empty) &&
|
||||||
|
S_sfx[sndnum].link == sfxinfo_t::NO_LINK &&
|
||||||
|
!S_sfx[sndnum].bPlayerSilent)))
|
||||||
{ // This sound is unavailable.
|
{ // This sound is unavailable.
|
||||||
if (ingender != 0)
|
if (ingender != 0)
|
||||||
{ // Try "male"
|
{ // Try "male"
|
||||||
|
|
|
@ -57,6 +57,7 @@ struct sfxinfo_t
|
||||||
WORD bUsed:1;
|
WORD bUsed:1;
|
||||||
WORD bSingular:1;
|
WORD bSingular:1;
|
||||||
WORD bTentative:1;
|
WORD bTentative:1;
|
||||||
|
WORD bPlayerSilent:1; // This player sound is intentionally silent.
|
||||||
|
|
||||||
int LoopStart; // -1 means no specific loop defined
|
int LoopStart; // -1 means no specific loop defined
|
||||||
|
|
||||||
|
|
|
@ -3,5 +3,5 @@
|
||||||
// This file was automatically generated by the
|
// This file was automatically generated by the
|
||||||
// updaterevision tool. Do not edit by hand.
|
// updaterevision tool. Do not edit by hand.
|
||||||
|
|
||||||
#define ZD_SVN_REVISION_STRING "3932"
|
#define ZD_SVN_REVISION_STRING "3938"
|
||||||
#define ZD_SVN_REVISION_NUMBER 3932
|
#define ZD_SVN_REVISION_NUMBER 3938
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue