mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-11-10 23:01:59 +00:00
Merge branch 'master' of https://github.com/rheit/zdoom
This commit is contained in:
commit
625883cb0c
12 changed files with 188 additions and 36 deletions
|
@ -1058,4 +1058,5 @@ userinfo_t::~userinfo_t()
|
||||||
{
|
{
|
||||||
delete pair->Value;
|
delete pair->Value;
|
||||||
}
|
}
|
||||||
|
this->Clear();
|
||||||
}
|
}
|
||||||
|
|
|
@ -325,6 +325,10 @@ struct userinfo_t : TMap<FName,FBaseCVar *>
|
||||||
{
|
{
|
||||||
return *static_cast<FIntCVar *>(*CheckKey(NAME_Gender));
|
return *static_cast<FIntCVar *>(*CheckKey(NAME_Gender));
|
||||||
}
|
}
|
||||||
|
bool GetNoAutostartMap() const
|
||||||
|
{
|
||||||
|
return *static_cast<FBoolCVar *>(*CheckKey(NAME_Wi_NoAutostartMap));
|
||||||
|
}
|
||||||
|
|
||||||
void Reset();
|
void Reset();
|
||||||
int TeamChanged(int team);
|
int TeamChanged(int team);
|
||||||
|
@ -348,6 +352,7 @@ class player_t
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
player_t();
|
player_t();
|
||||||
|
player_t &operator= (const player_t &p);
|
||||||
|
|
||||||
void Serialize (FArchive &arc);
|
void Serialize (FArchive &arc);
|
||||||
size_t FixPointers (const DObject *obj, DObject *replacement);
|
size_t FixPointers (const DObject *obj, DObject *replacement);
|
||||||
|
|
|
@ -53,7 +53,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_Punch)
|
||||||
angle += pr_punch.Random2() << 18;
|
angle += pr_punch.Random2() << 18;
|
||||||
pitch = P_AimLineAttack (self, angle, MELEERANGE, &linetarget);
|
pitch = P_AimLineAttack (self, angle, MELEERANGE, &linetarget);
|
||||||
|
|
||||||
P_LineAttack (self, angle, MELEERANGE, pitch, damage, NAME_Melee, NAME_BulletPuff, true, &linetarget);
|
P_LineAttack (self, angle, MELEERANGE, pitch, damage, NAME_Melee, NAME_BulletPuff, LAF_ISMELEEATTACK, &linetarget);
|
||||||
|
|
||||||
// turn to face target
|
// turn to face target
|
||||||
if (linetarget)
|
if (linetarget)
|
||||||
|
|
|
@ -12,9 +12,16 @@
|
||||||
#include "cmdlib.h"
|
#include "cmdlib.h"
|
||||||
#include "m_misc.h"
|
#include "m_misc.h"
|
||||||
|
|
||||||
#if defined(_WIN32)
|
#if !defined(__APPLE__) && !defined(_WIN32)
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include "i_system.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "version.h" // for GAMENAME
|
#include "version.h" // for GAMENAME
|
||||||
|
|
||||||
|
#if defined(_WIN32)
|
||||||
|
|
||||||
typedef HRESULT (WINAPI *GKFP)(REFKNOWNFOLDERID, DWORD, HANDLE, PWSTR *);
|
typedef HRESULT (WINAPI *GKFP)(REFKNOWNFOLDERID, DWORD, HANDLE, PWSTR *);
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
@ -195,7 +202,7 @@ FString M_GetConfigPath(bool for_reading)
|
||||||
// Construct a user-specific config name
|
// Construct a user-specific config name
|
||||||
if (UseKnownFolders() && GetKnownFolder(CSIDL_APPDATA, FOLDERID_RoamingAppData, true, path))
|
if (UseKnownFolders() && GetKnownFolder(CSIDL_APPDATA, FOLDERID_RoamingAppData, true, path))
|
||||||
{
|
{
|
||||||
path << '/' << GAME_DIR;
|
path += "/" GAME_DIR;
|
||||||
CreatePath(path);
|
CreatePath(path);
|
||||||
path += "/zdoom.ini";
|
path += "/zdoom.ini";
|
||||||
}
|
}
|
||||||
|
@ -534,7 +541,7 @@ FString M_GetCachePath(bool create)
|
||||||
FString path = NicePath("~/.config/zdoom/cache");
|
FString path = NicePath("~/.config/zdoom/cache");
|
||||||
if (create)
|
if (create)
|
||||||
{
|
{
|
||||||
CreatePath(create);
|
CreatePath(path);
|
||||||
}
|
}
|
||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
@ -564,13 +571,13 @@ FString M_GetCajunPath(const char *botfilename)
|
||||||
{
|
{
|
||||||
FString path;
|
FString path;
|
||||||
|
|
||||||
// Check first in ~/.config/zdoom./botfilename.
|
// Check first in ~/.config/zdoom/botfilename.
|
||||||
path = GetUserFile(BOTFILENAME);
|
path = GetUserFile(botfilename);
|
||||||
if (!FileExists(tmp))
|
if (!FileExists(path))
|
||||||
{
|
{
|
||||||
// Then check in SHARE_DIR/botfilename. (Some allowance for Macs
|
// Then check in SHARE_DIR/botfilename.
|
||||||
// should probably be made here.)
|
path = SHARE_DIR;
|
||||||
path = SHARE_DIR BOTFILENAME;
|
path << botfilename;
|
||||||
if (!FileExists(path))
|
if (!FileExists(path))
|
||||||
{
|
{
|
||||||
path = "";
|
path = "";
|
||||||
|
@ -604,7 +611,7 @@ FString M_GetConfigPath(bool for_reading)
|
||||||
|
|
||||||
FString M_GetScreenshotsPath()
|
FString M_GetScreenshotsPath()
|
||||||
{
|
{
|
||||||
return "~/" GAME_DIR "/screenshots/";
|
return NicePath("~/" GAME_DIR "/screenshots/");
|
||||||
}
|
}
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
@ -617,7 +624,7 @@ FString M_GetScreenshotsPath()
|
||||||
|
|
||||||
FString M_GetSavegamesPath()
|
FString M_GetSavegamesPath()
|
||||||
{
|
{
|
||||||
return = "~/" GAME_DIR;
|
return NicePath("~/" GAME_DIR);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -166,6 +166,8 @@ public:
|
||||||
NewWidth = SCREENWIDTH;
|
NewWidth = SCREENWIDTH;
|
||||||
NewHeight = SCREENHEIGHT;
|
NewHeight = SCREENHEIGHT;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
OldWidth = SCREENWIDTH;
|
OldWidth = SCREENWIDTH;
|
||||||
OldHeight = SCREENHEIGHT;
|
OldHeight = SCREENHEIGHT;
|
||||||
OldBits = DisplayBits;
|
OldBits = DisplayBits;
|
||||||
|
@ -176,6 +178,7 @@ public:
|
||||||
SetModesMenu (NewWidth, NewHeight, NewBits);
|
SetModesMenu (NewWidth, NewHeight, NewBits);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return Super::Responder(ev);
|
return Super::Responder(ev);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -348,7 +351,7 @@ void M_InitVideoModesMenu ()
|
||||||
static bool GetSelectedSize (int *width, int *height)
|
static bool GetSelectedSize (int *width, int *height)
|
||||||
{
|
{
|
||||||
FOptionMenuDescriptor *opt = GetVideoModeMenu();
|
FOptionMenuDescriptor *opt = GetVideoModeMenu();
|
||||||
if (opt != NULL)
|
if (opt != NULL && (unsigned)opt->mSelectedItem < opt->mItems.Size())
|
||||||
{
|
{
|
||||||
int line = opt->mSelectedItem;
|
int line = opt->mSelectedItem;
|
||||||
int hsel;
|
int hsel;
|
||||||
|
|
|
@ -568,3 +568,4 @@ xx(NeverSwitchOnPickup)
|
||||||
xx(MoveBob)
|
xx(MoveBob)
|
||||||
xx(StillBob)
|
xx(StillBob)
|
||||||
xx(PlayerClass)
|
xx(PlayerClass)
|
||||||
|
xx(Wi_NoAutostartMap)
|
|
@ -915,7 +915,7 @@ void P_NewChaseDir(AActor * actor)
|
||||||
// MBF's monster_backing option. Made an actor flag instead. Also cleaned the code up to make it readable.
|
// MBF's monster_backing option. Made an actor flag instead. Also cleaned the code up to make it readable.
|
||||||
// Todo: implement the movement logic
|
// Todo: implement the movement logic
|
||||||
AActor *target = actor->target;
|
AActor *target = actor->target;
|
||||||
if (target->health > 0 && !actor->IsFriend(target))
|
if (target->health > 0 && !actor->IsFriend(target) && target != actor->goal)
|
||||||
{ // Live enemy target
|
{ // Live enemy target
|
||||||
|
|
||||||
if (actor->flags3 & MF3_AVOIDMELEE)
|
if (actor->flags3 & MF3_AVOIDMELEE)
|
||||||
|
|
|
@ -1562,9 +1562,21 @@ FUNC(LS_Thing_SetGoal)
|
||||||
ok = true;
|
ok = true;
|
||||||
if (self->flags & MF_SHOOTABLE)
|
if (self->flags & MF_SHOOTABLE)
|
||||||
{
|
{
|
||||||
|
if (self->target == self->goal)
|
||||||
|
{ // Targeting a goal already? -> don't target it anymore.
|
||||||
|
// A_Look will set it to the goal, presuming no real targets
|
||||||
|
// come into view by then.
|
||||||
|
self->target = NULL;
|
||||||
|
}
|
||||||
self->goal = goal;
|
self->goal = goal;
|
||||||
if (arg3 == 0) self->flags5 &=~ MF5_CHASEGOAL;
|
if (arg3 == 0)
|
||||||
else self->flags5 |= MF5_CHASEGOAL;
|
{
|
||||||
|
self->flags5 &= ~MF5_CHASEGOAL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
self->flags5 |= MF5_CHASEGOAL;
|
||||||
|
}
|
||||||
if (self->target == NULL)
|
if (self->target == NULL)
|
||||||
{
|
{
|
||||||
self->reactiontime = arg2 * TICRATE;
|
self->reactiontime = arg2 * TICRATE;
|
||||||
|
|
109
src/p_user.cpp
109
src/p_user.cpp
|
@ -314,6 +314,115 @@ player_t::player_t()
|
||||||
memset (&skill, 0, sizeof(skill));
|
memset (&skill, 0, sizeof(skill));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
player_t &player_t::operator=(const player_t &p)
|
||||||
|
{
|
||||||
|
mo = p.mo;
|
||||||
|
playerstate = p.playerstate;
|
||||||
|
cmd = p.cmd;
|
||||||
|
original_cmd = p.original_cmd;
|
||||||
|
original_oldbuttons = p.original_oldbuttons;
|
||||||
|
// Intentionally not copying userinfo!
|
||||||
|
cls = p.cls;
|
||||||
|
DesiredFOV = p.DesiredFOV;
|
||||||
|
FOV = p.FOV;
|
||||||
|
viewz = p.viewz;
|
||||||
|
viewheight = p.viewheight;
|
||||||
|
deltaviewheight = p.deltaviewheight;
|
||||||
|
bob = p.bob;
|
||||||
|
velx = p.velx;
|
||||||
|
vely = p.vely;
|
||||||
|
centering = p.centering;
|
||||||
|
turnticks = p.turnticks;
|
||||||
|
attackdown = p.attackdown;
|
||||||
|
usedown = p.usedown;
|
||||||
|
oldbuttons = p.oldbuttons;
|
||||||
|
health = p.health;
|
||||||
|
inventorytics = p.inventorytics;
|
||||||
|
CurrentPlayerClass = p.CurrentPlayerClass;
|
||||||
|
backpack = p.backpack;
|
||||||
|
memcpy(frags, &p.frags, sizeof(frags));
|
||||||
|
fragcount = p.fragcount;
|
||||||
|
lastkilltime = p.lastkilltime;
|
||||||
|
multicount = p.multicount;
|
||||||
|
spreecount = p.spreecount;
|
||||||
|
WeaponState = p.WeaponState;
|
||||||
|
ReadyWeapon = p.ReadyWeapon;
|
||||||
|
PendingWeapon = p.PendingWeapon;
|
||||||
|
cheats = p.cheats;
|
||||||
|
timefreezer = p.timefreezer;
|
||||||
|
refire = p.refire;
|
||||||
|
inconsistant = p.inconsistant;
|
||||||
|
waiting = p.waiting;
|
||||||
|
killcount = p.killcount;
|
||||||
|
itemcount = p.itemcount;
|
||||||
|
secretcount = p.secretcount;
|
||||||
|
damagecount = p.damagecount;
|
||||||
|
bonuscount = p.bonuscount;
|
||||||
|
hazardcount = p.hazardcount;
|
||||||
|
poisoncount = p.poisoncount;
|
||||||
|
poisontype = p.poisontype;
|
||||||
|
poisonpaintype = p.poisonpaintype;
|
||||||
|
poisoner = p.poisoner;
|
||||||
|
attacker = p.attacker;
|
||||||
|
extralight = p.extralight;
|
||||||
|
fixedcolormap = p.fixedcolormap;
|
||||||
|
fixedlightlevel = p.fixedlightlevel;
|
||||||
|
memcpy(psprites, &p.psprites, sizeof(psprites));
|
||||||
|
morphTics = p.morphTics;
|
||||||
|
MorphedPlayerClass = p.MorphedPlayerClass;
|
||||||
|
MorphStyle = p.MorphStyle;
|
||||||
|
MorphExitFlash = p.MorphExitFlash;
|
||||||
|
PremorphWeapon = p.PremorphWeapon;
|
||||||
|
chickenPeck = p.chickenPeck;
|
||||||
|
jumpTics = p.jumpTics;
|
||||||
|
respawn_time = p.respawn_time;
|
||||||
|
camera = p.camera;
|
||||||
|
air_finished = p.air_finished;
|
||||||
|
LastDamageType = p.LastDamageType;
|
||||||
|
savedyaw = p.savedyaw;
|
||||||
|
savedpitch = p.savedpitch;
|
||||||
|
angle = p.angle;
|
||||||
|
dest = p.dest;
|
||||||
|
prev = p.prev;
|
||||||
|
enemy = p.enemy;
|
||||||
|
missile = p.missile;
|
||||||
|
mate = p.mate;
|
||||||
|
last_mate = p.last_mate;
|
||||||
|
settings_controller = p.settings_controller;
|
||||||
|
skill = p.skill;
|
||||||
|
t_active = p.t_active;
|
||||||
|
t_respawn = p.t_respawn;
|
||||||
|
t_strafe = p.t_strafe;
|
||||||
|
t_react = p.t_react;
|
||||||
|
t_fight = p.t_fight;
|
||||||
|
t_roam = p.t_roam;
|
||||||
|
t_rocket = p.t_rocket;
|
||||||
|
isbot = p.isbot;
|
||||||
|
first_shot = p.first_shot;
|
||||||
|
sleft = p.sleft;
|
||||||
|
allround = p.allround;
|
||||||
|
oldx = p.oldx;
|
||||||
|
oldy = p.oldy;
|
||||||
|
BlendR = p.BlendR;
|
||||||
|
BlendG = p.BlendG;
|
||||||
|
BlendB = p.BlendB;
|
||||||
|
BlendA = p.BlendA;
|
||||||
|
LogText = p.LogText;
|
||||||
|
MinPitch = p.MinPitch;
|
||||||
|
MaxPitch = p.MaxPitch;
|
||||||
|
crouching = p.crouching;
|
||||||
|
crouchdir = p.crouchdir;
|
||||||
|
crouchfactor = p.crouchfactor;
|
||||||
|
crouchoffset = p.crouchoffset;
|
||||||
|
crouchviewdelta = p.crouchviewdelta;
|
||||||
|
weapons = p.weapons;
|
||||||
|
ConversationNPC = p.ConversationNPC;
|
||||||
|
ConversationPC = p.ConversationPC;
|
||||||
|
ConversationNPCAngle = p.ConversationNPCAngle;
|
||||||
|
ConversationFaceTalker = p.ConversationFaceTalker;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
// This function supplements the pointer cleanup in dobject.cpp, because
|
// This function supplements the pointer cleanup in dobject.cpp, because
|
||||||
// player_t is not derived from DObject. (I tried it, and DestroyScan was
|
// player_t is not derived from DObject. (I tried it, and DestroyScan was
|
||||||
// unable to properly determine the player object's type--possibly
|
// unable to properly determine the player object's type--possibly
|
||||||
|
|
|
@ -1404,7 +1404,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CustomPunch)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!PuffType) PuffType = PClass::FindClass(NAME_BulletPuff);
|
if (!PuffType) PuffType = PClass::FindClass(NAME_BulletPuff);
|
||||||
int puffFlags = LAF_ISMELEEATTACK | (flags & CPF_NORANDOMPUFFZ)? LAF_NORANDOMPUFFZ : 0;
|
int puffFlags = LAF_ISMELEEATTACK | ((flags & CPF_NORANDOMPUFFZ) ? LAF_NORANDOMPUFFZ : 0);
|
||||||
|
|
||||||
P_LineAttack (self, angle, Range, pitch, Damage, NAME_Melee, PuffType, puffFlags, &linetarget, &actualdamage);
|
P_LineAttack (self, angle, Range, pitch, Damage, NAME_Melee, PuffType, puffFlags, &linetarget, &actualdamage);
|
||||||
|
|
||||||
|
@ -1426,7 +1426,6 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CustomPunch)
|
||||||
|
|
||||||
if (flags & CPF_PULLIN) self->flags |= MF_JUSTATTACKED;
|
if (flags & CPF_PULLIN) self->flags |= MF_JUSTATTACKED;
|
||||||
if (flags & CPF_DAGGER) P_DaggerAlert (self, linetarget);
|
if (flags & CPF_DAGGER) P_DaggerAlert (self, linetarget);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -91,12 +91,10 @@ const char *GetVersionString();
|
||||||
#define FORUM_URL "http://forum.zdoom.org"
|
#define FORUM_URL "http://forum.zdoom.org"
|
||||||
#define BUGS_FORUM_URL "http://forum.zdoom.org/index.php?c=3"
|
#define BUGS_FORUM_URL "http://forum.zdoom.org/index.php?c=3"
|
||||||
|
|
||||||
#ifdef __unix__
|
#if defined(__APPLE__) || defined(_WIN32)
|
||||||
#define GAME_DIR ".config/zdoom"
|
|
||||||
#elif defined(__APPLE__)
|
|
||||||
#define GAME_DIR GAMENAME
|
#define GAME_DIR GAMENAME
|
||||||
#else
|
#else
|
||||||
#define GAME_DIR "zdoom"
|
#define GAME_DIR ".config/zdoom"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -62,7 +62,7 @@ typedef enum
|
||||||
|
|
||||||
CVAR (Bool, wi_percents, true, CVAR_ARCHIVE)
|
CVAR (Bool, wi_percents, true, CVAR_ARCHIVE)
|
||||||
CVAR (Bool, wi_showtotaltime, true, CVAR_ARCHIVE)
|
CVAR (Bool, wi_showtotaltime, true, CVAR_ARCHIVE)
|
||||||
CVAR (Bool, wi_noautostartmap, false, CVAR_ARCHIVE)
|
CVAR (Bool, wi_noautostartmap, false, CVAR_USERINFO|CVAR_ARCHIVE)
|
||||||
|
|
||||||
|
|
||||||
void WI_loadData ();
|
void WI_loadData ();
|
||||||
|
@ -1098,9 +1098,26 @@ void WI_updateNoState ()
|
||||||
{
|
{
|
||||||
WI_updateAnimatedBack();
|
WI_updateAnimatedBack();
|
||||||
|
|
||||||
|
if (acceleratestage)
|
||||||
|
{
|
||||||
|
cnt = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
bool noauto = noautostartmap;
|
||||||
|
|
||||||
if (!wi_noautostartmap && !noautostartmap) cnt--;
|
for (int i = 0; !noauto && i < MAXPLAYERS; ++i)
|
||||||
if (acceleratestage) cnt=0;
|
{
|
||||||
|
if (playeringame[i])
|
||||||
|
{
|
||||||
|
noauto |= players[i].userinfo.GetNoAutostartMap();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!noauto)
|
||||||
|
{
|
||||||
|
cnt--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (cnt == 0)
|
if (cnt == 0)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue