- did a bit of header cleanup to reduce the dependency on dobject.h.

This commit is contained in:
Christoph Oelckers 2017-03-09 23:30:42 +01:00
parent 1c81c40c59
commit a4710bcdb0
48 changed files with 226 additions and 274 deletions

View file

@ -10,7 +10,7 @@
#include "c_cvars.h" #include "c_cvars.h"
#include "info.h" #include "info.h"
#include "doomdef.h" #include "doomdef.h"
#include "d_ticcmd.h" #include "d_protocol.h"
#include "r_defs.h" #include "r_defs.h"
#include "a_pickups.h" #include "a_pickups.h"
#include "stats.h" #include "stats.h"

View file

@ -10,7 +10,7 @@
#include "p_local.h" #include "p_local.h"
#include "b_bot.h" #include "b_bot.h"
#include "g_game.h" #include "g_game.h"
#include "d_ticcmd.h" #include "d_protocol.h"
#include "m_random.h" #include "m_random.h"
#include "i_system.h" #include "i_system.h"
#include "p_lnspec.h" #include "p_lnspec.h"

View file

@ -45,6 +45,7 @@
#include "d_event.h" #include "d_event.h"
#include "w_wad.h" #include "w_wad.h"
#include "templates.h" #include "templates.h"
#include "dobject.h"
#include <math.h> #include <math.h>
#include <stdlib.h> #include <stdlib.h>

View file

@ -25,7 +25,7 @@
#include "doomtype.h" #include "doomtype.h"
#include "doomdef.h" #include "doomdef.h"
#include "d_ticcmd.h" #include "d_protocol.h"
// //

View file

@ -36,8 +36,6 @@
#include "c_cvars.h" #include "c_cvars.h"
EXTERN_CVAR (Float, autoaim)
int D_GenderToInt (const char *gender); int D_GenderToInt (const char *gender);
extern const char *GenderNames[3]; extern const char *GenderNames[3];

View file

@ -26,7 +26,7 @@
// Finally, for odd reasons, the player input // Finally, for odd reasons, the player input
// is buffered within the player data struct, // is buffered within the player data struct,
// as commands per game tick. // as commands per game tick.
#include "d_ticcmd.h" #include "d_protocol.h"
#include "doomstat.h" #include "doomstat.h"
#include "a_weapons.h" #include "a_weapons.h"

View file

@ -33,7 +33,7 @@
*/ */
#include "i_system.h" #include "i_system.h"
#include "d_ticcmd.h" #include "d_protocol.h"
#include "d_net.h" #include "d_net.h"
#include "doomdef.h" #include "doomdef.h"
#include "doomstat.h" #include "doomstat.h"

View file

@ -229,7 +229,15 @@ int UnpackUserCmd (usercmd_t *ucmd, const usercmd_t *basis, uint8_t **stream);
int PackUserCmd (const usercmd_t *ucmd, const usercmd_t *basis, uint8_t **stream); int PackUserCmd (const usercmd_t *ucmd, const usercmd_t *basis, uint8_t **stream);
int WriteUserCmdMessage (usercmd_t *ucmd, const usercmd_t *basis, uint8_t **stream); int WriteUserCmdMessage (usercmd_t *ucmd, const usercmd_t *basis, uint8_t **stream);
struct ticcmd_t; // The data sampled per tick (single player)
// and transmitted to other peers (multiplayer).
// Mainly movements/button commands per game tick,
// plus a checksum for internal state consistency.
struct ticcmd_t
{
usercmd_t ucmd;
int16_t consistancy; // checks for net game
};
int SkipTicCmd (uint8_t **stream, int count); int SkipTicCmd (uint8_t **stream, int count);
void ReadTicCmd (uint8_t **stream, int player, int tic); void ReadTicCmd (uint8_t **stream, int player, int tic);

View file

@ -1,38 +0,0 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// $Id:$
//
// Copyright (C) 1993-1996 by id Software, Inc.
//
// This source is available for distribution and/or modification
// only under the terms of the DOOM Source Code License as
// published by id Software. All rights reserved.
//
// The source is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License
// for more details.
//
// DESCRIPTION:
// System specific interface stuff.
//
//-----------------------------------------------------------------------------
#ifndef __D_TICCMD_H__
#define __D_TICCMD_H__
#include "d_protocol.h"
// The data sampled per tick (single player)
// and transmitted to other peers (multiplayer).
// Mainly movements/button commands per game tick,
// plus a checksum for internal state consistency.
struct ticcmd_t
{
usercmd_t ucmd;
int16_t consistancy; // checks for net game
};
#endif // __D_TICCMD_H__

View file

@ -38,7 +38,6 @@
#include "doomtype.h" #include "doomtype.h"
#include "r_data/renderstyle.h" #include "r_data/renderstyle.h"
#include "textures/textures.h"
class FScanner; class FScanner;
class FDecalTemplate; class FDecalTemplate;

View file

@ -65,7 +65,6 @@
#include "sbar.h" #include "sbar.h"
#include "stats.h" #include "stats.h"
#include "c_dispatch.h" #include "c_dispatch.h"
#include "p_acs.h"
#include "s_sndseq.h" #include "s_sndseq.h"
#include "r_data/r_interpolate.h" #include "r_data/r_interpolate.h"
#include "doomstat.h" #include "doomstat.h"
@ -80,6 +79,8 @@
#include "g_levellocals.h" #include "g_levellocals.h"
#include "events.h" #include "events.h"
void MarkACSThinker();
// MACROS ------------------------------------------------------------------ // MACROS ------------------------------------------------------------------
/* /*
@ -331,7 +332,7 @@ static void MarkRoot()
Mark(DIntermissionController::CurrentIntermission); Mark(DIntermissionController::CurrentIntermission);
DThinker::MarkRoots(); DThinker::MarkRoots();
FCanvasTextureInfo::Mark(); FCanvasTextureInfo::Mark();
Mark(DACSThinker::ActiveThinker); MarkACSThinker();
Mark(E_FirstEventHandler); Mark(E_FirstEventHandler);
Mark(E_LastEventHandler); Mark(E_LastEventHandler);
for (auto &s : level.sectorPortals) for (auto &s : level.sectorPortals)

View file

@ -8,6 +8,13 @@
typedef std::pair<const class PType *, unsigned> FTypeAndOffset; typedef std::pair<const class PType *, unsigned> FTypeAndOffset;
class PStruct; class PStruct;
// This is intentionally not in vm.h so that this file remains free of DObject pollution.
class VMException : public DObject
{
DECLARE_CLASS(VMException, DObject);
};
#include "vm.h" #include "vm.h"
// Variable/parameter/field flags ------------------------------------------- // Variable/parameter/field flags -------------------------------------------

View file

@ -1,26 +0,0 @@
enum
{
EX_Return = 0x00,
EX_EndFuncParms = 0x01,
EX_ByteConst = 0x02,
EX_WordConst = 0x03,
EX_DWordConst = 0x04,
EX_FixedConst = 0x05, // To become FloatConst whenever I move to floats
EX_StringConst = 0x06,
EX_Extended1 = 0xF1,
EX_Extended2 = 0xF2,
EX_Extended3 = 0xF3,
EX_Extended4 = 0xF4,
EX_Extended5 = 0xF5,
EX_Extended6 = 0xF6,
EX_Extended7 = 0xF7,
EX_Extended8 = 0xF8,
EX_Extended9 = 0xF9,
EX_ExtendedA = 0xFA,
EX_ExtendedB = 0xFB,
EX_ExtendedC = 0xFC,
EX_ExtendedD = 0xFD,
EX_ExtendedE = 0xFE,
EX_ExtendedF = 0xFF
};

View file

@ -35,16 +35,12 @@
#define __G_LEVEL_H__ #define __G_LEVEL_H__
#include "doomtype.h" #include "doomtype.h"
#include "doomdef.h"
#include "sc_man.h" #include "sc_man.h"
#include "s_sound.h"
#include "p_acs.h"
#include "textures/textures.h"
#include "resourcefiles/file_zip.h" #include "resourcefiles/file_zip.h"
struct level_info_t; struct level_info_t;
struct cluster_info_t; struct cluster_info_t;
class FScanner; class FSerializer;
#if defined(_MSC_VER) #if defined(_MSC_VER)
#pragma section(".yreg$u",read) #pragma section(".yreg$u",read)
@ -55,6 +51,24 @@ class FScanner;
#define GCC_YSEG __attribute__((section(SECTION_YREG))) __attribute__((used)) #define GCC_YSEG __attribute__((section(SECTION_YREG))) __attribute__((used))
#endif #endif
// The structure used to control scripts between maps
struct acsdefered_t
{
enum EType
{
defexecute,
defexealways,
defsuspend,
defterminate
} type;
int script;
int args[3];
int playernum;
};
FSerializer &Serialize(FSerializer &arc, const char *key, acsdefered_t &defer, acsdefered_t *def);
struct FIntermissionDescriptor; struct FIntermissionDescriptor;
struct FIntermissionAction; struct FIntermissionAction;
@ -339,7 +353,7 @@ struct level_info_t
TArray<FSpecialAction> specialactions; TArray<FSpecialAction> specialactions;
TArray<FSoundID> PrecacheSounds; TArray<int> PrecacheSounds;
TArray<FString> PrecacheTextures; TArray<FString> PrecacheTextures;
TArray<FName> PrecacheClasses; TArray<FName> PrecacheClasses;

View file

@ -21,3 +21,10 @@
#include <limits> #include <limits>
#include <memory> #include <memory>
#include <tuple> #include <tuple>
#include <vector>
#include <utility>
// These two headers get included nearly everywhere so it doesn't matter if changing them forces a few more recompiles.
// The overall savings from PCHing them are more significant.
#include "tarray.h"
#include "zstring.h"

View file

@ -125,6 +125,21 @@ const char* GameInfoBorders[] =
} \ } \
while (sc.CheckToken(',')); \ while (sc.CheckToken(',')); \
} }
#define GAMEINFOKEY_SOUNDARRAY(key, variable, length, clear) \
else if(nextKey.CompareNoCase(variable) == 0) \
{ \
if (clear) gameinfo.key.Clear(); \
do \
{ \
sc.MustGetToken(TK_StringConst); \
if(length > 0 && strlen(sc.String) > length) \
{ \
sc.ScriptError("Value for '%s' can not be longer than %d characters.", #key, length); \
} \
gameinfo.key[gameinfo.key.Reserve(1)] = FSoundID(sc.String); \
} \
while (sc.CheckToken(',')); \
}
#define GAMEINFOKEY_STRING(key, variable) \ #define GAMEINFOKEY_STRING(key, variable) \
else if(nextKey.CompareNoCase(variable) == 0) \ else if(nextKey.CompareNoCase(variable) == 0) \
@ -323,7 +338,7 @@ void FMapInfoParser::ParseGameInfo()
GAMEINFOKEY_STRINGARRAY(infoPages, "infoPage", 8, true) GAMEINFOKEY_STRINGARRAY(infoPages, "infoPage", 8, true)
GAMEINFOKEY_STRINGARRAY(PrecachedClasses, "precacheclasses", 0, false) GAMEINFOKEY_STRINGARRAY(PrecachedClasses, "precacheclasses", 0, false)
GAMEINFOKEY_STRINGARRAY(PrecachedTextures, "precachetextures", 0, false) GAMEINFOKEY_STRINGARRAY(PrecachedTextures, "precachetextures", 0, false)
GAMEINFOKEY_STRINGARRAY(PrecachedSounds, "precachesounds", 0, false) GAMEINFOKEY_SOUNDARRAY(PrecachedSounds, "precachesounds", 0, false)
GAMEINFOKEY_STRINGARRAY(EventHandlers, "addeventhandlers", 0, true) GAMEINFOKEY_STRINGARRAY(EventHandlers, "addeventhandlers", 0, true)
GAMEINFOKEY_STRINGARRAY(EventHandlers, "eventhandlers", 0, false) GAMEINFOKEY_STRINGARRAY(EventHandlers, "eventhandlers", 0, false)
GAMEINFOKEY_STRING(PauseSign, "pausesign") GAMEINFOKEY_STRING(PauseSign, "pausesign")

View file

@ -36,7 +36,6 @@
#include "basictypes.h" #include "basictypes.h"
#include "zstring.h" #include "zstring.h"
#include "s_sound.h"
// Flags are not user configurable and only depend on the standard IWADs // Flags are not user configurable and only depend on the standard IWADs
#define GI_MAPxx 0x00000001 #define GI_MAPxx 0x00000001
@ -123,7 +122,7 @@ struct gameinfo_t
TArray<FName> PrecachedClasses; TArray<FName> PrecachedClasses;
TArray<FString> PrecachedTextures; TArray<FString> PrecachedTextures;
TArray<FSoundID> PrecachedSounds; TArray<int> PrecachedSounds;
TArray<FString> EventHandlers; TArray<FString> EventHandlers;
FString titleMusic; FString titleMusic;

View file

@ -26,7 +26,6 @@
*/ */
#include "gl/system/gl_system.h" #include "gl/system/gl_system.h"
#include "files.h"
#include "m_swap.h" #include "m_swap.h"
#include "v_video.h" #include "v_video.h"
#include "gl/gl_functions.h" #include "gl/gl_functions.h"

View file

@ -21,7 +21,6 @@
// //
#include "gl/system/gl_system.h" #include "gl/system/gl_system.h"
#include "files.h"
#include "m_swap.h" #include "m_swap.h"
#include "v_video.h" #include "v_video.h"
#include "gl/gl_functions.h" #include "gl/gl_functions.h"

View file

@ -26,7 +26,6 @@
*/ */
#include "gl/system/gl_system.h" #include "gl/system/gl_system.h"
#include "files.h"
#include "m_swap.h" #include "m_swap.h"
#include "v_video.h" #include "v_video.h"
#include "gl/gl_functions.h" #include "gl/gl_functions.h"

View file

@ -26,7 +26,6 @@
*/ */
#include "gl/system/gl_system.h" #include "gl/system/gl_system.h"
#include "files.h"
#include "m_swap.h" #include "m_swap.h"
#include "v_video.h" #include "v_video.h"
#include "gl/gl_functions.h" #include "gl/gl_functions.h"

View file

@ -26,7 +26,6 @@
*/ */
#include "gl/system/gl_system.h" #include "gl/system/gl_system.h"
#include "files.h"
#include "m_swap.h" #include "m_swap.h"
#include "v_video.h" #include "v_video.h"
#include "gl/gl_functions.h" #include "gl/gl_functions.h"

View file

@ -26,7 +26,6 @@
*/ */
#include "gl/system/gl_system.h" #include "gl/system/gl_system.h"
#include "files.h"
#include "m_swap.h" #include "m_swap.h"
#include "v_video.h" #include "v_video.h"
#include "gl/gl_functions.h" #include "gl/gl_functions.h"

View file

@ -28,7 +28,6 @@
*/ */
#include "gl/system/gl_system.h" #include "gl/system/gl_system.h"
#include "files.h"
#include "m_swap.h" #include "m_swap.h"
#include "v_video.h" #include "v_video.h"
#include "gl/gl_functions.h" #include "gl/gl_functions.h"

View file

@ -26,7 +26,6 @@
*/ */
#include "gl/system/gl_system.h" #include "gl/system/gl_system.h"
#include "files.h"
#include "m_swap.h" #include "m_swap.h"
#include "v_video.h" #include "v_video.h"
#include "gl/gl_functions.h" #include "gl/gl_functions.h"

View file

@ -26,7 +26,6 @@
*/ */
#include "gl/system/gl_system.h" #include "gl/system/gl_system.h"
#include "files.h"
#include "m_swap.h" #include "m_swap.h"
#include "v_video.h" #include "v_video.h"
#include "gl/gl_functions.h" #include "gl/gl_functions.h"

View file

@ -26,7 +26,6 @@
*/ */
#include "gl/system/gl_system.h" #include "gl/system/gl_system.h"
#include "files.h"
#include "m_swap.h" #include "m_swap.h"
#include "v_video.h" #include "v_video.h"
#include "gl/gl_functions.h" #include "gl/gl_functions.h"

View file

@ -27,7 +27,6 @@
*/ */
#include "gl/system/gl_system.h" #include "gl/system/gl_system.h"
#include "files.h"
#include "m_swap.h" #include "m_swap.h"
#include "v_video.h" #include "v_video.h"
#include "doomstat.h" #include "doomstat.h"

View file

@ -39,7 +39,6 @@
*/ */
#include "gl/system/gl_system.h" #include "gl/system/gl_system.h"
#include "files.h"
#include "m_swap.h" #include "m_swap.h"
#include "v_video.h" #include "v_video.h"
#include "doomstat.h" #include "doomstat.h"

View file

@ -35,7 +35,6 @@
// HEADER FILES ------------------------------------------------------------ // HEADER FILES ------------------------------------------------------------
#include "gl/system/gl_system.h" #include "gl/system/gl_system.h"
#include "files.h"
#include "m_swap.h" #include "m_swap.h"
#include "v_video.h" #include "v_video.h"
#include "doomstat.h" #include "doomstat.h"

View file

@ -25,7 +25,6 @@
*/ */
#include "gl/system/gl_system.h" #include "gl/system/gl_system.h"
#include "files.h"
#include "f_wipe.h" #include "f_wipe.h"
#include "m_random.h" #include "m_random.h"
#include "w_wad.h" #include "w_wad.h"

View file

@ -50,6 +50,7 @@
#include "g_levellocals.h" #include "g_levellocals.h"
#include "virtual.h" #include "virtual.h"
#include "events.h" #include "events.h"
#include "p_acs.h"
// [RH] Actually handle the cheat. The cheat code in st_stuff.c now just // [RH] Actually handle the cheat. The cheat code in st_stuff.c now just
// writes some bytes to the network data stream, and the network code // writes some bytes to the network data stream, and the network code

View file

@ -36,8 +36,9 @@
#include <stdio.h> #include <stdio.h>
#include "doomtype.h" #include "doomtype.h"
#include "v_video.h" #include "v_video.h"
#include "files.h"
class FileReader;
class FileWriter;
// PNG Writing -------------------------------------------------------------- // PNG Writing --------------------------------------------------------------
// Start writing an 8-bit palettized PNG file. // Start writing an 8-bit palettized PNG file.

View file

@ -20,6 +20,7 @@
#include "doomtype.h" #include "doomtype.h"
#include "md5.h" #include "md5.h"
#include "templates.h" #include "templates.h"
#include "files.h"
#ifdef __BIG_ENDIAN__ #ifdef __BIG_ENDIAN__
void byteSwap(uint32_t *buf, unsigned words) void byteSwap(uint32_t *buf, unsigned words)

View file

@ -18,7 +18,7 @@
#ifndef MD5_H #ifndef MD5_H
#define MD5_H #define MD5_H
#include "files.h" class FileReader;
struct MD5Context struct MD5Context
{ {

View file

@ -37,11 +37,7 @@ typedef enum
} ffloortype_e; } ffloortype_e;
// This is for the purpose of Sector_SetContents: // This is for the purpose of Sector_SetContents:
#ifdef _MSC_VER enum : unsigned int
enum : unsigned int // MSVC is apparently the only compiler that supports this syntax
#else
enum
#endif
{ {
VC_EMPTY = 0, // Here's the original values of the color shifts in Vavoom, and in ARGB: VC_EMPTY = 0, // Here's the original values of the color shifts in Vavoom, and in ARGB:
VC_WATER = 0x80825032, // 130, 80, 50, 128 -> 80.82.50.32 (was 0x101080) VC_WATER = 0x80825032, // 130, 80, 50, 128 -> 80.82.50.32 (was 0x101080)
@ -60,7 +56,8 @@ enum
struct secplane_t; struct secplane_t;
struct FDynamicColormap; struct FDynamicColormap;
struct line_t;
struct sector_t;
struct F3DFloor struct F3DFloor
{ {
@ -115,7 +112,7 @@ struct lightlist_t
class player_s; class player_t;
void P_PlayerOnSpecial3DFloor(player_t* player); void P_PlayerOnSpecial3DFloor(player_t* player);
bool P_CheckFor3DFloorHit(AActor * mo, double z); bool P_CheckFor3DFloorHit(AActor * mo, double z);

View file

@ -659,6 +659,134 @@ struct CallReturn
unsigned int EntryInstrCount; unsigned int EntryInstrCount;
}; };
class DLevelScript : public DObject
{
DECLARE_CLASS(DLevelScript, DObject)
HAS_OBJECT_POINTERS
public:
enum EScriptState
{
SCRIPT_Running,
SCRIPT_Suspended,
SCRIPT_Delayed,
SCRIPT_TagWait,
SCRIPT_PolyWait,
SCRIPT_ScriptWaitPre,
SCRIPT_ScriptWait,
SCRIPT_PleaseRemove,
SCRIPT_DivideBy0,
SCRIPT_ModulusBy0,
};
DLevelScript(AActor *who, line_t *where, int num, const ScriptPtr *code, FBehavior *module,
const int *args, int argcount, int flags);
~DLevelScript();
void Serialize(FSerializer &arc);
int RunScript();
inline void SetState(EScriptState newstate) { state = newstate; }
inline EScriptState GetState() { return state; }
DLevelScript *GetNext() const { return next; }
void MarkLocalVarStrings() const
{
GlobalACSStrings.MarkStringArray(&Localvars[0], Localvars.Size());
}
void LockLocalVarStrings() const
{
GlobalACSStrings.LockStringArray(&Localvars[0], Localvars.Size());
}
void UnlockLocalVarStrings() const
{
GlobalACSStrings.UnlockStringArray(&Localvars[0], Localvars.Size());
}
protected:
DLevelScript *next, *prev;
int script;
TArray<int32_t> Localvars;
int *pc;
EScriptState state;
int statedata;
TObjPtr<AActor*> activator;
line_t *activationline;
bool backSide;
FFont *activefont;
int hudwidth, hudheight;
int ClipRectLeft, ClipRectTop, ClipRectWidth, ClipRectHeight;
int WrapWidth;
bool HandleAspect;
FBehavior *activeBehavior;
int InModuleScriptNumber;
void Link();
void Unlink();
void PutLast();
void PutFirst();
static int Random(int min, int max);
static int ThingCount(int type, int stringid, int tid, int tag);
static void ChangeFlat(int tag, int name, bool floorOrCeiling);
static int CountPlayers();
static void SetLineTexture(int lineid, int side, int position, int name);
static int DoSpawn(int type, const DVector3 &pos, int tid, DAngle angle, bool force);
static int DoSpawn(int type, int x, int y, int z, int tid, int angle, bool force);
static bool DoCheckActorTexture(int tid, AActor *activator, int string, bool floor);
int DoSpawnSpot(int type, int spot, int tid, int angle, bool forced);
int DoSpawnSpotFacing(int type, int spot, int tid, bool forced);
int DoClassifyActor(int tid);
int CallFunction(int argCount, int funcIndex, int32_t *args);
void DoFadeTo(int r, int g, int b, int a, int time);
void DoFadeRange(int r1, int g1, int b1, int a1,
int r2, int g2, int b2, int a2, int time);
void DoSetFont(int fontnum);
void SetActorProperty(int tid, int property, int value);
void DoSetActorProperty(AActor *actor, int property, int value);
int GetActorProperty(int tid, int property);
int CheckActorProperty(int tid, int property, int value);
int GetPlayerInput(int playernum, int inputnum);
int LineFromID(int id);
int SideFromID(int id, int side);
private:
DLevelScript();
friend class DACSThinker;
};
class DACSThinker : public DThinker
{
DECLARE_CLASS(DACSThinker, DThinker)
HAS_OBJECT_POINTERS
public:
DACSThinker();
~DACSThinker();
void Serialize(FSerializer &arc);
void Tick();
typedef TMap<int, DLevelScript *> ScriptMap;
ScriptMap RunningScripts; // Array of all synchronous scripts
static TObjPtr<DACSThinker*> ActiveThinker;
void DumpScriptStatus();
void StopScriptsFor(AActor *actor);
private:
DLevelScript *LastScript;
DLevelScript *Scripts; // List of all running scripts
friend class DLevelScript;
friend class FBehavior;
};
static DLevelScript *P_GetScriptGoing (AActor *who, line_t *where, int num, const ScriptPtr *code, FBehavior *module, static DLevelScript *P_GetScriptGoing (AActor *who, line_t *where, int num, const ScriptPtr *code, FBehavior *module,
const int *args, int argcount, int flags); const int *args, int argcount, int flags);
@ -10863,6 +10991,11 @@ CCMD(acsprofile)
ShowProfileData(FuncProfiles, limit, sorter, true); ShowProfileData(FuncProfiles, limit, sorter, true);
} }
void MarkACSThinker()
{
GC::Mark(DACSThinker::ActiveThinker);
}
ADD_STAT(ACS) ADD_STAT(ACS)
{ {
return FStringf("ACS time: %f ms", ACSTime.TimeMS()); return FStringf("ACS time: %f ms", ACSTime.TimeMS());

View file

@ -35,8 +35,6 @@
#ifndef __P_ACS_H__ #ifndef __P_ACS_H__
#define __P_ACS_H__ #define __P_ACS_H__
#include "dobject.h"
#include "dthinker.h"
#include "doomtype.h" #include "doomtype.h"
#define LOCAL_SIZE 20 #define LOCAL_SIZE 20
@ -385,147 +383,4 @@ private:
friend void ArrangeFunctionProfiles(TArray<ProfileCollector> &profiles); friend void ArrangeFunctionProfiles(TArray<ProfileCollector> &profiles);
}; };
class DLevelScript : public DObject
{
DECLARE_CLASS (DLevelScript, DObject)
HAS_OBJECT_POINTERS
public:
enum EScriptState
{
SCRIPT_Running,
SCRIPT_Suspended,
SCRIPT_Delayed,
SCRIPT_TagWait,
SCRIPT_PolyWait,
SCRIPT_ScriptWaitPre,
SCRIPT_ScriptWait,
SCRIPT_PleaseRemove,
SCRIPT_DivideBy0,
SCRIPT_ModulusBy0,
};
DLevelScript (AActor *who, line_t *where, int num, const ScriptPtr *code, FBehavior *module,
const int *args, int argcount, int flags);
~DLevelScript ();
void Serialize(FSerializer &arc);
int RunScript ();
inline void SetState (EScriptState newstate) { state = newstate; }
inline EScriptState GetState () { return state; }
DLevelScript *GetNext() const { return next; }
void MarkLocalVarStrings() const
{
GlobalACSStrings.MarkStringArray(&Localvars[0], Localvars.Size());
}
void LockLocalVarStrings() const
{
GlobalACSStrings.LockStringArray(&Localvars[0], Localvars.Size());
}
void UnlockLocalVarStrings() const
{
GlobalACSStrings.UnlockStringArray(&Localvars[0], Localvars.Size());
}
protected:
DLevelScript *next, *prev;
int script;
TArray<int32_t> Localvars;
int *pc;
EScriptState state;
int statedata;
TObjPtr<AActor*> activator;
line_t *activationline;
bool backSide;
FFont *activefont;
int hudwidth, hudheight;
int ClipRectLeft, ClipRectTop, ClipRectWidth, ClipRectHeight;
int WrapWidth;
bool HandleAspect;
FBehavior *activeBehavior;
int InModuleScriptNumber;
void Link ();
void Unlink ();
void PutLast ();
void PutFirst ();
static int Random (int min, int max);
static int ThingCount (int type, int stringid, int tid, int tag);
static void ChangeFlat (int tag, int name, bool floorOrCeiling);
static int CountPlayers ();
static void SetLineTexture (int lineid, int side, int position, int name);
static int DoSpawn (int type, const DVector3 &pos, int tid, DAngle angle, bool force);
static int DoSpawn(int type, int x, int y, int z, int tid, int angle, bool force);
static bool DoCheckActorTexture(int tid, AActor *activator, int string, bool floor);
int DoSpawnSpot (int type, int spot, int tid, int angle, bool forced);
int DoSpawnSpotFacing (int type, int spot, int tid, bool forced);
int DoClassifyActor (int tid);
int CallFunction(int argCount, int funcIndex, int32_t *args);
void DoFadeTo (int r, int g, int b, int a, int time);
void DoFadeRange (int r1, int g1, int b1, int a1,
int r2, int g2, int b2, int a2, int time);
void DoSetFont (int fontnum);
void SetActorProperty (int tid, int property, int value);
void DoSetActorProperty (AActor *actor, int property, int value);
int GetActorProperty (int tid, int property);
int CheckActorProperty (int tid, int property, int value);
int GetPlayerInput (int playernum, int inputnum);
int LineFromID(int id);
int SideFromID(int id, int side);
private:
DLevelScript ();
friend class DACSThinker;
};
class DACSThinker : public DThinker
{
DECLARE_CLASS (DACSThinker, DThinker)
HAS_OBJECT_POINTERS
public:
DACSThinker ();
~DACSThinker ();
void Serialize(FSerializer &arc);
void Tick ();
typedef TMap<int, DLevelScript *> ScriptMap;
ScriptMap RunningScripts; // Array of all synchronous scripts
static TObjPtr<DACSThinker*> ActiveThinker;
void DumpScriptStatus();
void StopScriptsFor (AActor *actor);
private:
DLevelScript *LastScript;
DLevelScript *Scripts; // List of all running scripts
friend class DLevelScript;
friend class FBehavior;
};
// The structure used to control scripts between maps
struct acsdefered_t
{
enum EType
{
defexecute,
defexealways,
defsuspend,
defterminate
} type;
int script;
int args[3];
int playernum;
};
FSerializer &Serialize(FSerializer &arc, const char *key, acsdefered_t &defer, acsdefered_t *def);
#endif //__P_ACS_H__ #endif //__P_ACS_H__

View file

@ -22,6 +22,8 @@
#pragma once #pragma once
#include <vector>
struct TriVertex; struct TriVertex;
class PolySubsectorGBuffer class PolySubsectorGBuffer

View file

@ -38,7 +38,7 @@
#include <sys/stat.h> #include <sys/stat.h>
#include <sys/sysctl.h> #include <sys/sysctl.h>
#include "d_ticcmd.h" #include "d_protocol.h"
#include "doomdef.h" #include "doomdef.h"
#include "doomerrors.h" #include "doomerrors.h"
#include "doomstat.h" #include "doomstat.h"

View file

@ -1,6 +1,4 @@
#ifndef __R_BLEND_H #pragma once
#define __R_BLEND_H
/* /*
** r_blend.h ** r_blend.h
** Constants and types for specifying texture blending. ** Constants and types for specifying texture blending.
@ -162,4 +160,3 @@ inline FRenderStyle &FRenderStyle::operator= (ERenderStyle legacy)
return *this; return *this;
} }
#endif

View file

@ -491,14 +491,14 @@ void S_PrecacheLevel ()
actor->MarkPrecacheSounds(); actor->MarkPrecacheSounds();
} }
} }
for (auto i : gameinfo.PrecachedSounds) for (auto snd : gameinfo.PrecachedSounds)
{ {
level.info->PrecacheSounds[i].MarkUsed(); FSoundID(snd).MarkUsed();
} }
// Precache all extra sounds requested by this map. // Precache all extra sounds requested by this map.
for (i = 0; i < level.info->PrecacheSounds.Size(); ++i) for (auto snd : level.info->PrecacheSounds)
{ {
level.info->PrecacheSounds[i].MarkUsed(); FSoundID(snd).MarkUsed();
} }
// Don't unload sounds that are playing right now. // Don't unload sounds that are playing right now.
for (FSoundChan *chan = Channels; chan != NULL; chan = chan->NextChan) for (FSoundChan *chan = Channels; chan != NULL; chan = chan->NextChan)

View file

@ -2,6 +2,9 @@
#include "zstring.h" #include "zstring.h"
class PClass;
class VMFunction;
// //
// [ZZ] this really should be in codegen.h, but vmexec needs to access it // [ZZ] this really should be in codegen.h, but vmexec needs to access it
struct FScopeBarrier struct FScopeBarrier

View file

@ -50,7 +50,6 @@
#include "zstring.h" #include "zstring.h"
#include "d_event.h" #include "d_event.h"
#include "g_levellocals.h" #include "g_levellocals.h"
#include "vm.h"
#include "p_checkposition.h" #include "p_checkposition.h"
#include "r_sky.h" #include "r_sky.h"
#include "v_font.h" #include "v_font.h"

View file

@ -844,11 +844,6 @@ struct VMRegisters
VMValue *param; VMValue *param;
}; };
struct VMException : public DObject
{
DECLARE_CLASS(VMException, DObject);
};
union FVoidObj union FVoidObj
{ {
DObject *o; DObject *o;

View file

@ -1,3 +1,4 @@
#pragma once
/* /*
** tarray.h ** tarray.h
** Templated, automatically resizing array ** Templated, automatically resizing array
@ -32,8 +33,6 @@
** **
*/ */
#ifndef __TARRAY_H__
#define __TARRAY_H__
#include <stdlib.h> #include <stdlib.h>
#include <assert.h> #include <assert.h>
@ -1250,4 +1249,3 @@ protected:
hash_t Position; hash_t Position;
}; };
#endif //__TARRAY_H__

View file

@ -32,6 +32,8 @@
** **
*/ */
#include "g_level.h"
#include <stddef.h> #include <stddef.h>
#include <string.h> #include <string.h>
#include <math.h> #include <math.h>
@ -50,7 +52,6 @@
#include "w_wad.h" #include "w_wad.h"
#include "i_video.h" #include "i_video.h"
#include "c_dispatch.h" #include "c_dispatch.h"
#include "g_level.h"
#include "st_stuff.h" #include "st_stuff.h"
#include "gi.h" #include "gi.h"
#include "x86.h" #include "x86.h"

View file

@ -1,3 +1,4 @@
#pragma once
/* /*
** zstring.h ** zstring.h
** **
@ -31,8 +32,6 @@
** **
*/ */
#ifndef ZSTRING_H
#define ZSTRING_H
#include <stdio.h> #include <stdio.h>
#include <stdarg.h> #include <stdarg.h>
@ -450,4 +449,3 @@ template<> struct THashTraits<FString>
int Compare(const FString &left, const FString &right) { return left.Compare(right); } int Compare(const FString &left, const FString &right) { return left.Compare(right); }
}; };
#endif