mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-14 08:31:23 +00:00
Merge branch 'master' of https://github.com/rheit/zdoom
This commit is contained in:
commit
aad509c800
11 changed files with 81 additions and 15 deletions
|
@ -367,7 +367,7 @@ int FIWadManager::CheckIWAD (const char *doomwaddir, WadStuff *wads)
|
||||||
// Under UNIX OSes, the search path is:
|
// Under UNIX OSes, the search path is:
|
||||||
// 1. Current directory
|
// 1. Current directory
|
||||||
// 2. $DOOMWADDIR
|
// 2. $DOOMWADDIR
|
||||||
// 3. $HOME/.zdoom
|
// 3. $HOME/.config/zdoom
|
||||||
// 4. The share directory defined at compile time (/usr/local/share/zdoom)
|
// 4. The share directory defined at compile time (/usr/local/share/zdoom)
|
||||||
//
|
//
|
||||||
// The search path can be altered by editing the IWADSearch.Directories
|
// The search path can be altered by editing the IWADSearch.Directories
|
||||||
|
@ -516,9 +516,19 @@ int FIWadManager::IdentifyVersion (TArray<FString> &wadfiles, const char *iwad,
|
||||||
I_FatalError ("Cannot find a game IWAD (doom.wad, doom2.wad, heretic.wad, etc.).\n"
|
I_FatalError ("Cannot find a game IWAD (doom.wad, doom2.wad, heretic.wad, etc.).\n"
|
||||||
"Did you install ZDoom properly? You can do either of the following:\n"
|
"Did you install ZDoom properly? You can do either of the following:\n"
|
||||||
"\n"
|
"\n"
|
||||||
|
#if defined(_WIN32)
|
||||||
"1. Place one or more of these wads in the same directory as ZDoom.\n"
|
"1. Place one or more of these wads in the same directory as ZDoom.\n"
|
||||||
"2. Edit your zdoom-username.ini and add the directories of your iwads\n"
|
"2. Edit your zdoom-username.ini and add the directories of your iwads\n"
|
||||||
"to the list beneath [IWADSearch.Directories]");
|
"to the list beneath [IWADSearch.Directories]");
|
||||||
|
#elif defined(__APPLE__)
|
||||||
|
"1. Place one or more of these wads in ~/Library/Application Support/zdoom/\n"
|
||||||
|
"2. Edit your ~/Library/Preferences/zdoom.ini and add the directories\n"
|
||||||
|
"of your iwads to the list beneath [IWADSearch.Directories]");
|
||||||
|
#else
|
||||||
|
"1. Place one or more of these wads in ~/.config/zdoom/.\n"
|
||||||
|
"2. Edit your ~/.config/zdoom/zdoom.ini and add the directories of your\n"
|
||||||
|
"iwads to the list beneath [IWADSearch.Directories]");
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
pickwad = 0;
|
pickwad = 0;
|
||||||
|
|
|
@ -1048,3 +1048,14 @@ CCMD (playerinfo)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
userinfo_t::~userinfo_t()
|
||||||
|
{
|
||||||
|
TMapIterator<FName, FBaseCVar *> it(*this);
|
||||||
|
TMap<FName, FBaseCVar *>::Pair *pair;
|
||||||
|
|
||||||
|
while (it.NextPair(pair))
|
||||||
|
{
|
||||||
|
delete pair->Value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -260,6 +260,8 @@ enum
|
||||||
|
|
||||||
struct userinfo_t : TMap<FName,FBaseCVar *>
|
struct userinfo_t : TMap<FName,FBaseCVar *>
|
||||||
{
|
{
|
||||||
|
~userinfo_t();
|
||||||
|
|
||||||
int GetAimDist() const
|
int GetAimDist() const
|
||||||
{
|
{
|
||||||
if (dmflags2 & DF2_NOAUTOAIM)
|
if (dmflags2 & DF2_NOAUTOAIM)
|
||||||
|
|
|
@ -898,7 +898,7 @@ IMPLEMENT_CLASS(DSaveMenu)
|
||||||
DSaveMenu::DSaveMenu(DMenu *parent, FListMenuDescriptor *desc)
|
DSaveMenu::DSaveMenu(DMenu *parent, FListMenuDescriptor *desc)
|
||||||
: DLoadSaveMenu(parent, desc)
|
: DLoadSaveMenu(parent, desc)
|
||||||
{
|
{
|
||||||
strcpy (NewSaveNode.Title, "<New Save Game>");
|
strcpy (NewSaveNode.Title, GStrings["NEWSAVE"]);
|
||||||
NewSaveNode.bNoDelete = true;
|
NewSaveNode.bNoDelete = true;
|
||||||
SaveGames.Insert(0, &NewSaveNode);
|
SaveGames.Insert(0, &NewSaveNode);
|
||||||
TopItem = 0;
|
TopItem = 0;
|
||||||
|
|
|
@ -256,11 +256,20 @@ static void CopyPlayer (player_t *dst, player_t *src, const char *name)
|
||||||
{
|
{
|
||||||
// The userinfo needs to be saved for real players, but it
|
// The userinfo needs to be saved for real players, but it
|
||||||
// needs to come from the save for bots.
|
// needs to come from the save for bots.
|
||||||
userinfo_t uibackup = dst->userinfo;
|
userinfo_t uibackup;
|
||||||
|
userinfo_t uibackup2;
|
||||||
|
|
||||||
|
uibackup.TransferFrom(dst->userinfo);
|
||||||
|
uibackup2.TransferFrom(src->userinfo);
|
||||||
|
|
||||||
int chasecam = dst->cheats & CF_CHASECAM; // Remember the chasecam setting
|
int chasecam = dst->cheats & CF_CHASECAM; // Remember the chasecam setting
|
||||||
bool attackdown = dst->attackdown;
|
bool attackdown = dst->attackdown;
|
||||||
bool usedown = dst->usedown;
|
bool usedown = dst->usedown;
|
||||||
*dst = *src;
|
|
||||||
|
|
||||||
|
dst->~player_t(); // ensure that the userinfo in dst does not contain anything before copying everything over.
|
||||||
|
*dst = *src; // To avoid memory leaks at this point the userinfo in src must be empty which is taken care of by the TransferFrom call above.
|
||||||
|
|
||||||
dst->cheats |= chasecam;
|
dst->cheats |= chasecam;
|
||||||
|
|
||||||
if (dst->isbot)
|
if (dst->isbot)
|
||||||
|
@ -276,10 +285,11 @@ static void CopyPlayer (player_t *dst, player_t *src, const char *name)
|
||||||
}
|
}
|
||||||
bglobal.botnum++;
|
bglobal.botnum++;
|
||||||
bglobal.botingame[dst - players] = true;
|
bglobal.botingame[dst - players] = true;
|
||||||
|
dst->userinfo.TransferFrom(uibackup2);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dst->userinfo = uibackup;
|
dst->userinfo.TransferFrom(uibackup);
|
||||||
}
|
}
|
||||||
// Validate the skin
|
// Validate the skin
|
||||||
dst->userinfo.SkinNumChanged(R_FindSkin(skins[dst->userinfo.GetSkin()].name, dst->CurrentPlayerClass));
|
dst->userinfo.SkinNumChanged(R_FindSkin(skins[dst->userinfo.GetSkin()].name, dst->CurrentPlayerClass));
|
||||||
|
|
|
@ -639,12 +639,21 @@ void P_SectorDamage(int tag, int amount, FName type, const PClass *protectClass,
|
||||||
{
|
{
|
||||||
next = actor->snext;
|
next = actor->snext;
|
||||||
// Only affect actors touching the 3D floor
|
// Only affect actors touching the 3D floor
|
||||||
if (actor->z + actor->height > sec->floorplane.ZatPoint(actor->x, actor->y))
|
fixed_t z1 = sec->floorplane.ZatPoint(actor->x, actor->y);
|
||||||
|
fixed_t z2 = sec->ceilingplane.ZatPoint(actor->x, actor->y);
|
||||||
|
if (z2 < z1)
|
||||||
|
{
|
||||||
|
// Account for Vavoom-style 3D floors
|
||||||
|
fixed_t zz = z1;
|
||||||
|
z1 = z2;
|
||||||
|
z2 = zz;
|
||||||
|
}
|
||||||
|
if (actor->z + actor->height > z1)
|
||||||
{
|
{
|
||||||
// If DAMAGE_IN_AIR is used, anything not beneath the 3D floor will be
|
// If DAMAGE_IN_AIR is used, anything not beneath the 3D floor will be
|
||||||
// damaged (so, anything touching it or above it). Other 3D floors between
|
// damaged (so, anything touching it or above it). Other 3D floors between
|
||||||
// the actor and this one will not stop this effect.
|
// the actor and this one will not stop this effect.
|
||||||
if ((flags & DAMAGE_IN_AIR) || actor->z <= sec->ceilingplane.ZatPoint(actor->x, actor->y))
|
if ((flags & DAMAGE_IN_AIR) || actor->z <= z2)
|
||||||
{
|
{
|
||||||
// Here we pass the DAMAGE_IN_AIR flag to disable the floor check, since it
|
// Here we pass the DAMAGE_IN_AIR flag to disable the floor check, since it
|
||||||
// only works with the real sector's floor. We did the appropriate height checks
|
// only works with the real sector's floor. We did the appropriate height checks
|
||||||
|
|
|
@ -309,7 +309,6 @@ player_t::player_t()
|
||||||
ConversationFaceTalker(0)
|
ConversationFaceTalker(0)
|
||||||
{
|
{
|
||||||
memset (&cmd, 0, sizeof(cmd));
|
memset (&cmd, 0, sizeof(cmd));
|
||||||
memset (&userinfo, 0, sizeof(userinfo));
|
|
||||||
memset (frags, 0, sizeof(frags));
|
memset (frags, 0, sizeof(frags));
|
||||||
memset (psprites, 0, sizeof(psprites));
|
memset (psprites, 0, sizeof(psprites));
|
||||||
memset (&skill, 0, sizeof(skill));
|
memset (&skill, 0, sizeof(skill));
|
||||||
|
|
|
@ -174,7 +174,15 @@ void R_InitPlanes ()
|
||||||
void R_DeinitPlanes ()
|
void R_DeinitPlanes ()
|
||||||
{
|
{
|
||||||
fakeActive = 0;
|
fakeActive = 0;
|
||||||
R_ClearPlanes(false);
|
|
||||||
|
// do not use R_ClearPlanes because at this point the screen pointer is no longer valid.
|
||||||
|
for (int i = 0; i <= MAXVISPLANES; i++) // new code -- killough
|
||||||
|
{
|
||||||
|
for (*freehead = visplanes[i], visplanes[i] = NULL; *freehead; )
|
||||||
|
{
|
||||||
|
freehead = &(*freehead)->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
for (visplane_t *pl = freetail; pl != NULL; )
|
for (visplane_t *pl = freetail; pl != NULL; )
|
||||||
{
|
{
|
||||||
visplane_t *next = pl->next;
|
visplane_t *next = pl->next;
|
||||||
|
@ -490,7 +498,7 @@ void R_MapColoredPlane (int y, int x1)
|
||||||
|
|
||||||
void R_ClearPlanes (bool fullclear)
|
void R_ClearPlanes (bool fullclear)
|
||||||
{
|
{
|
||||||
int i, max;
|
int i;
|
||||||
|
|
||||||
// Don't clear fake planes if not doing a full clear.
|
// Don't clear fake planes if not doing a full clear.
|
||||||
if (!fullclear)
|
if (!fullclear)
|
||||||
|
@ -516,7 +524,6 @@ void R_ClearPlanes (bool fullclear)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
max = fullclear ? MAXVISPLANES : MAXVISPLANES-1;
|
|
||||||
for (i = 0; i <= MAXVISPLANES; i++) // new code -- killough
|
for (i = 0; i <= MAXVISPLANES; i++) // new code -- killough
|
||||||
{
|
{
|
||||||
for (*freehead = visplanes[i], visplanes[i] = NULL; *freehead; )
|
for (*freehead = visplanes[i], visplanes[i] = NULL; *freehead; )
|
||||||
|
@ -524,10 +531,7 @@ void R_ClearPlanes (bool fullclear)
|
||||||
freehead = &(*freehead)->next;
|
freehead = &(*freehead)->next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (fullclear)
|
|
||||||
{
|
|
||||||
// opening / clipping determination
|
// opening / clipping determination
|
||||||
clearbufshort (floorclip, viewwidth, viewheight);
|
clearbufshort (floorclip, viewwidth, viewheight);
|
||||||
// [RH] clip ceiling to console bottom
|
// [RH] clip ceiling to console bottom
|
||||||
|
|
|
@ -70,6 +70,7 @@
|
||||||
#include "m_bbox.h"
|
#include "m_bbox.h"
|
||||||
#include "r_data/r_translate.h"
|
#include "r_data/r_translate.h"
|
||||||
#include "p_trace.h"
|
#include "p_trace.h"
|
||||||
|
#include "gstrings.h"
|
||||||
|
|
||||||
|
|
||||||
static FRandom pr_camissile ("CustomActorfire");
|
static FRandom pr_camissile ("CustomActorfire");
|
||||||
|
@ -2133,6 +2134,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Print)
|
||||||
ACTION_PARAM_FLOAT(time, 1);
|
ACTION_PARAM_FLOAT(time, 1);
|
||||||
ACTION_PARAM_NAME(fontname, 2);
|
ACTION_PARAM_NAME(fontname, 2);
|
||||||
|
|
||||||
|
if (text[0] == '$') text = GStrings(text+1);
|
||||||
if (self->CheckLocalView (consoleplayer) ||
|
if (self->CheckLocalView (consoleplayer) ||
|
||||||
(self->target!=NULL && self->target->CheckLocalView (consoleplayer)))
|
(self->target!=NULL && self->target->CheckLocalView (consoleplayer)))
|
||||||
{
|
{
|
||||||
|
@ -2171,6 +2173,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_PrintBold)
|
||||||
float saved = con_midtime;
|
float saved = con_midtime;
|
||||||
FFont *font = NULL;
|
FFont *font = NULL;
|
||||||
|
|
||||||
|
if (text[0] == '$') text = GStrings(text+1);
|
||||||
if (fontname != NAME_None)
|
if (fontname != NAME_None)
|
||||||
{
|
{
|
||||||
font = V_GetFont(fontname);
|
font = V_GetFont(fontname);
|
||||||
|
@ -2196,11 +2199,13 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Log)
|
||||||
{
|
{
|
||||||
ACTION_PARAM_START(1);
|
ACTION_PARAM_START(1);
|
||||||
ACTION_PARAM_STRING(text, 0);
|
ACTION_PARAM_STRING(text, 0);
|
||||||
|
|
||||||
|
if (text[0] == '$') text = GStrings(text+1);
|
||||||
Printf("%s\n", text);
|
Printf("%s\n", text);
|
||||||
ACTION_SET_RESULT(false); // Prints should never set the result for inventory state chains!
|
ACTION_SET_RESULT(false); // Prints should never set the result for inventory state chains!
|
||||||
}
|
}
|
||||||
|
|
||||||
//===========================================================================
|
//=========================================================================
|
||||||
//
|
//
|
||||||
// A_LogInt
|
// A_LogInt
|
||||||
//
|
//
|
||||||
|
|
|
@ -361,3 +361,18 @@ F481922F4881F74760F3C0437FD5EDD0 // map03
|
||||||
// still set when returning to the origin map.
|
// still set when returning to the origin map.
|
||||||
linkfrozenprops
|
linkfrozenprops
|
||||||
}
|
}
|
||||||
|
|
||||||
|
D62DCA9EC226DE49108D5DD9271F7631 // Cheogsh 2 map04
|
||||||
|
{
|
||||||
|
// Stuff in megasphere cage is positioned too low
|
||||||
|
setthingz 1640 528
|
||||||
|
setthingz 1641 528
|
||||||
|
setthingz 1642 528
|
||||||
|
setthingz 1643 528
|
||||||
|
setthingz 1644 528
|
||||||
|
setthingz 1645 528
|
||||||
|
setthingz 1646 528
|
||||||
|
setthingz 1647 528
|
||||||
|
setthingz 1648 528
|
||||||
|
setthingz 1649 528
|
||||||
|
}
|
|
@ -112,6 +112,7 @@ PD_YELLOWCO = "You need a yellow card to activate this object";
|
||||||
PD_BLUESO = "You need a blue skull to activate this object";
|
PD_BLUESO = "You need a blue skull to activate this object";
|
||||||
PD_REDSO = "You need a red skull to activate this object";
|
PD_REDSO = "You need a red skull to activate this object";
|
||||||
PD_YELLOWSO = "You need a yellow skull to activate this object";
|
PD_YELLOWSO = "You need a yellow skull to activate this object";
|
||||||
|
NEWSAVE = "<New Save Game>";
|
||||||
GGSAVED = "game saved.";
|
GGSAVED = "game saved.";
|
||||||
HUSTR_MSGU = "[Message unsent]";
|
HUSTR_MSGU = "[Message unsent]";
|
||||||
PICKUP_PISTOL_DROPPED = "Picked up a pistol.";
|
PICKUP_PISTOL_DROPPED = "Picked up a pistol.";
|
||||||
|
|
Loading…
Reference in a new issue