mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-11 07:12:02 +00:00
Merge branch 'master' of https://github.com/rheit/zdoom
This commit is contained in:
commit
fc246be03e
12 changed files with 47 additions and 12 deletions
|
@ -1999,7 +1999,7 @@ void G_DoLoadGame ()
|
|||
{
|
||||
// delete the resource file if anything goes wrong in here.
|
||||
if (resfile != nullptr) delete resfile;
|
||||
return;
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1512,7 +1512,11 @@ void G_UnSnapshotLevel (bool hubLoad)
|
|||
if (level.info->isValid())
|
||||
{
|
||||
FSerializer arc;
|
||||
if (!arc.OpenReader(&level.info->Snapshot)) return;
|
||||
if (!arc.OpenReader(&level.info->Snapshot))
|
||||
{
|
||||
I_Error("Failed to load savegame");
|
||||
return;
|
||||
}
|
||||
|
||||
G_SerializeLevel (arc, hubLoad);
|
||||
level.FromSnapshot = true;
|
||||
|
|
|
@ -23,6 +23,8 @@
|
|||
#include "serializer.h"
|
||||
|
||||
static FRandom pr_restore ("RestorePos");
|
||||
CVAR(Bool, r_pickupflash, true, CVAR_ARCHIVE);
|
||||
|
||||
|
||||
IMPLEMENT_CLASS(PClassInventory)
|
||||
|
||||
|
@ -1089,7 +1091,7 @@ void AInventory::Touch (AActor *toucher)
|
|||
if (player != NULL)
|
||||
{
|
||||
PlayPickupSound (player->mo);
|
||||
if (!(ItemFlags & IF_NOSCREENFLASH))
|
||||
if (!(ItemFlags & IF_NOSCREENFLASH) && r_pickupflash)
|
||||
{
|
||||
player->bonuscount = BONUSADD;
|
||||
}
|
||||
|
|
|
@ -214,6 +214,12 @@ DCeiling::DCeiling (sector_t *sec, double speed1, double speed2, int silent)
|
|||
m_Speed = m_Speed1 = speed1;
|
||||
m_Speed2 = speed2;
|
||||
m_Silent = silent;
|
||||
m_BottomHeight = 0;
|
||||
m_TopHeight = 0;
|
||||
m_Direction = 0;
|
||||
m_Texture = FNullTextureID();
|
||||
m_Tag = 0;
|
||||
m_OldDirection = 0;
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
|
|
|
@ -685,11 +685,30 @@ bool AActor::TakeInventory(PClassActor *itemclass, int amount, bool fromdecorate
|
|||
|
||||
void AActor::DestroyAllInventory ()
|
||||
{
|
||||
while (Inventory != NULL)
|
||||
AInventory *inv = Inventory;
|
||||
if (inv != nullptr)
|
||||
{
|
||||
AInventory *item = Inventory;
|
||||
item->Destroy ();
|
||||
assert (item != Inventory);
|
||||
TArray<AInventory *> toDelete;
|
||||
|
||||
// Delete the list in a two stage approach.
|
||||
// This is necessary because an item may destroy another item (e.g. sister weapons)
|
||||
// which would break the list and leave parts of it undestroyed, maybe doing bad things later.
|
||||
while (inv != nullptr)
|
||||
{
|
||||
toDelete.Push(inv);
|
||||
AInventory *item = inv->Inventory;
|
||||
inv->Inventory = nullptr;
|
||||
inv->Owner = nullptr;
|
||||
inv = item;
|
||||
}
|
||||
for (auto p : toDelete)
|
||||
{
|
||||
// the item may already have been deleted by another one, so check this here to avoid problems.
|
||||
if (!(p->ObjectFlags & OF_EuthanizeMe))
|
||||
{
|
||||
p->Destroy();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -657,7 +657,7 @@ DWORD *HMISong::SendCommand (DWORD *events, TrackInfo *track, DWORD delay, ptrdi
|
|||
if (event == MIDI_SYSEX || event == MIDI_SYSEXEND)
|
||||
{
|
||||
len = ReadVarLen(track);
|
||||
if (len >= (MAX_EVENTS-1)*3*4)
|
||||
if (len >= (MAX_EVENTS-1)*3*4 || DeviceType == MDEV_SNDSYS)
|
||||
{ // This message will never fit. Throw it away.
|
||||
track->TrackP += len;
|
||||
}
|
||||
|
|
|
@ -598,7 +598,7 @@ DWORD *MIDISong2::SendCommand (DWORD *events, TrackInfo *track, DWORD delay, ptr
|
|||
if (event == MIDI_SYSEX || event == MIDI_SYSEXEND)
|
||||
{
|
||||
len = track->ReadVarLen();
|
||||
if (len >= (MAX_EVENTS-1)*3*4)
|
||||
if (len >= (MAX_EVENTS-1)*3*4 || DeviceType == MDEV_SNDSYS)
|
||||
{ // This message will never fit. Throw it away.
|
||||
track->TrackP += len;
|
||||
}
|
||||
|
|
|
@ -528,7 +528,7 @@ DWORD *XMISong::SendCommand (DWORD *events, EventSource due, DWORD delay, ptrdif
|
|||
if (event == MIDI_SYSEX || event == MIDI_SYSEXEND)
|
||||
{
|
||||
len = track->ReadVarLen();
|
||||
if (len >= (MAX_EVENTS-1)*3*4)
|
||||
if (len >= (MAX_EVENTS-1)*3*4 || DeviceType == MDEV_SNDSYS)
|
||||
{ // This message will never fit. Throw it away.
|
||||
track->EventP += len;
|
||||
}
|
||||
|
|
|
@ -162,11 +162,11 @@ ZCC_OpProto *ZCC_OpInfoType::FindBestProto(
|
|||
// [[float32 (op) int]] will choose the integer version instead of the floating point
|
||||
// version, which we do not want.
|
||||
int test_dist1 = dist1, test_dist2 = dist2;
|
||||
if (routes[0][cur_route1][0]->ConvertConstant == FtoD)
|
||||
if (test_dist1 > 0 && routes[0][cur_route1][0]->ConvertConstant == FtoD)
|
||||
{
|
||||
test_dist1--;
|
||||
}
|
||||
if (routes[1][cur_route2][0]->ConvertConstant == FtoD)
|
||||
if (test_dist2 > 0 && routes[1][cur_route2][0]->ConvertConstant == FtoD)
|
||||
{
|
||||
test_dist2--;
|
||||
}
|
||||
|
|
|
@ -75,12 +75,14 @@ ACTOR PointPusher
|
|||
{
|
||||
+NOBLOCKMAP
|
||||
+INVISIBLE
|
||||
+NOCLIP
|
||||
}
|
||||
|
||||
ACTOR PointPuller
|
||||
{
|
||||
+NOBLOCKMAP
|
||||
+INVISIBLE
|
||||
+NOCLIP
|
||||
}
|
||||
|
||||
// Bloody gibs -------------------------------------------------------------
|
||||
|
|
|
@ -1803,6 +1803,7 @@ DSPLYMNU_DIMCOLOR = "Dim color";
|
|||
DSPLYMNU_MOVEBOB = "View bob amount while moving";
|
||||
DSPLYMNU_STILLBOB = "View bob amount while not moving";
|
||||
DSPLYMNU_BOBSPEED = "Weapon bob speed";
|
||||
DSPLYMNU_PIFLASH = "Show pickup screen flash";
|
||||
|
||||
// HUD Options
|
||||
HUDMNU_TITLE = "HUD Options";
|
||||
|
|
|
@ -688,6 +688,7 @@ OptionMenu "VideoOptions"
|
|||
Option "$DSPLYMNU_STRETCHSKY", "r_stretchsky", "OnOff"
|
||||
Option "$DSPLYMNU_DRAWFUZZ", "r_drawfuzz", "Fuzziness"
|
||||
Slider "$DSPLYMNU_TRANSSOUL", "transsouls", 0.25, 1.0, 0.05, 2
|
||||
Option "$DSPLYMNU_PIFLASH", "r_pickupflash", "OnOff"
|
||||
Option "$DSPLYMNU_FAKECONTRAST", "r_fakecontrast", "Contrast"
|
||||
Option "$DSPLYMNU_ROCKETTRAILS", "cl_rockettrails", "RocketTrailTypes"
|
||||
Option "$DSPLYMNU_BLOODTYPE", "cl_bloodtype", "BloodTypes"
|
||||
|
|
Loading…
Reference in a new issue