mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-26 05:51:20 +00:00
- did a bit of header cleanup to reduce the dependency on dobject.h.
This commit is contained in:
parent
1c81c40c59
commit
a4710bcdb0
48 changed files with 226 additions and 274 deletions
|
@ -10,7 +10,7 @@
|
|||
#include "c_cvars.h"
|
||||
#include "info.h"
|
||||
#include "doomdef.h"
|
||||
#include "d_ticcmd.h"
|
||||
#include "d_protocol.h"
|
||||
#include "r_defs.h"
|
||||
#include "a_pickups.h"
|
||||
#include "stats.h"
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
#include "p_local.h"
|
||||
#include "b_bot.h"
|
||||
#include "g_game.h"
|
||||
#include "d_ticcmd.h"
|
||||
#include "d_protocol.h"
|
||||
#include "m_random.h"
|
||||
#include "i_system.h"
|
||||
#include "p_lnspec.h"
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
#include "d_event.h"
|
||||
#include "w_wad.h"
|
||||
#include "templates.h"
|
||||
#include "dobject.h"
|
||||
|
||||
#include <math.h>
|
||||
#include <stdlib.h>
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
|
||||
#include "doomtype.h"
|
||||
#include "doomdef.h"
|
||||
#include "d_ticcmd.h"
|
||||
#include "d_protocol.h"
|
||||
|
||||
|
||||
//
|
||||
|
|
|
@ -36,8 +36,6 @@
|
|||
|
||||
#include "c_cvars.h"
|
||||
|
||||
EXTERN_CVAR (Float, autoaim)
|
||||
|
||||
int D_GenderToInt (const char *gender);
|
||||
extern const char *GenderNames[3];
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
// Finally, for odd reasons, the player input
|
||||
// is buffered within the player data struct,
|
||||
// as commands per game tick.
|
||||
#include "d_ticcmd.h"
|
||||
#include "d_protocol.h"
|
||||
#include "doomstat.h"
|
||||
|
||||
#include "a_weapons.h"
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
*/
|
||||
|
||||
#include "i_system.h"
|
||||
#include "d_ticcmd.h"
|
||||
#include "d_protocol.h"
|
||||
#include "d_net.h"
|
||||
#include "doomdef.h"
|
||||
#include "doomstat.h"
|
||||
|
|
|
@ -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 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);
|
||||
void ReadTicCmd (uint8_t **stream, int player, int tic);
|
||||
|
|
|
@ -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__
|
|
@ -38,7 +38,6 @@
|
|||
|
||||
#include "doomtype.h"
|
||||
#include "r_data/renderstyle.h"
|
||||
#include "textures/textures.h"
|
||||
|
||||
class FScanner;
|
||||
class FDecalTemplate;
|
||||
|
|
|
@ -65,7 +65,6 @@
|
|||
#include "sbar.h"
|
||||
#include "stats.h"
|
||||
#include "c_dispatch.h"
|
||||
#include "p_acs.h"
|
||||
#include "s_sndseq.h"
|
||||
#include "r_data/r_interpolate.h"
|
||||
#include "doomstat.h"
|
||||
|
@ -80,6 +79,8 @@
|
|||
#include "g_levellocals.h"
|
||||
#include "events.h"
|
||||
|
||||
void MarkACSThinker();
|
||||
|
||||
// MACROS ------------------------------------------------------------------
|
||||
|
||||
/*
|
||||
|
@ -331,7 +332,7 @@ static void MarkRoot()
|
|||
Mark(DIntermissionController::CurrentIntermission);
|
||||
DThinker::MarkRoots();
|
||||
FCanvasTextureInfo::Mark();
|
||||
Mark(DACSThinker::ActiveThinker);
|
||||
MarkACSThinker();
|
||||
Mark(E_FirstEventHandler);
|
||||
Mark(E_LastEventHandler);
|
||||
for (auto &s : level.sectorPortals)
|
||||
|
|
|
@ -8,6 +8,13 @@
|
|||
typedef std::pair<const class PType *, unsigned> FTypeAndOffset;
|
||||
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"
|
||||
|
||||
// Variable/parameter/field flags -------------------------------------------
|
||||
|
|
|
@ -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
|
||||
};
|
|
@ -35,16 +35,12 @@
|
|||
#define __G_LEVEL_H__
|
||||
|
||||
#include "doomtype.h"
|
||||
#include "doomdef.h"
|
||||
#include "sc_man.h"
|
||||
#include "s_sound.h"
|
||||
#include "p_acs.h"
|
||||
#include "textures/textures.h"
|
||||
#include "resourcefiles/file_zip.h"
|
||||
|
||||
struct level_info_t;
|
||||
struct cluster_info_t;
|
||||
class FScanner;
|
||||
class FSerializer;
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
#pragma section(".yreg$u",read)
|
||||
|
@ -55,6 +51,24 @@ class FScanner;
|
|||
#define GCC_YSEG __attribute__((section(SECTION_YREG))) __attribute__((used))
|
||||
#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 FIntermissionAction;
|
||||
|
||||
|
@ -339,7 +353,7 @@ struct level_info_t
|
|||
|
||||
TArray<FSpecialAction> specialactions;
|
||||
|
||||
TArray<FSoundID> PrecacheSounds;
|
||||
TArray<int> PrecacheSounds;
|
||||
TArray<FString> PrecacheTextures;
|
||||
TArray<FName> PrecacheClasses;
|
||||
|
||||
|
|
|
@ -21,3 +21,10 @@
|
|||
#include <limits>
|
||||
#include <memory>
|
||||
#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"
|
17
src/gi.cpp
17
src/gi.cpp
|
@ -125,6 +125,21 @@ const char* GameInfoBorders[] =
|
|||
} \
|
||||
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) \
|
||||
else if(nextKey.CompareNoCase(variable) == 0) \
|
||||
|
@ -323,7 +338,7 @@ void FMapInfoParser::ParseGameInfo()
|
|||
GAMEINFOKEY_STRINGARRAY(infoPages, "infoPage", 8, true)
|
||||
GAMEINFOKEY_STRINGARRAY(PrecachedClasses, "precacheclasses", 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, "eventhandlers", 0, false)
|
||||
GAMEINFOKEY_STRING(PauseSign, "pausesign")
|
||||
|
|
3
src/gi.h
3
src/gi.h
|
@ -36,7 +36,6 @@
|
|||
|
||||
#include "basictypes.h"
|
||||
#include "zstring.h"
|
||||
#include "s_sound.h"
|
||||
|
||||
// Flags are not user configurable and only depend on the standard IWADs
|
||||
#define GI_MAPxx 0x00000001
|
||||
|
@ -123,7 +122,7 @@ struct gameinfo_t
|
|||
|
||||
TArray<FName> PrecachedClasses;
|
||||
TArray<FString> PrecachedTextures;
|
||||
TArray<FSoundID> PrecachedSounds;
|
||||
TArray<int> PrecachedSounds;
|
||||
TArray<FString> EventHandlers;
|
||||
|
||||
FString titleMusic;
|
||||
|
|
|
@ -26,7 +26,6 @@
|
|||
*/
|
||||
|
||||
#include "gl/system/gl_system.h"
|
||||
#include "files.h"
|
||||
#include "m_swap.h"
|
||||
#include "v_video.h"
|
||||
#include "gl/gl_functions.h"
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
//
|
||||
|
||||
#include "gl/system/gl_system.h"
|
||||
#include "files.h"
|
||||
#include "m_swap.h"
|
||||
#include "v_video.h"
|
||||
#include "gl/gl_functions.h"
|
||||
|
|
|
@ -26,7 +26,6 @@
|
|||
*/
|
||||
|
||||
#include "gl/system/gl_system.h"
|
||||
#include "files.h"
|
||||
#include "m_swap.h"
|
||||
#include "v_video.h"
|
||||
#include "gl/gl_functions.h"
|
||||
|
|
|
@ -26,7 +26,6 @@
|
|||
*/
|
||||
|
||||
#include "gl/system/gl_system.h"
|
||||
#include "files.h"
|
||||
#include "m_swap.h"
|
||||
#include "v_video.h"
|
||||
#include "gl/gl_functions.h"
|
||||
|
|
|
@ -26,7 +26,6 @@
|
|||
*/
|
||||
|
||||
#include "gl/system/gl_system.h"
|
||||
#include "files.h"
|
||||
#include "m_swap.h"
|
||||
#include "v_video.h"
|
||||
#include "gl/gl_functions.h"
|
||||
|
|
|
@ -26,7 +26,6 @@
|
|||
*/
|
||||
|
||||
#include "gl/system/gl_system.h"
|
||||
#include "files.h"
|
||||
#include "m_swap.h"
|
||||
#include "v_video.h"
|
||||
#include "gl/gl_functions.h"
|
||||
|
|
|
@ -28,7 +28,6 @@
|
|||
*/
|
||||
|
||||
#include "gl/system/gl_system.h"
|
||||
#include "files.h"
|
||||
#include "m_swap.h"
|
||||
#include "v_video.h"
|
||||
#include "gl/gl_functions.h"
|
||||
|
|
|
@ -26,7 +26,6 @@
|
|||
*/
|
||||
|
||||
#include "gl/system/gl_system.h"
|
||||
#include "files.h"
|
||||
#include "m_swap.h"
|
||||
#include "v_video.h"
|
||||
#include "gl/gl_functions.h"
|
||||
|
|
|
@ -26,7 +26,6 @@
|
|||
*/
|
||||
|
||||
#include "gl/system/gl_system.h"
|
||||
#include "files.h"
|
||||
#include "m_swap.h"
|
||||
#include "v_video.h"
|
||||
#include "gl/gl_functions.h"
|
||||
|
|
|
@ -26,7 +26,6 @@
|
|||
*/
|
||||
|
||||
#include "gl/system/gl_system.h"
|
||||
#include "files.h"
|
||||
#include "m_swap.h"
|
||||
#include "v_video.h"
|
||||
#include "gl/gl_functions.h"
|
||||
|
|
|
@ -27,7 +27,6 @@
|
|||
*/
|
||||
|
||||
#include "gl/system/gl_system.h"
|
||||
#include "files.h"
|
||||
#include "m_swap.h"
|
||||
#include "v_video.h"
|
||||
#include "doomstat.h"
|
||||
|
|
|
@ -39,7 +39,6 @@
|
|||
*/
|
||||
|
||||
#include "gl/system/gl_system.h"
|
||||
#include "files.h"
|
||||
#include "m_swap.h"
|
||||
#include "v_video.h"
|
||||
#include "doomstat.h"
|
||||
|
|
|
@ -35,7 +35,6 @@
|
|||
// HEADER FILES ------------------------------------------------------------
|
||||
|
||||
#include "gl/system/gl_system.h"
|
||||
#include "files.h"
|
||||
#include "m_swap.h"
|
||||
#include "v_video.h"
|
||||
#include "doomstat.h"
|
||||
|
|
|
@ -25,7 +25,6 @@
|
|||
*/
|
||||
|
||||
#include "gl/system/gl_system.h"
|
||||
#include "files.h"
|
||||
#include "f_wipe.h"
|
||||
#include "m_random.h"
|
||||
#include "w_wad.h"
|
||||
|
|
|
@ -50,6 +50,7 @@
|
|||
#include "g_levellocals.h"
|
||||
#include "virtual.h"
|
||||
#include "events.h"
|
||||
#include "p_acs.h"
|
||||
|
||||
// [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
|
||||
|
|
|
@ -36,8 +36,9 @@
|
|||
#include <stdio.h>
|
||||
#include "doomtype.h"
|
||||
#include "v_video.h"
|
||||
#include "files.h"
|
||||
|
||||
class FileReader;
|
||||
class FileWriter;
|
||||
// PNG Writing --------------------------------------------------------------
|
||||
|
||||
// Start writing an 8-bit palettized PNG file.
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include "doomtype.h"
|
||||
#include "md5.h"
|
||||
#include "templates.h"
|
||||
#include "files.h"
|
||||
|
||||
#ifdef __BIG_ENDIAN__
|
||||
void byteSwap(uint32_t *buf, unsigned words)
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
#ifndef MD5_H
|
||||
#define MD5_H
|
||||
|
||||
#include "files.h"
|
||||
class FileReader;
|
||||
|
||||
struct MD5Context
|
||||
{
|
||||
|
|
|
@ -37,11 +37,7 @@ typedef enum
|
|||
} ffloortype_e;
|
||||
|
||||
// This is for the purpose of Sector_SetContents:
|
||||
#ifdef _MSC_VER
|
||||
enum : unsigned int // MSVC is apparently the only compiler that supports this syntax
|
||||
#else
|
||||
enum
|
||||
#endif
|
||||
enum : unsigned int
|
||||
{
|
||||
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)
|
||||
|
@ -60,7 +56,8 @@ enum
|
|||
|
||||
struct secplane_t;
|
||||
struct FDynamicColormap;
|
||||
|
||||
struct line_t;
|
||||
struct sector_t;
|
||||
|
||||
struct F3DFloor
|
||||
{
|
||||
|
@ -115,7 +112,7 @@ struct lightlist_t
|
|||
|
||||
|
||||
|
||||
class player_s;
|
||||
class player_t;
|
||||
void P_PlayerOnSpecial3DFloor(player_t* player);
|
||||
|
||||
bool P_CheckFor3DFloorHit(AActor * mo, double z);
|
||||
|
|
133
src/p_acs.cpp
133
src/p_acs.cpp
|
@ -659,6 +659,134 @@ struct CallReturn
|
|||
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,
|
||||
const int *args, int argcount, int flags);
|
||||
|
||||
|
@ -10863,6 +10991,11 @@ CCMD(acsprofile)
|
|||
ShowProfileData(FuncProfiles, limit, sorter, true);
|
||||
}
|
||||
|
||||
void MarkACSThinker()
|
||||
{
|
||||
GC::Mark(DACSThinker::ActiveThinker);
|
||||
}
|
||||
|
||||
ADD_STAT(ACS)
|
||||
{
|
||||
return FStringf("ACS time: %f ms", ACSTime.TimeMS());
|
||||
|
|
145
src/p_acs.h
145
src/p_acs.h
|
@ -35,8 +35,6 @@
|
|||
#ifndef __P_ACS_H__
|
||||
#define __P_ACS_H__
|
||||
|
||||
#include "dobject.h"
|
||||
#include "dthinker.h"
|
||||
#include "doomtype.h"
|
||||
|
||||
#define LOCAL_SIZE 20
|
||||
|
@ -385,147 +383,4 @@ private:
|
|||
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__
|
||||
|
|
|
@ -22,6 +22,8 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <vector>
|
||||
|
||||
struct TriVertex;
|
||||
|
||||
class PolySubsectorGBuffer
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
#include <sys/stat.h>
|
||||
#include <sys/sysctl.h>
|
||||
|
||||
#include "d_ticcmd.h"
|
||||
#include "d_protocol.h"
|
||||
#include "doomdef.h"
|
||||
#include "doomerrors.h"
|
||||
#include "doomstat.h"
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
#ifndef __R_BLEND_H
|
||||
#define __R_BLEND_H
|
||||
|
||||
#pragma once
|
||||
/*
|
||||
** r_blend.h
|
||||
** Constants and types for specifying texture blending.
|
||||
|
@ -162,4 +160,3 @@ inline FRenderStyle &FRenderStyle::operator= (ERenderStyle legacy)
|
|||
return *this;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -491,14 +491,14 @@ void S_PrecacheLevel ()
|
|||
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.
|
||||
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.
|
||||
for (FSoundChan *chan = Channels; chan != NULL; chan = chan->NextChan)
|
||||
|
|
|
@ -2,6 +2,9 @@
|
|||
|
||||
#include "zstring.h"
|
||||
|
||||
class PClass;
|
||||
class VMFunction;
|
||||
|
||||
//
|
||||
// [ZZ] this really should be in codegen.h, but vmexec needs to access it
|
||||
struct FScopeBarrier
|
||||
|
|
|
@ -50,7 +50,6 @@
|
|||
#include "zstring.h"
|
||||
#include "d_event.h"
|
||||
#include "g_levellocals.h"
|
||||
#include "vm.h"
|
||||
#include "p_checkposition.h"
|
||||
#include "r_sky.h"
|
||||
#include "v_font.h"
|
||||
|
|
|
@ -844,11 +844,6 @@ struct VMRegisters
|
|||
VMValue *param;
|
||||
};
|
||||
|
||||
struct VMException : public DObject
|
||||
{
|
||||
DECLARE_CLASS(VMException, DObject);
|
||||
};
|
||||
|
||||
union FVoidObj
|
||||
{
|
||||
DObject *o;
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
#pragma once
|
||||
/*
|
||||
** tarray.h
|
||||
** Templated, automatically resizing array
|
||||
|
@ -32,8 +33,6 @@
|
|||
**
|
||||
*/
|
||||
|
||||
#ifndef __TARRAY_H__
|
||||
#define __TARRAY_H__
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <assert.h>
|
||||
|
@ -1250,4 +1249,3 @@ protected:
|
|||
hash_t Position;
|
||||
};
|
||||
|
||||
#endif //__TARRAY_H__
|
||||
|
|
|
@ -32,6 +32,8 @@
|
|||
**
|
||||
*/
|
||||
|
||||
#include "g_level.h"
|
||||
|
||||
#include <stddef.h>
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
|
@ -50,7 +52,6 @@
|
|||
#include "w_wad.h"
|
||||
#include "i_video.h"
|
||||
#include "c_dispatch.h"
|
||||
#include "g_level.h"
|
||||
#include "st_stuff.h"
|
||||
#include "gi.h"
|
||||
#include "x86.h"
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
#pragma once
|
||||
/*
|
||||
** zstring.h
|
||||
**
|
||||
|
@ -31,8 +32,6 @@
|
|||
**
|
||||
*/
|
||||
|
||||
#ifndef ZSTRING_H
|
||||
#define ZSTRING_H
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
|
@ -450,4 +449,3 @@ template<> struct THashTraits<FString>
|
|||
int Compare(const FString &left, const FString &right) { return left.Compare(right); }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue