This commit is contained in:
Marcus Minhorst 2025-08-23 09:20:24 -04:00 committed by Rachael Alexanderson
commit 8352039e3f
31 changed files with 611 additions and 684 deletions

View file

@ -1,11 +1,11 @@
#ifndef __SNDINT_H
#define __SNDINT_H
#include <stdio.h>
#include <stdint.h>
#include <stdio.h>
#include "vectors.h"
#include "tflags.h"
#include "vectors.h"
enum EChanFlag
{
@ -146,5 +146,4 @@ struct FISoundChannel
void S_SetSoundPaused(int state);
#endif

View file

@ -5,6 +5,7 @@
**---------------------------------------------------------------------------
** Copyright 1998-2016 Randy Heit
** Copyright 2002-2019 Christoph Oelckers
** Copyright 2017-2025 GZDoom Maintainers and Contributors
** All rights reserved.
**
** Redistribution and use in source and binary forms, with or without
@ -36,15 +37,14 @@
#include <stdio.h>
#include <stdlib.h>
#include "s_soundinternal.h"
#include "m_swap.h"
#include "superfasthash.h"
#include "s_music.h"
#include "m_random.h"
#include "printf.h"
#include "c_cvars.h"
#include "gamestate.h"
#include "i_soundinternal.h"
#include "m_random.h"
#include "m_swap.h"
#include "printf.h"
#include "s_music.h"
#include "s_soundinternal.h"
CVARD(Bool, snd_enabled, true, CVAR_ARCHIVE | CVAR_GLOBALCONFIG, "enables/disables sound effects")
CVAR(Bool, i_soundinbackground, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
@ -1009,7 +1009,6 @@ void SoundEngine::RelinkSound (int sourcetype, const void *from, const void *to,
}
}
//==========================================================================
//
// S_ChangeSoundVolume
@ -1450,7 +1449,6 @@ void SoundEngine::Reset()
RestoreEvictedChannels();
}
//==========================================================================
//
// S_FindSound
@ -1560,7 +1558,6 @@ FSoundID SoundEngine::AddSoundLump(const char* logicalname, int lump, int Curren
return id;
}
//==========================================================================
//
// S_FindSoundTentative
@ -1581,7 +1578,6 @@ FSoundID SoundEngine::FindSoundTentative(const char* name, int nearlimit)
return id;
}
//==========================================================================
//
// S_CacheRandomSound
@ -1694,7 +1690,6 @@ void SoundEngine::HashSounds()
}
S_rnd.ShrinkToFit();
}
void SoundEngine::AddRandomSound(FSoundID Owner, TArray<FSoundID> list)
@ -1728,7 +1723,6 @@ void S_SoundReset()
#include "i_net.h"
#include "i_interface.h"
CCMD(cachesound)
{
if (argv.argc() < 2)
@ -1746,7 +1740,6 @@ CCMD(cachesound)
}
}
CCMD(listsoundchannels)
{
Printf("%s", soundEngine->ListSoundChannels().GetChars());
@ -1844,8 +1837,6 @@ void S_SetSoundPaused(int state)
}
}
CCMD(snd_status)
{
GSnd->PrintStatus();
@ -1876,4 +1867,3 @@ ADD_STAT(sound)
return GSnd->GatherStats();
}

View file

@ -1,8 +1,11 @@
/*
** m_joy.cpp
**
** Cross-platform joystick/gamepad management
**
**---------------------------------------------------------------------------
** Copyright 2005-2016 Randy Heit
** Copyright 2017-2025 GZDoom Maintainers and Contributors
** All rights reserved.
**
** Redistribution and use in source and binary forms, with or without
@ -30,17 +33,22 @@
**---------------------------------------------------------------------------
**
*/
// HEADER FILES ------------------------------------------------------------
#include <math.h>
#include "c_dispatch.h"
#include "vectors.h"
#include "m_joy.h"
#include "configfile.h"
#include "i_interface.h"
#include "d_eventbase.h"
#include <math.h>
#include "c_cvars.h"
#include "c_dispatch.h"
#include "cmdlib.h"
#include "configfile.h"
#include "d_eventbase.h"
#include "i_interface.h"
#include "name.h"
#include "printf.h"
#include "vectors.h"
#include "zstring.h"
// MACROS ------------------------------------------------------------------

View file

@ -1,11 +1,9 @@
#ifndef M_JOY_H
#define M_JOY_H
#include "basics.h"
#include "keydef.h"
#include "tarray.h"
#include "c_cvars.h"
#include "keydef.h"
#include "tarray.h"
union CubicBezier {
struct {

View file

@ -1,9 +1,11 @@
/*
** joystickmenu.cpp
**
** The joystick configuration menus
**
**---------------------------------------------------------------------------
** Copyright 2010 Christoph Oelckers
** Copyright 2017-2025 GZDoom Maintainers and Contributors
** All rights reserved.
**
** Redistribution and use in source and binary forms, with or without
@ -32,8 +34,8 @@
**
*/
#include "menu.h"
#include "m_joy.h"
#include "menu.h"
#include "vm.h"
static TArray<IJoystickConfig *> Joysticks;
@ -187,7 +189,6 @@ DEFINE_ACTION_FUNCTION(IJoystickConfig, SetEnabledInBackground)
return 0;
}
DEFINE_ACTION_FUNCTION(IJoystickConfig, Reset)
{
PARAM_SELF_STRUCT_PROLOGUE(IJoystickConfig);
@ -195,7 +196,6 @@ DEFINE_ACTION_FUNCTION(IJoystickConfig, Reset)
return 0;
}
void UpdateJoystickMenu(IJoystickConfig *selected)
{
DMenuDescriptor **desc = MenuDescriptors.CheckKey(NAME_JoystickOptions);
@ -271,4 +271,3 @@ void UpdateJoystickMenu(IJoystickConfig *selected)
}
}
}

View file

@ -1,8 +1,11 @@
/*
** i_input.cpp
**
** Handles input from keyboard, mouse, and joystick
**
**---------------------------------------------------------------------------
** Copyright 2005-2016 Randy Heit
** Copyright 2017-2025 GZDoom Maintainers and Contributors
** All rights reserved.
**
** Redistribution and use in source and binary forms, with or without
@ -30,25 +33,22 @@
**---------------------------------------------------------------------------
**
*/
#include <SDL.h>
#include <SDL_events.h>
#include "i_input.h"
#include "c_cvars.h"
#include "dobject.h"
#include "m_argv.h"
#include "m_joy.h"
#include "v_video.h"
#include "d_gui.h"
#include "c_buttons.h"
#include "c_console.h"
#include "c_dispatch.h"
#include "c_cvars.h"
#include "d_gui.h"
#include "dikeys.h"
#include "utf8.h"
#include "keydef.h"
#include "i_interface.h"
#include "engineerrors.h"
#include "i_input.h"
#include "i_interface.h"
#include "keydef.h"
#include "m_joy.h"
#include "utf8.h"
#include "v_video.h"
bool GUICapture;
static bool NativeMouse = true;

View file

@ -1,8 +1,11 @@
/*
** i_joystick.cpp
**
** Handles sdl joysticks and gamepads
**
**---------------------------------------------------------------------------
** Copyright 2005-2016 Randy Heit
** Copyright 2017-2025 GZDoom Maintainers and Contributors
** All rights reserved.
**
** Redistribution and use in source and binary forms, with or without
@ -30,13 +33,14 @@
**---------------------------------------------------------------------------
**
*/
#include <SDL.h>
#include <SDL_gamecontroller.h>
#include <cstdint>
#include <cstdlib>
#include "basics.h"
#include "cmdlib.h"
#include "d_eventbase.h"
#include "i_input.h"
#include "m_joy.h"

View file

@ -1,8 +1,11 @@
/*
** i_dijoy.cpp
**
** Handles direct input joysticks
**
**---------------------------------------------------------------------------
** Copyright 2005-2016 Randy Heit
** Copyright 2017-2025 GZDoom Maintainers and Contributors
** All rights reserved.
**
** Redistribution and use in source and binary forms, with or without
@ -40,19 +43,19 @@
#ifndef __GNUC__
#include <wbemidl.h>
#endif
#include <oleauto.h>
#include <malloc.h>
#include "i_input.h"
#include "d_eventbase.h"
#include "gameconfigfile.h"
#include "cmdlib.h"
#include "v_text.h"
#include "m_argv.h"
#include "keydef.h"
#include "printf.h"
#include "m_joy.h"
#include "i_mainwindow.h"
#define SAFE_RELEASE(x) { if (x != NULL) { x->Release(); x = NULL; } }
@ -146,7 +149,6 @@ public:
// MACROS ------------------------------------------------------------------
// TYPES -------------------------------------------------------------------
class FDInputJoystick : public FInputDevice, IJoystickConfig

View file

@ -1,9 +1,11 @@
/*
** i_input.cpp
**
** Handles input from keyboard, mouse, and joystick
**
**---------------------------------------------------------------------------
** Copyright 1998-2009 Randy Heit
** Copyright 2017-2025 GZDoom Maintainers and Contributors
** All rights reserved.
**
** Redistribution and use in source and binary forms, with or without
@ -54,7 +56,6 @@
#define GET_RAWINPUT_CODE_WPARAM(wParam) ((wParam) & 0xff)
#endif
#include "c_dispatch.h"
#include "m_argv.h"
#include "i_input.h"
@ -80,7 +81,6 @@
#define GET_XBUTTON_WPARAM(wParam) (HIWORD(wParam))
#endif
#ifdef _DEBUG
#define INGAME_PRIORITY_CLASS NORMAL_PRIORITY_CLASS
#else
@ -90,7 +90,6 @@
FJoystickCollection *JoyDevices[NUM_JOYDEVICES];
extern HINSTANCE g_hInst;
bool GUICapture;
@ -128,7 +127,6 @@ bool win32EnableInput = true;
EXTERN_CVAR(Bool, i_pauseinbackground);
CVAR (Bool, k_allowfullscreentoggle, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
static void I_CheckGUICapture ()
@ -391,7 +389,6 @@ LRESULT CALLBACK WndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
}
}
switch (message)
{
case WM_DESTROY:
@ -541,7 +538,6 @@ bool I_InitInput (void *hwnd)
return TRUE;
}
// Free all input resources
void I_ShutdownInput ()
{
@ -591,7 +587,6 @@ void I_GetWindowEvent()
}
}
void I_GetEvent ()
{
I_GetWindowEvent();

View file

@ -1,5 +1,5 @@
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//
// Copyright 1993-1996 id Software
// Copyright 1999-2016 Randy Heit
// Copyright 2002-2016 Christoph Oelckers
@ -46,11 +46,13 @@
#include "autosegs.h"
#include "c_buttons.h"
#include "c_console.h"
#include "c_cvars.h"
#include "c_dispatch.h"
#include "cmdlib.h"
#include "common/scripting/dap/DebugServer.h"
#include "d_buttons.h"
#include "d_dehacked.h"
#include "d_event.h"
#include "d_main.h"
#include "d_net.h"
#include "d_netinf.h"
@ -76,6 +78,7 @@
#include "hwrenderer/scene/hw_drawinfo.h"
#include "i_interface.h"
#include "i_sound.h"
#include "i_soundinternal.h"
#include "i_system.h"
#include "i_time.h"
#include "i_video.h"
@ -224,7 +227,6 @@ CUSTOM_CVAR(Float, i_timescale, 1.0f, CVAR_NOINITCALL | CVAR_VIRTUAL)
}
}
// PUBLIC DATA DEFINITIONS -------------------------------------------------
#ifndef NO_SWRENDERER
@ -339,7 +341,6 @@ cycle_t FrameCycles;
// [SP] Store the capabilities of the renderer in a global variable, to prevent excessive per-frame processing
uint32_t r_renderercaps = 0;
// PRIVATE DATA DEFINITIONS ------------------------------------------------
static int demosequence;
@ -800,6 +801,7 @@ static void DrawPaletteTester(int paletteno)
// Draws the fps counter, dot ticker, and palette debug.
//
//==========================================================================
uint64_t LastFPS, LastMSCount;
void CalcFps()
@ -1088,7 +1090,6 @@ void D_Display ()
ScreenJobDraw();
break;
default:
break;
}
@ -1576,7 +1577,6 @@ void D_DoAdvanceDemo (void)
break;
}
if (pagename.IsNotEmpty())
{
Page = TexMan.CheckForTexture(pagename.GetChars(), ETextureType::MiscPatch);
@ -1837,7 +1837,6 @@ static void GetCmdLineFiles(std::vector<std::string>& wadfiles, bool optional)
}
}
static FString ParseGameInfo(std::vector<std::string> &pwads, const char *fn, const char *data, int size)
{
FScanner sc;
@ -2296,7 +2295,6 @@ static void NewFailure ()
I_FatalError ("Failed to allocate memory from system heap");
}
//==========================================================================
//
// RenameSprites
@ -2477,6 +2475,7 @@ static void RenameSprites(FileSystem &fileSystem, const TArray<FString>& deletel
// MD5 checksum for Unity version of NERVE.WAD: 4214c47651b63ee2257b1c2490a518c9 (3,821,966)
//
//==========================================================================
void RenameNerve(FileSystem& fileSystem)
{
if (gameinfo.gametype != GAME_Doom)
@ -2664,7 +2663,6 @@ static void FindStrifeTeaserVoices(FileSystem& fileSystem)
}
}
static const char *DoomButtons[] =
{
"am_panleft",
@ -2959,7 +2957,6 @@ void System_CrashInfo(char* buffer, size_t bufflen, const char *lfstr)
void System_M_Dim();
static void PatchTextures()
{
// The Hexen scripts use BLANK as a blank texture, even though it's really not.
@ -3062,7 +3059,6 @@ static void Doom_CastSpriteIDToString(FString* a, unsigned int b)
*a = (b >= sprites.Size()) ? "TNT1" : sprites[b].name;
}
extern DThinker* NextToThink;
static void GC_MarkGameRoots()
@ -3158,6 +3154,7 @@ static int FileSystemPrintf(FSMessageLevel level, const char* fmt, ...)
}
return (int)text.Len();
}
//==========================================================================
//
// D_InitGame
@ -3256,8 +3253,6 @@ static int D_InitGame(const FIWADInfo* iwad_info, std::vector<std::string>& allw
lfi.gameTypeFilter.push_back(NewFilterName.GetChars());
}
GetReserved(lfi);
lfi.postprocessFunc = [&]()
@ -3492,7 +3487,6 @@ static int D_InitGame(const FIWADInfo* iwad_info, std::vector<std::string>& allw
M_Init();
M_CreateGameMenus();
// clean up the compiler symbols which are not needed any longer.
if (!dap_debugging) RemoveUnusedSymbols();
@ -3688,6 +3682,7 @@ static int D_InitGame(const FIWADInfo* iwad_info, std::vector<std::string>& allw
staticEventManager.OnEngineInitialize();
return 0;
}
//==========================================================================
//
// D_DoomMain

View file

@ -3,6 +3,7 @@
// Copyright 1993-1996 id Software
// Copyright 1999-2016 Randy Heit
// Copyright 2002-2016 Christoph Oelckers
// Copyright 2017-2025 GZDoom Maintainers and Contributors
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@ -30,6 +31,8 @@
#include <stdio.h>
#include <string.h>
#include "gi.h"
#include "i_net.h"
//
@ -49,7 +52,6 @@ typedef enum
} GameMode_t;
// If rangecheck is undefined, most parameter validation debugging code
// will not be compiled
#ifndef NORANGECHECKING
@ -73,8 +75,6 @@ inline int Tics2Seconds(int tics)
return tics / TICRATE;
}
typedef float skill_t;
/*
@ -88,8 +88,6 @@ enum ESkillLevels
};
*/
#define TELEFOGHEIGHT (gameinfo.telefogheight)
//
@ -273,7 +271,6 @@ enum
#define FRICTION_LOW (0xf900/65536.)
#define FRICTION_FLY (0xeb00/65536.)
#define BLINKTHRESHOLD (4*32)
#endif // __DOOMDEF_H__

View file

@ -63,7 +63,6 @@ void InitDoomFonts()
OriginalSmallFont = new FFont("OriginalSmallFont", "STCFN%.3d", "defsmallfont", HU_FONTSTART, HU_FONTSIZE, HU_FONTSTART, -1, -1, false, true, true);
}
if (!(SmallFont2 = V_GetFont("SmallFont2"))) // Only used by Strife
{
if (fileSystem.CheckNumForName("STBFN033", FileSys::ns_graphics) >= 0)

View file

@ -1,5 +1,5 @@
/*
** menu.cpp
** doommenu.cpp
** Menu base class and global interface
**
**---------------------------------------------------------------------------
@ -73,7 +73,6 @@ typedef void(*hfunc)();
DMenu* CreateMessageBoxMenu(DMenu* parent, const char* message, int messagemode, bool playsound, FName action = NAME_None, hfunc handler = nullptr);
bool OkForLocalization(FTextureID texnum, const char* substitute);
FNewGameStartup NewGameStartupInfo;
int LastSkill = -1;
@ -290,7 +289,6 @@ bool M_SetSpecialMenu(FName& menu, int param)
}
}
// End of special checks
return true;
}
@ -318,7 +316,6 @@ void OnMenuOpen(bool makeSound)
}
}
//==========================================================================
//
// M_Dim
@ -360,7 +357,6 @@ void System_M_Dim()
Dim(twod, dimmer, amount, 0, 0, twod->GetWidth(), twod->GetHeight());
}
static void M_Quit()
{
DeleteScreenJob();
@ -425,12 +421,9 @@ CCMD (menu_quit)
M_Quit();
});
M_ActivateMenu(newmenu);
}
//=============================================================================
//
//
@ -566,9 +559,6 @@ CCMD (quickload)
M_ActivateMenu(newmenu);
}
//
// Toggle messages on/off
//
@ -634,7 +624,6 @@ CCMD(resetb2defaults)
C_SetDefaultBindings ();
}
//=============================================================================
//
// Creates the episode menu
@ -1028,7 +1017,6 @@ static void InitKeySections()
}
}
//=============================================================================
//
// Special menus will be created once all engine data is loaded
@ -1136,6 +1124,7 @@ DEFINE_ACTION_FUNCTION(DNewPlayerMenu, UpdateSkinOptions)
// The skill menu must be refeshed each time it starts up
//
//=============================================================================
extern int restart;
void M_StartupSkillMenu(FNewGameStartup *gs)

View file

@ -1,5 +1,7 @@
#pragma once
#include "dsectoreffect.h"
//
// P_CEILING
//

View file

@ -5,6 +5,7 @@
// Copyright 1998-1998 Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman
// Copyright 1999-2016 Randy Heit
// Copyright 2002-2016 Christoph Oelckers
// Copyright 2017-2025 GZDoom Maintainers and Contributors
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@ -28,31 +29,28 @@
//
//-----------------------------------------------------------------------------
#include <stdlib.h>
#include "m_random.h"
#include "a_ceiling.h"
#include "a_sharedglobal.h"
#include "actorinlines.h"
#include "d_player.h"
#include "doomdef.h"
#include "g_game.h"
#include "g_levellocals.h"
#include "gi.h"
#include "i_soundinternal.h"
#include "m_random.h"
#include "p_blockmap.h"
#include "p_checkposition.h"
#include "p_enemy.h"
#include "p_lnspec.h"
#include "p_local.h"
#include "p_maputl.h"
#include "d_player.h"
#include "p_lnspec.h"
#include "g_game.h"
#include "p_enemy.h"
#include "a_sharedglobal.h"
#include "p_blockmap.h"
#include "teaminfo.h"
#include "p_spec.h"
#include "p_checkposition.h"
#include "g_levellocals.h"
#include "vm.h"
#include "actorinlines.h"
#include "a_ceiling.h"
#include "shadowinlines.h"
#include "gi.h"
#include "teaminfo.h"
#include "vm.h"
static FRandom pr_checkmissilerange ("CheckMissileRange");
static FRandom pr_opendoor ("OpenDoor");
@ -111,7 +109,6 @@ double yspeed[8] = {0,SQRTHALF,1,SQRTHALF,0,-SQRTHALF,-1,-SQRTHALF};
// but some can be made preaware
//
//----------------------------------------------------------------------------
//
// PROC P_RecursiveSound
@ -153,7 +150,6 @@ static void NoiseMarkSector(sector_t *sec, AActor *soundtarget, bool splash, AAc
NoiseList.Push({ sec, soundblocks });
}
static void P_RecursiveSound(sector_t *sec, AActor *soundtarget, bool splash, AActor *emitter, int soundblocks, double maxdist)
{
bool checkabove = !sec->PortalBlocksSound(sector_t::ceiling);
@ -184,7 +180,6 @@ static void P_RecursiveSound(sector_t *sec, AActor *soundtarget, bool splash, AA
}
}
if (check->sidedef[1] == NULL ||
!(check->flags & ML_TWOSIDED))
{
@ -229,9 +224,6 @@ static void P_RecursiveSound(sector_t *sec, AActor *soundtarget, bool splash, AA
}
}
//----------------------------------------------------------------------------
//
// PROC P_NoiseAlert
@ -366,7 +358,6 @@ static int P_CheckMissileRange (AActor *actor)
if (actor->MeleeState == NULL)
dist -= 128; // no melee attack, so fire more
if (actor->maxtargetrange > 0 && dist > actor->maxtargetrange)
return false; // The Arch Vile's special behavior turned into a property
@ -673,7 +664,6 @@ static int P_Move (AActor *actor)
else
actor->AddZ(-actor->FloatSpeed);
// [RH] Check to make sure there's nothing in the way of the float
if (P_TestMobjZ(actor))
{
@ -927,7 +917,6 @@ void P_DoNewChaseDir (AActor *actor, double deltax, double deltay)
actor->movedir = DI_NODIR; // cannot move
}
//=============================================================================
//
// killough 11/98:
@ -1763,7 +1752,6 @@ int P_LookForEnemies (AActor *actor, INTBOOL allaround, FLookExParams *params)
return false;
}
/*
================
=
@ -1832,7 +1820,6 @@ int P_LookForPlayers (AActor *actor, INTBOOL allaround, FLookExParams *params)
if (actor->FriendPlayer == 0 && (!teamplay || actor->GetTeam() == TEAM_NONE)) return result;
if (result || !deathmatch) return true;
} // [SP] if false, and in deathmatch, intentional fall-through
else if (actor->flags8 & MF8_SEEFRIENDLYMONSTERS)
{
@ -2042,7 +2029,6 @@ DEFINE_ACTION_FUNCTION(AActor, A_Look)
return 0;
}
//==========================================================================
//
// A_LookEx (int flags, fixed minseedist, fixed maxseedist, fixed maxheardist, fixed fov, state wakestate)
@ -2254,6 +2240,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_ClearLastHeard)
// A_Wander
//
//==========================================================================
enum ChaseFlags
{
CHF_FASTCHASE = 1,
@ -2315,6 +2302,7 @@ void A_Wander(AActor *self, int flags)
// A_Look2
//
//==========================================================================
DEFINE_ACTION_FUNCTION(AActor, A_Look2)
{
PARAM_SELF_PROLOGUE(AActor);
@ -2379,6 +2367,7 @@ nosee:
// enhancements.
//
//=============================================================================
#define CLASS_BOSS_STRAFE_RANGE 64*10
void A_DoChase (AActor *actor, bool fastchase, FState *meleestate, FState *missilestate, bool playactive, bool nightmarefast, bool dontmove, int flags)
@ -2743,6 +2732,7 @@ void A_DoChase (AActor *actor, bool fastchase, FState *meleestate, FState *missi
// functions to check.
//
//==========================================================================
// [MC] Code is almost a duplicate of CanCollideWith but with changes to
// accommodate checking of just one actor.
bool P_CanResurrect(AActor *raiser, AActor *thing)
@ -2942,7 +2932,6 @@ bool P_CheckForResurrection(AActor* self, bool usevilestates, FState* state = nu
return false;
}
// for internal use
void A_Chase(AActor *self)
{
@ -3007,6 +2996,7 @@ DEFINE_ACTION_FUNCTION_NATIVE(AActor, A_DoChase, A_DoChaseNative)
// A_FaceTracer
//
//=============================================================================
enum FAF_Flags
{
FAF_BOTTOM = 1,
@ -3122,6 +3112,7 @@ void A_FaceTarget(AActor *self)
// New function to let monsters shoot a railgun
//
//===========================================================================
DEFINE_ACTION_FUNCTION(AActor, A_MonsterRail)
{
PARAM_SELF_PROLOGUE(AActor);

View file

@ -4,6 +4,7 @@
**
**---------------------------------------------------------------------------
** Copyright 1998-2007 Randy Heit
** Copyright 2017-2025 GZDoom Maintainers and Contributors
** All rights reserved.
**
** Redistribution and use in source and binary forms, with or without
@ -34,30 +35,29 @@
** or false if it could not perform the desired action.
*/
#include "doomstat.h"
#include "p_local.h"
#include "p_lnspec.h"
#include "p_enemy.h"
#include "g_level.h"
#include "v_palette.h"
#include "a_sharedglobal.h"
#include "a_lightning.h"
#include "a_keys.h"
#include "gi.h"
#include "p_conversation.h"
#include "p_3dmidtex.h"
#include "d_net.h"
#include "a_sharedglobal.h"
#include "d_event.h"
#include "gstrings.h"
#include "po_man.h"
#include "d_net.h"
#include "d_player.h"
#include "r_utility.h"
#include "doomstat.h"
#include "fragglescript/t_fs.h"
#include "p_spec.h"
#include "g_level.h"
#include "g_levellocals.h"
#include "vm.h"
#include "gi.h"
#include "gstrings.h"
#include "p_3dmidtex.h"
#include "p_conversation.h"
#include "p_destructible.h"
#include "p_enemy.h"
#include "p_lnspec.h"
#include "p_local.h"
#include "p_spec.h"
#include "po_man.h"
#include "r_utility.h"
#include "s_sndseq.h"
#include "v_palette.h"
#include "vm.h"
// Remaps EE sector change types to Generic_Floor values. According to the Eternity Wiki:
/*
@ -71,7 +71,6 @@
*/
static const uint8_t ChangeMap[8] = { 0, 1, 5, 3, 7, 2, 6, 0 };
#define FUNC(a) static int a (FLevelLocals *Level, line_t *ln, AActor *it, bool backSide, \
int arg0, int arg1, int arg2, int arg3, int arg4)
@ -585,7 +584,6 @@ FUNC(LS_Floor_Stop)
return Level->EV_StopFloor(arg0, ln);
}
FUNC(LS_Stairs_BuildDown)
// Stair_BuildDown (tag, speed, height, delay, reset)
{
@ -649,7 +647,6 @@ FUNC(LS_Stairs_BuildUpDoomSync)
arg2, SPEED(arg1), 0, arg3, 0, DFloor::stairSync);
}
FUNC(LS_Generic_Stairs)
// Generic_Stairs (tag, speed, step, dir/igntxt, reset)
{
@ -896,7 +893,6 @@ FUNC(LS_Ceiling_Stop)
return Level->EV_StopCeiling(arg0, ln);
}
FUNC(LS_Generic_Ceiling)
// Generic_Ceiling (tag, speed, height, target, change/model/direct/crush)
{
@ -1038,7 +1034,6 @@ FUNC(LS_Plat_RaiseAndStayTx0)
break;
}
return Level->EV_DoPlat (arg0, ln, type, 0, SPEED(arg1), 0, 0, 1);
}
@ -1824,7 +1819,6 @@ FUNC(LS_Thing_Stop)
return ok;
}
FUNC(LS_Thing_SetGoal)
// Thing_SetGoal (tid, goal, delay, chasegoal)
{
@ -2036,8 +2030,6 @@ FUNC(LS_FS_Execute)
return T_RunScript(Level, arg0, it);
}
FUNC(LS_FloorAndCeiling_LowerByValue)
// FloorAndCeiling_LowerByValue (tag, speed, height)
{
@ -2242,9 +2234,6 @@ FUNC(LS_Sector_ChangeFlags)
return rtn;
}
FUNC(LS_Sector_SetWind)
// Sector_SetWind (tag, amount, angle)
{
@ -2306,7 +2295,6 @@ FUNC(LS_Sector_SetLink)
void SetWallScroller(FLevelLocals *Level, int id, int sidechoice, double dx, double dy, EScrollPos Where);
void SetScroller(FLevelLocals *Level, int tag, EScroll type, double dx, double dy);
FUNC(LS_Scroll_Texture_Both)
// Scroll_Texture_Both (id, left, right, up, down)
{
@ -2838,7 +2826,6 @@ FUNC(LS_Line_SetAutomapStyle)
return false;
}
FUNC(LS_ChangeCamera)
// ChangeCamera (tid, who, revert?)
{
@ -3458,7 +3445,6 @@ FUNC(LS_Sector_SetPlaneReflection)
return true;
}
FUNC(LS_SetGlobalFogParameter)
// SetGlobalFogParameter (type, value)
{
@ -3962,7 +3948,6 @@ int P_FindLineSpecial (const char *string, int *min_args, int *max_args)
return 0;
}
//==========================================================================
//
// P_ExecuteSpecial
@ -3991,6 +3976,7 @@ int P_ExecuteSpecial(FLevelLocals *Level, int num,
// Execute a line special / script
//
//==========================================================================
DEFINE_ACTION_FUNCTION(FLevelLocals, ExecuteSpecial)
{
PARAM_SELF_STRUCT_PROLOGUE(FLevelLocals);

View file

@ -5,6 +5,7 @@
// Copyright 1998-1998 Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman
// Copyright 1999-2016 Randy Heit
// Copyright 2002-2017 Christoph Oelckers
// Copyright 2017-2025 GZDoom Maintainers and Contributors
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@ -57,45 +58,41 @@
**
*/
#include <stdlib.h>
#include <math.h>
#include <algorithm>
#include "m_bbox.h"
#include "m_random.h"
#include "c_dispatch.h"
#include "doomdef.h"
#include "p_local.h"
#include "p_spec.h"
#include "d_player.h"
#include "p_maputl.h"
#include "p_lnspec.h"
#include "p_effect.h"
#include "p_terrain.h"
#include "p_trace.h"
#include "p_checkposition.h"
#include "p_linetracedata.h"
#include "r_utility.h"
#include "p_blockmap.h"
#include "p_3dmidtex.h"
#include "events.h"
#include "vm.h"
#include "d_main.h"
#include "gi.h"
#include "decallib.h"
// State.
#include <math.h>
#include <stdlib.h>
#include "a_sharedglobal.h"
#include "p_conversation.h"
#include "r_sky.h"
#include "g_levellocals.h"
#include "actorinlines.h"
#include <shadowinlines.h>
#include "c_cvars.h"
#include "c_dispatch.h"
#include "d_main.h"
#include "d_player.h"
#include "decallib.h"
#include "doomdef.h"
#include "events.h"
#include "g_levellocals.h"
#include "gi.h"
#include "m_bbox.h"
#include "m_random.h"
#include "p_3dmidtex.h"
#include "p_blockmap.h"
#include "p_checkposition.h"
#include "p_conversation.h"
#include "p_effect.h"
#include "p_linetracedata.h"
#include "p_lnspec.h"
#include "p_local.h"
#include "p_maputl.h"
#include "p_spec.h"
#include "p_terrain.h"
#include "p_trace.h"
#include "r_sky.h"
#include "r_utility.h"
#include "shadowinlines.h"
#include "vm.h"
// State.
CVAR(Bool, cl_bloodsplats, true, CVAR_ARCHIVE)
CVAR(Int, sv_smartaim, 0, CVAR_ARCHIVE | CVAR_SERVERINFO)
@ -276,6 +273,7 @@ static DVector2 FindRefPoint(line_t *ld, const DVector2 &pos)
// only3d set means to only check against 3D floors and midtexes.
//
//==========================================================================
bool ffcf_verbose;
static bool PIT_FindFloorCeiling(FMultiBlockLinesIterator &mit, FMultiBlockLinesIterator::CheckResult &cres, const FBoundingBox &box, FCheckPosition &tmf, int flags)
@ -343,7 +341,6 @@ static bool PIT_FindFloorCeiling(FMultiBlockLinesIterator &mit, FMultiBlockLines
return true;
}
//==========================================================================
//
// calculates the actual floor and ceiling position at a given
@ -449,7 +446,6 @@ void P_FindFloorCeiling(AActor *actor, int flags)
}
}
// Debug CCMD for checking errors in the MultiBlockLinesIterator (needs to be removed when this code is complete)
CCMD(ffcf)
{
@ -481,7 +477,6 @@ bool P_TeleportMove(AActor* thing, const DVector3 &pos, bool telefrag, bool modi
// kill anything occupying the position
// The base floor/ceiling is from the subsector that contains the point.
// Any contacted lines the step closer together will adjust them.
tmf.thing = thing;
@ -1225,7 +1220,6 @@ static bool PIT_CheckPortal(FMultiBlockLinesIterator &mit, FMultiBlockLinesItera
return ret;
}
//==========================================================================
//
// Isolated to keep the code readable and fix the logic
@ -1239,7 +1233,6 @@ static bool CheckRipLevel(AActor *victim, AActor *projectile)
return true;
}
//==========================================================================
//
// Isolated to keep the code readable and allow reuse in other attacks
@ -1386,6 +1379,7 @@ DEFINE_ACTION_FUNCTION_NATIVE(AActor, DoMissileDamage, P_DoMissileDamage)
P_DoMissileDamage(self, victim);
return 0;
}
//==========================================================================
//
// PIT_CheckThing
@ -1511,7 +1505,6 @@ bool PIT_CheckThing(FMultiBlockThingsIterator &it, FMultiBlockThingsIterator::Ch
if (!P_CanCollideWith(tm.thing, thing)) return true;
}
if (tm.thing->player == NULL || !(tm.thing->player->cheats & CF_PREDICTING))
{
// touchy object is alive, toucher is solid
@ -1750,8 +1743,6 @@ bool PIT_CheckThing(FMultiBlockThingsIterator &it, FMultiBlockThingsIterator::Ch
// return !(thing->flags & MF_SOLID); // old code -- killough
}
/*
===============================================================================
@ -1958,7 +1949,6 @@ bool P_CheckPosition(AActor *thing, const DVector2 &pos, FCheckPosition &tm, boo
if (actorsonly || (thing->flags & MF_NOCLIP))
return (thing->BlockingMobj = thingblocker) == NULL;
FMultiBlockLinesIterator it(pcheck, thing->Level, pos.X, pos.Y, thing->Z(), thing->Height, thing->radius, newsec);
FMultiBlockLinesIterator::CheckResult lcres;
@ -2013,7 +2003,6 @@ bool P_CheckPosition(AActor *thing, const DVector2 &pos, bool actorsonly)
return P_CheckPosition(thing, pos, tm, actorsonly);
}
//----------------------------------------------------------------------------
//
// FUNC P_TestMobjLocation
@ -2217,7 +2206,6 @@ int P_TestMobjZ(AActor *actor, bool quick, AActor **pOnmobj)
return onmobj == NULL;
}
//=============================================================================
//
// P_FakeZMovement
@ -2496,7 +2484,6 @@ bool P_TryMove(AActor *thing, const DVector2 &pos,
dropoff = false;
}
// killough 3/15/98: Allow certain objects to drop off
if ((!dropoff && !(thing->flags & (MF_DROPOFF | MF_FLOAT | MF_MISSILE))) || (thing->flags5&MF5_NODROPOFF))
{
@ -2582,7 +2569,6 @@ bool P_TryMove(AActor *thing, const DVector2 &pos,
return false;
}
// Check for crossed portals
bool portalcrossed;
portalcrossed = false;
@ -2698,8 +2684,6 @@ bool P_TryMove(AActor *thing, const DVector2 &pos,
break;
}
if (!portalcrossed)
{
// the move is ok, so link the thing into its new position
@ -2865,7 +2849,6 @@ bool P_TryMove(AActor *thing, const DVector2 &pos,
return P_TryMove(thing, pos, dropoff, onfloor, tm, missilecheck);
}
//==========================================================================
//
// P_CheckMove
@ -2973,7 +2956,6 @@ bool P_CheckMove(AActor *thing, const DVector2 &pos, int flags)
return P_CheckMove(thing, pos, tm, flags);
}
//==========================================================================
//
// SLIDE MOVE
@ -3137,7 +3119,6 @@ void FSlide::HitSlideLine(line_t* ld)
} // phares
}
//==========================================================================
//
// PTR_SlideTraverse
@ -3218,8 +3199,6 @@ void FSlide::SlideTraverse(const DVector2 &start, const DVector2 &end)
}
}
//==========================================================================
//
// P_SlideMove
@ -3518,7 +3497,6 @@ bool FSlide::BounceTraverse(const DVector2 &start, const DVector2 &end)
goto bounceblocking;
}
P_LineOpening(open, slidemo, li, it.InterceptPoint(in)); // set openrange, opentop, openbottom
if (open.range < slidemo->Height)
goto bounceblocking; // doesn't fit
@ -3988,7 +3966,6 @@ struct aim_t
return result;
}
//============================================================================
//
// AimTraverse3DFloors
@ -4031,7 +4008,6 @@ struct aim_t
double ff_bottom = rover->bottom.plane->ZatPoint(trX, trY);
double ff_top = rover->top.plane->ZatPoint(trX, trY);
highpitch = -VecToAngle(dist, ff_top - shootz);
lowpitch = -VecToAngle(dist, ff_bottom - shootz);
@ -4106,7 +4082,6 @@ struct aim_t
else if (position == sector_t::floor && portalz > limitz) return;
aim_t newtrace = Clone();
newtrace.toppitch = newtoppitch;
newtrace.bottompitch = newbottompitch;
newtrace.aimdir = position == sector_t::ceiling? aim_t::aim_up : aim_t::aim_down;
@ -4302,7 +4277,6 @@ struct aim_t
return;
}
if (!(li->flags & ML_TWOSIDED) || (li->flags & ML_BLOCKEVERYTHING))
return; // stop
@ -4690,7 +4664,6 @@ AActor *P_LineAttack(AActor *t1, DAngle angle, double distance,
return nullptr;
}
bool nointeract = !!(flags & LAF_NOINTERACT);
DVector3 direction;
double shootz;
@ -4705,7 +4678,6 @@ AActor *P_LineAttack(AActor *t1, DAngle angle, double distance,
if (flags & LAF_NORANDOMPUFFZ)
puffFlags |= PF_NORANDOMZ;
if (victim != NULL)
{
memset(victim, 0, sizeof(*victim));
@ -5037,6 +5009,7 @@ AActor *P_LineAttack(AActor *t1, DAngle angle, double distance,
// P_LineTrace
//
//==========================================================================
struct CheckLineData
{
AActor *Caller;
@ -5216,7 +5189,6 @@ void P_TraceBleed(int damage, const DVector3 &pos, AActor *actor, DAngle angle,
int count;
double noise;
if ((actor->flags & MF_NOBLOOD) ||
(actor->flags5 & MF5_NOBLOODDECALS) ||
(actor->flags2 & (MF2_INVULNERABLE | MF2_DORMANT)) ||
@ -5297,7 +5269,6 @@ void P_TraceBleed(int damage, AActor *target, DAngle angle, DAngle pitch)
P_TraceBleed(damage, target->PosPlusZ(target->Height/2), target, angle, pitch);
}
//==========================================================================
//
//
@ -5344,7 +5315,6 @@ void P_TraceBleed(int damage, FTranslatedLineTarget *t, AActor *puff)
P_TraceBleed(damage, t->linetarget->PosPlusZ(t->linetarget->Height/2), t->linetarget, t->angleFromSource, pitch);
}
//==========================================================================
//
//
@ -5459,6 +5429,7 @@ static ETraceStatus ProcessRailHit(FTraceResults &res, void *userdata)
//
//
//==========================================================================
void P_RailAttack(FRailParams *p)
{
AActor *source = p->source;
@ -6066,7 +6037,6 @@ int P_UsePuzzleItem(AActor *PuzzleItemUser, int PuzzleItemType)
//
//==========================================================================
// [RH] Damage scale to apply to thing that shot the missile.
static float selfthrustscale;
@ -6451,7 +6421,6 @@ int P_RadiusAttack(AActor *bombspot, AActor *bombsource, int bombdamage, double
//
//==========================================================================
struct FChangePosition
{
sector_t *sector;
@ -7073,7 +7042,6 @@ bool P_ChangeSector(sector_t *sector, int crunch, double amt, int floorOrCeil, b
unsigned i;
sector_t* sec;
// Use different functions for the four different types of sector movement.
// for 3D-floors the meaning of floor and ceiling is inverted!!!
if (floorOrCeil == 1)

View file

@ -5,6 +5,7 @@
// Copyright 1998-1998 Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman
// Copyright 1999-2016 Randy Heit
// Copyright 2002-2017 Christoph Oelckers
// Copyright 2017-2025 GZDoom Maintainers and Contributors
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@ -57,52 +58,50 @@
*/
// HEADER FILES ------------------------------------------------------------
#include <float.h>
#include "m_random.h"
#include "doomdef.h"
#include "p_local.h"
#include "p_maputl.h"
#include "p_lnspec.h"
#include "p_effect.h"
#include "p_terrain.h"
#include "hu_stuff.h"
#include "v_video.h"
#include "c_dispatch.h"
#include "b_bot.h" //Added by MC:
#include "a_sharedglobal.h"
#include "gi.h"
#include "sbar.h"
#include "p_acs.h"
#include "cmdlib.h"
#include "decallib.h"
#include "a_keys.h"
#include "p_conversation.h"
#include "g_game.h"
#include "teaminfo.h"
#include "r_sky.h"
#include "d_event.h"
#include "p_enemy.h"
#include "gstrings.h"
#include "po_man.h"
#include "p_spec.h"
#include "p_checkposition.h"
#include "serializer_doom.h"
#include "serialize_obj.h"
#include "r_utility.h"
#include "thingdef.h"
#include "d_player.h"
#include "g_levellocals.h"
#include "a_morph.h"
#include "events.h"
#include "actorinlines.h"
#include "a_dynlight.h"
#include "a_keys.h"
#include "a_morph.h"
#include "a_sharedglobal.h"
#include "actorinlines.h"
#include "b_bot.h" //Added by MC:
#include "c_dispatch.h"
#include "cmdlib.h"
#include "d_event.h"
#include "d_net.h"
#include "d_player.h"
#include "decallib.h"
#include "doomdef.h"
#include "events.h"
#include "fragglescript/t_fs.h"
#include "shadowinlines.h"
#include "g_game.h"
#include "g_levellocals.h"
#include "gi.h"
#include "gstrings.h"
#include "hu_stuff.h"
#include "m_random.h"
#include "model.h"
#include "models.h"
#include "d_net.h"
#include "p_acs.h"
#include "p_checkposition.h"
#include "p_conversation.h"
#include "p_effect.h"
#include "p_enemy.h"
#include "p_lnspec.h"
#include "p_local.h"
#include "p_maputl.h"
#include "p_spec.h"
#include "p_terrain.h"
#include "r_sky.h"
#include "r_utility.h"
#include "sbar.h"
#include "serialize_obj.h"
#include "serializer_doom.h"
#include "shadowinlines.h"
#include "teaminfo.h"
#include "thingdef.h"
// MACROS ------------------------------------------------------------------
@ -437,7 +436,6 @@ void AActor::Serialize(FSerializer &arc)
("behaviors", Behaviors)
A("decalgenerator", DecalGenerator);
SerializeTerrain(arc, "floorterrain", floorterrain, &def->floorterrain);
SerializeArgs(arc, "args", args, def->args, special);
@ -838,7 +836,6 @@ DEFINE_ACTION_FUNCTION_NATIVE(FState, InStateSequence, InStateSequence)
ACTION_RETURN_BOOL(InStateSequence(self, basestate));
}
bool AActor::IsMapActor()
{
// [SP] Don't remove owned inventory objects.
@ -992,7 +989,6 @@ DEFINE_ACTION_FUNCTION(AActor, SetState)
ACTION_RETURN_BOOL(self->SetState(state, nofunction));
};
//============================================================================
//
// DestroyAllInventory
@ -1035,6 +1031,7 @@ DEFINE_ACTION_FUNCTION_NATIVE(AActor, DestroyAllInventory, DestroyAllInventory)
DestroyAllInventory(self);
return 0;
}
//============================================================================
//
// AActor :: UseInventory
@ -2103,7 +2100,6 @@ DEFINE_ACTION_FUNCTION(AActor, ExplodeMissile)
return 0;
}
void AActor::PlayBounceSound(bool onfloor, double volume)
{
if (!onfloor && (BounceFlags & BOUNCE_NoWallSound))
@ -2410,7 +2406,6 @@ bool P_SeekerMissile (AActor *actor, DAngle thresh, DAngle turnMax, bool precise
return true;
}
//
// P_XYMovement
//
@ -2926,7 +2921,6 @@ static double P_XYMovement (AActor *mo, DVector2 scroll)
return Oldfloorz;
}
static void P_MonsterFallingDamage (AActor *mo)
{
int damage;
@ -2983,7 +2977,6 @@ static void P_ZMovement (AActor *mo, double oldfloorz)
mo->SetZ(mo->floorz + mo->specialf1);
}
//
// adjust height
//
@ -3520,7 +3513,6 @@ void P_NightmareRespawn (AActor *mobj)
mobj->Destroy ();
}
//
// P_AddMobjToHash
//
@ -3588,7 +3580,6 @@ void AActor::SetTID (int newTID)
AddToHash();
}
//==========================================================================
//
// P_IsTIDUsed
@ -3671,7 +3662,6 @@ int FLevelLocals::FindUniqueTID(int start_tid, int limit, bool clientside)
return 0;
}
CCMD(utid)
{
for (auto Level : AllLevels())
@ -3799,8 +3789,6 @@ bool AActor::CallSlam(AActor *thing)
else return Slam(thing);
}
// This virtual method only exists on the script side.
int AActor::SpecialMissileHit (AActor *victim)
{
@ -4188,7 +4176,6 @@ PClassActor *AActor::GetBloodType(int type) const
return nullptr;
}
DVector3 AActor::GetPortalTransition(double byoffset, sector_t **pSec)
{
bool moved = false;
@ -4222,8 +4209,6 @@ DVector3 AActor::GetPortalTransition(double byoffset, sector_t **pSec)
return pos;
}
void AActor::CheckPortalTransition(bool islinked)
{
bool moved = false;
@ -4475,7 +4460,6 @@ void AActor::GetObjectToWorldMatrix(double *outMat)
}
}
//
// P_MobjThinker
//
@ -5559,7 +5543,6 @@ void ConstructActor(AActor *actor, const DVector3 &pos, bool SpawningMapThing)
actor->flags8 |= MF8_INSCROLLSEC;
}
AActor *AActor::StaticSpawn(FLevelLocals *Level, PClassActor *type, const DVector3 &pos, replace_t allowreplacement, bool SpawningMapThing)
{
if (type == NULL)
@ -5755,7 +5738,6 @@ void AActor::CallBeginPlay()
else BeginPlay();
}
void AActor::PostBeginPlay ()
{
PrevAngles = Angles;
@ -5830,7 +5812,6 @@ void AActor::CallActivate(AActor *activator)
else Activate(activator);
}
//===========================================================================
//
// Deactivate
@ -6913,6 +6894,7 @@ AActor *FLevelLocals::SpawnMapThing (FMapThing *mthing, int position)
// SpawnMapThing
//
//===========================================================================
CVAR(Bool, dumpspawnedthings, false, 0)
AActor *FLevelLocals::SpawnMapThing(int index, FMapThing *mt, int position)
@ -6928,13 +6910,10 @@ AActor *FLevelLocals::SpawnMapThing(int index, FMapThing *mt, int position)
return spawned;
}
//
// GAME SPAWN FUNCTIONS
//
//
// P_SpawnPuff
//
@ -7150,7 +7129,6 @@ DEFINE_ACTION_FUNCTION(AActor, SpawnBlood)
ACTION_RETURN_OBJECT(P_SpawnBlood(DVector3(x, y, z), dir, damage, self));
}
//---------------------------------------------------------------------------
//
// PROC P_BloodSplatter
@ -7213,7 +7191,6 @@ void P_BloodSplatter2 (const DVector3 &pos, AActor *originator, DAngle hitangle)
{
AActor *mo;
mo = Spawn (originator->Level, bloodcls, pos + add, NO_REPLACE); // GetBloodType already performed the replacement
mo->target = originator;
@ -7244,7 +7221,6 @@ DEFINE_ACTION_FUNCTION(AActor, BloodSplatter)
return 0;
}
//---------------------------------------------------------------------------
//
// PROC P_RipperBlood
@ -7309,7 +7285,6 @@ int P_GetThingFloorType (AActor *thing)
}
}
//---------------------------------------------------------------------------
//
// FUNC P_HitWater
@ -7486,7 +7461,6 @@ DEFINE_ACTION_FUNCTION(AActor, HitWater)
ACTION_RETURN_BOOL(P_HitWater(self, sec, DVector3(x, y, z), checkabove, alert, force, flags));
}
//---------------------------------------------------------------------------
//
// FUNC P_HitFloor
@ -7645,7 +7619,6 @@ DEFINE_ACTION_FUNCTION(AActor, CheckMissileSpawn)
ACTION_RETURN_BOOL(P_CheckMissileSpawn(self, add));
}
//---------------------------------------------------------------------------
//
// FUNC P_PlaySpawnSound
@ -7685,8 +7658,6 @@ DEFINE_ACTION_FUNCTION(AActor, PlaySpawnSound)
return 0;
}
double GetDefaultSpeed(PClassActor *type)
{
if (type == NULL)
@ -7819,8 +7790,6 @@ DEFINE_ACTION_FUNCTION(AActor, SpawnMissileZ)
ACTION_RETURN_OBJECT(P_SpawnMissileZ(self, z, dest, type));
}
AActor *P_OldSpawnMissile(AActor *source, AActor *owner, AActor *dest, PClassActor *type)
{
if (source == nullptr || type == nullptr)
@ -7835,7 +7804,6 @@ AActor *P_OldSpawnMissile(AActor *source, AActor *owner, AActor *dest, PClassAct
th->Angles.Yaw = source->AngleTo(dest);
th->VelFromAngle();
double dist = source->DistanceBySpeed(dest, max(1., th->Speed));
th->Vel.Z = (dest->Z() - source->Z()) / dist;
@ -7857,7 +7825,6 @@ DEFINE_ACTION_FUNCTION(AActor, OldSpawnMissile)
ACTION_RETURN_OBJECT(P_OldSpawnMissile(self, owner, dest, type));
}
//---------------------------------------------------------------------------
//
// FUNC P_SpawnMissileAngle
@ -7950,7 +7917,6 @@ DEFINE_ACTION_FUNCTION(AActor, SpawnMissileAngleZSpeed)
ACTION_RETURN_OBJECT(P_SpawnMissileAngleZSpeed(self, z, type, angle, vz, speed, owner, checkspawn));
}
AActor *P_SpawnSubMissile(AActor *source, PClassActor *type, AActor *target)
{
AActor *other = Spawn(source->Level, type, source->Pos(), ALLOW_REPLACE);
@ -8114,7 +8080,6 @@ DEFINE_ACTION_FUNCTION(AActor, SpawnPlayerMissile)
return numret;
}
int AActor::GetTeam()
{
if (player)
@ -8351,7 +8316,6 @@ DEFINE_ACTION_FUNCTION(AActor, TakeSpecialDamage)
ACTION_RETURN_INT(self->TakeSpecialDamage(inflictor, source, damage, damagetype));
}
int AActor::CallTakeSpecialDamage(AActor *inflictor, AActor *source, int damage, FName damagetype)
{
IFVIRTUAL(AActor, TakeSpecialDamage)
@ -8417,7 +8381,6 @@ void AActor::SetIdle(bool nofunction)
SetState(idle, nofunction);
}
int AActor::SpawnHealth() const
{
int defhealth = StartHealth ? StartHealth : GetDefault()->health;
@ -8533,7 +8496,6 @@ int AActor::GetGibHealth() const
return -SpawnHealth();
}
// killough 11/98:
// Whether an object is "sentient" or not. Used for environmental influences.
// (left precisely the same as MBF even though it doesn't make much sense.)
@ -8542,7 +8504,6 @@ bool AActor::IsSentient() const
return health > 0 && SeeState != NULL;
}
FSharedStringArena AActor::mStringPropertyData;
const char *AActor::GetTag(const char *def) const
@ -8626,7 +8587,6 @@ int AActor::GetModifiedDamage(FName damagetype, int damage, bool passive, AActor
return damage;
}
int AActor::ApplyDamageFactor(FName damagetype, int damage) const
{
damage = int(damage * DamageFactor);

View file

@ -5,6 +5,7 @@
// Copyright 1998-1998 Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman
// Copyright 1999-2016 Randy Heit
// Copyright 2002-2016 Christoph Oelckers
// Copyright 2017-2025 GZDoom Maintainers and Contributors
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@ -67,38 +68,30 @@
#include <stdlib.h>
#include "a_keys.h"
#include "a_sharedglobal.h"
#include "actorinlines.h"
#include "d_event.h"
#include "d_player.h"
#include "doomdata.h"
#include "doomdef.h"
#include "doomstat.h"
#include "d_event.h"
#include "g_level.h"
#include "gstrings.h"
#include "events.h"
#include "g_game.h"
#include "g_levellocals.h"
#include "gstrings.h"
#include "i_soundinternal.h"
#include "m_random.h"
#include "p_local.h"
#include "p_spec.h"
#include "p_3dmidtex.h"
#include "p_acs.h"
#include "p_blockmap.h"
#include "p_lnspec.h"
#include "p_terrain.h"
#include "p_acs.h"
#include "p_3dmidtex.h"
#include "g_game.h"
#include "a_sharedglobal.h"
#include "a_keys.h"
#include "c_dispatch.h"
#include "r_sky.h"
#include "d_player.h"
#include "g_levellocals.h"
#include "actorinlines.h"
#include "vm.h"
#include "p_local.h"
#include "p_setup.h"
#include "c_console.h"
#include "p_spec_thinkers.h"
#include "p_spec.h"
#include "p_terrain.h"
#include "r_sky.h"
#include "vm.h"
static FRandom pr_actorinspecialsector ("ActorInSpecialSector");
@ -141,7 +134,6 @@ bool FLevelLocals::CheckIfExitIsGood (AActor *self, level_info_t *info)
return true;
}
//
// UTILITIES
//

View file

@ -5,6 +5,7 @@
// Copyright 1998-1998 Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman
// Copyright 1999-2016 Randy Heit
// Copyright 2002-2016 Christoph Oelckers
// Copyright 2017-2025 GZDoom Maintainers and Contributors
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@ -28,11 +29,10 @@
#include "d_player.h"
#include "doomdef.h"
#include "vm.h"
#include "g_levellocals.h"
#include "p_maputl.h"
#include "gi.h"
#include "r_utility.h"
#include "vm.h"
#define FUDGEFACTOR 10

View file

@ -5,6 +5,7 @@
// Copyright 1998-1998 Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman
// Copyright 1999-2016 Randy Heit
// Copyright 2002-2016 Christoph Oelckers
// Copyright 2017-2025 GZDoom Maintainers and Contributors
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@ -58,42 +59,38 @@
**
*/
#include "doomdef.h"
#include "d_event.h"
#include "p_local.h"
#include "doomstat.h"
#include "s_sound.h"
#include "gi.h"
#include "m_random.h"
#include "p_pspr.h"
#include "p_enemy.h"
#include "a_sharedglobal.h"
#include "a_keys.h"
#include "filesystem.h"
#include "cmdlib.h"
#include "sbar.h"
#include "intermission/intermission.h"
#include "c_console.h"
#include "c_dispatch.h"
#include "d_net.h"
#include "serializer_doom.h"
#include "serialize_obj.h"
#include "d_player.h"
#include "r_utility.h"
#include "p_blockmap.h"
#include "a_morph.h"
#include "p_spec.h"
#include "vm.h"
#include "g_levellocals.h"
#include "actorinlines.h"
#include "p_acs.h"
#include "events.h"
#include "g_game.h"
#include "v_video.h"
#include "gstrings.h"
#include "s_music.h"
#include "c_dispatch.h"
#include "cmdlib.h"
#include "d_event.h"
#include "d_main.h"
#include "d_net.h"
#include "d_player.h"
#include "doomdef.h"
#include "doomstat.h"
#include "events.h"
#include "filesystem.h"
#include "g_game.h"
#include "g_levellocals.h"
#include "gi.h"
#include "gstrings.h"
#include "intermission/intermission.h"
#include "m_random.h"
#include "p_acs.h"
#include "p_blockmap.h"
#include "p_enemy.h"
#include "p_local.h"
#include "p_pspr.h"
#include "p_spec.h"
#include "r_utility.h"
#include "s_music.h"
#include "s_sound.h"
#include "sbar.h"
#include "serialize_obj.h"
#include "serializer_doom.h"
#include "vm.h"
extern int paused;
@ -478,8 +475,6 @@ DEFINE_ACTION_FUNCTION(_PlayerInfo, SetSubtitleNumber)
return 0;
}
int player_t::GetSpawnClass()
{
const PClass * type = PlayerClasses[CurrentPlayerClass].Type;
@ -648,7 +643,6 @@ DEFINE_ACTION_FUNCTION_NATIVE(APlayerPawn, GetPainFlashForType, GetPainFlash)
EXTERN_CVAR(Float, maxviewpitch)
EXTERN_CVAR(Bool, cl_oldfreelooklimit);
static int GetSoftPitch(bool down)
{
int MAX_DN_ANGLE = min(56, (int)maxviewpitch); // Max looking down angle
@ -685,7 +679,6 @@ DEFINE_ACTION_FUNCTION(_PlayerInfo, SendPitchLimits)
return 0;
}
bool player_t::HasWeaponsInSlot(int slot) const
{
for (int i = 0; i < weapons.SlotSize(slot); i++)
@ -703,7 +696,6 @@ DEFINE_ACTION_FUNCTION(_PlayerInfo, HasWeaponsInSlot)
ACTION_RETURN_BOOL(self->HasWeaponsInSlot(slot));
}
bool player_t::Resurrect()
{
if (mo == nullptr || mo->IsKindOf(NAME_PlayerChunk)) return false;
@ -885,7 +877,6 @@ DEFINE_ACTION_FUNCTION(_PlayerInfo, GetStillBob)
ACTION_RETURN_FLOAT(self->userinfo.GetStillBob());
}
//===========================================================================
//
//
@ -1035,7 +1026,6 @@ DEFINE_ACTION_FUNCTION(AActor, A_PlayerScream)
return 0;
}
//===========================================================================
//
// P_CheckPlayerSprites
@ -1284,7 +1274,6 @@ void P_CheckUse(player_t *player)
}
}
DEFINE_ACTION_FUNCTION(APlayerPawn, CheckUse)
{
PARAM_SELF_PROLOGUE(AActor);
@ -1841,7 +1830,6 @@ bool P_IsPlayerTotallyFrozen(const player_t *player)
player->mo->isFrozen();
}
//==========================================================================
//
// native members

View file

@ -4,6 +4,7 @@
// Copyright 1994-1996 Raven Software
// Copyright 1999-2016 Randy Heit
// Copyright 2002-2016 Christoph Oelckers
// Copyright 2017-2025 GZDoom Maintainers and Contributors
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@ -32,41 +33,31 @@
#include <stdlib.h>
#include <math.h>
#include "doomdef.h"
#include "d_net.h"
#include "doomstat.h"
#include "m_random.h"
#include "m_bbox.h"
#include "r_sky.h"
#include "st_stuff.h"
#include "c_dispatch.h"
#include "v_video.h"
#include "stats.h"
#include "i_video.h"
#include "a_sharedglobal.h"
#include "p_3dmidtex.h"
#include "r_data/r_interpolate.h"
#include "po_man.h"
#include "p_effect.h"
#include "st_start.h"
#include "v_font.h"
#include "swrenderer/r_renderer.h"
#include "serializer.h"
#include "r_utility.h"
#include "d_player.h"
#include "p_local.h"
#include "g_levellocals.h"
#include "p_maputl.h"
#include "sbar.h"
#include "vm.h"
#include "i_time.h"
#include "actorinlines.h"
#include "g_game.h"
#include "i_system.h"
#include "v_draw.h"
#include "i_interface.h"
#include "d_main.h"
#include "d_net.h"
#include "d_player.h"
#include "doomstat.h"
#include "g_game.h"
#include "g_levellocals.h"
#include "i_interface.h"
#include "i_time.h"
#include "i_video.h"
#include "m_random.h"
#include "p_3dmidtex.h"
#include "p_effect.h"
#include "p_local.h"
#include "p_maputl.h"
#include "r_data/r_interpolate.h"
#include "r_sky.h"
#include "r_utility.h"
#include "sbar.h"
#include "serializer.h"
#include "swrenderer/r_renderer.h"
#include "v_draw.h"
#include "v_video.h"
#include "vm.h"
const float MY_SQRT2 = float(1.41421356237309504880); // sqrt(2)
// EXTERNAL DATA DECLARATIONS ----------------------------------------------
@ -283,7 +274,6 @@ void R_SetWindow (FRenderViewpoint &viewpoint, FViewWindow &viewwindow, int wind
viewwindow.centerxwide = viewwindow.centerx * AspectMultiplier(viewwindow.WidescreenRatio) / 48;
}
DAngle fov = viewpoint.FieldOfView;
// For widescreen displays, increase the FOV so that the middle part of the
@ -855,7 +845,6 @@ bool R_GetViewInterpolationStatus()
return NoInterpolateView;
}
//==========================================================================
//
// R_ClearInterpolationPath
@ -1214,7 +1203,6 @@ void R_SetupFrame(FRenderViewpoint& viewPoint, const FViewWindow& viewWindow, AA
viewPoint.ViewActor = viewPoint.showviewer ? nullptr : actor;
}
CUSTOM_CVAR(Float, maxviewpitch, 90.f, CVAR_ARCHIVE | CVAR_SERVERINFO)
{
if (self>90.f) self = 90.f;
@ -1266,5 +1254,4 @@ bool R_ShouldDrawSpriteShadow(AActor *thing)
}
return doit;
}

View file

@ -1,9 +1,11 @@
/*
** s_advsound.cpp
**
** Routines for managing SNDINFO lumps and ambient sounds
**
**---------------------------------------------------------------------------
** Copyright 1998-2008 Randy Heit
** Copyright 2017-2025 GZDoom Maintainers and Contributors
** All rights reserved.
**
** Redistribution and use in source and binary forms, with or without
@ -34,22 +36,18 @@
// HEADER FILES ------------------------------------------------------------
#include "actor.h"
#include "c_dispatch.h"
#include "filesystem.h"
#include "gi.h"
#include "i_sound.h"
#include "d_netinf.h"
#include "d_player.h"
#include "serializer.h"
#include "v_text.h"
#include "g_levellocals.h"
#include "r_data/sprites.h"
#include "vm.h"
#include "i_system.h"
#include "s_music.h"
#include "filesystem.h"
#include "gi.h"
#include "i_music.h"
#include "i_sound.h"
#include "r_data/sprites.h"
#include "s_music.h"
#include "serializer.h"
#include "vm.h"
using namespace FileSys;
@ -249,7 +247,6 @@ static bool PlayerClassesIsSorted;
static TArray<FPlayerClassLookup> PlayerClassLookups;
static TArray<FPlayerSoundHashTable> PlayerSounds;
static FString DefPlayerClassName;
static int DefPlayerClass;
@ -1404,7 +1401,6 @@ static FSoundID S_LookupPlayerSound (int classidx, int gender, FSoundID refid)
return sndnum;
}
//==========================================================================
//
// S_SavePlayerSound / S_RestorePlayerSounds
@ -1847,7 +1843,6 @@ DEFINE_ACTION_FUNCTION(AAmbientSound, Deactivate)
return 0;
}
//==========================================================================
//
// S_ParseMusInfo
@ -1889,7 +1884,6 @@ void S_ParseMusInfo()
}
}
DEFINE_ACTION_FUNCTION(DObject, MarkSound)
{
PARAM_PROLOGUE;

View file

@ -1,5 +1,5 @@
/*
** doomspund.cpp
** s_doomsound.cpp
**
** Game dependent part of the sound engine.
**
@ -7,6 +7,7 @@
**
** Copyright 1999-2016 Randy Heit
** Copyright 2002-2019 Christoph Oelckers
** Copyright 2017-2025 GZDoom Maintainers and Contributors
**
** Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions
@ -34,43 +35,41 @@
**
*/
#include "v_font.h"
#include <stdio.h>
#include <stdlib.h>
#ifdef _WIN32
#include <io.h>
#endif
#include "i_system.h"
#include "i_sound.h"
#include "i_music.h"
#include "s_sound.h"
#include "s_sndseq.h"
#include "s_playlist.h"
#include "c_dispatch.h"
#include "m_random.h"
#include "filesystem.h"
#include "p_local.h"
#include "doomstat.h"
#include "cmdlib.h"
#include "v_video.h"
#include "v_text.h"
#include "a_sharedglobal.h"
#include "gstrings.h"
#include "gi.h"
#include "po_man.h"
#include "serializer_doom.h"
#include "c_dispatch.h"
#include "cmdlib.h"
#include "d_player.h"
#include "g_levellocals.h"
#include "vm.h"
#include "doomstat.h"
#include "filesystem.h"
#include "g_game.h"
#include "s_music.h"
#include "v_draw.h"
#include "g_levellocals.h"
#include "gi.h"
#include "gstrings.h"
#include "i_music.h"
#include "i_sound.h"
#include "i_soundinternal.h"
#include "m_argv.h"
#include "m_random.h"
#include "p_local.h"
#include "po_man.h"
#include "printf.h"
#include "s_music.h"
#include "s_sndseq.h"
#include "s_sound.h"
#include "serializer_doom.h"
#include "v_draw.h"
#include "vm.h"
// PUBLIC DATA DEFINITIONS -------------------------------------------------
static FString LastLocalSndInfo;
static FString LastLocalSndSeq;
void S_AddLocalSndInfo(int lump);
@ -99,14 +98,12 @@ class DoomSoundEngine : public SoundEngine
return SoundEngine::CheckSoundLimit(sfx, pos, near_limit, limit_range, sourcetype, actor, channel, attenuation);
}
public:
DoomSoundEngine() = default;
void NoiseDebug(void);
void PrintSoundList();
};
//==========================================================================
//
// LookupMusic
@ -254,7 +251,6 @@ void S_Shutdown()
}
}
//==========================================================================
//
// S_Start
@ -356,7 +352,6 @@ void S_PrecacheLevel(FLevelLocals* Level)
}
}
//==========================================================================
//
// S_InitData
@ -370,7 +365,6 @@ void S_InitData()
S_ParseSndSeq(-1);
}
//==========================================================================
//
// S_Sound - Unpositioned version
@ -437,7 +431,6 @@ DEFINE_ACTION_FUNCTION_NATIVE(DObject, S_StartSoundAt, S_StartSoundAt)
return 0;
}
//==========================================================================
//
//
@ -510,7 +503,6 @@ void DoomSoundEngine::StopChannel(FSoundChan* chan)
SoundEngine::StopChannel(chan);
}
//==========================================================================
//
// S_Sound - An actor is source
@ -636,7 +628,6 @@ void A_PlaySound(AActor* self, int soundid, int channel, double volume, int loop
A_StartSound(self, soundid, channel & 7, channel & ~7, volume, attenuation, pitch, 0.0f);
}
//==========================================================================
//
// S_StopSound
@ -1186,6 +1177,7 @@ TArray<uint8_t> DoomSoundEngine::ReadSound(int lumpnum)
// This is overridden to use a synchronized RNG.
//
//==========================================================================
static FCRandom pr_randsound("RandSound");
FSoundID DoomSoundEngine::PickReplacement(FSoundID refid)
@ -1234,7 +1226,6 @@ void DoomSoundEngine::NoiseDebug()
return;
}
listener = players[consoleplayer].camera->SoundPos();
// Display the oldest channel first.
@ -1318,7 +1309,6 @@ void DoomSoundEngine::NoiseDebug()
mysnprintf(temp, countof(temp), "%u", GSnd->GetPosition(chan));
DrawText(twod, NewConsoleFont, color, 520, y, temp, TAG_DONE);
y += NewConsoleFont->GetHeight();
if (chan->PrevChan == &Channels)
{
@ -1334,7 +1324,6 @@ ADD_STAT(sounddebug)
return "";
}
//==========================================================================
//
// CCMD soundlist