2017-01-15 22:21:38 +00:00
|
|
|
struct TexMan
|
|
|
|
{
|
|
|
|
enum EUseTypes
|
|
|
|
{
|
|
|
|
Type_Any,
|
|
|
|
Type_Wall,
|
|
|
|
Type_Flat,
|
|
|
|
Type_Sprite,
|
|
|
|
Type_WallPatch,
|
|
|
|
Type_Build,
|
|
|
|
Type_SkinSprite,
|
|
|
|
Type_Decal,
|
|
|
|
Type_MiscPatch,
|
|
|
|
Type_FontChar,
|
|
|
|
Type_Override, // For patches between TX_START/TX_END
|
|
|
|
Type_Autopage, // Automap background - used to enable the use of FAutomapTexture
|
|
|
|
Type_SkinGraphic,
|
|
|
|
Type_Null,
|
|
|
|
Type_FirstDefined,
|
|
|
|
};
|
|
|
|
|
|
|
|
enum EFlags
|
|
|
|
{
|
|
|
|
TryAny = 1,
|
|
|
|
Overridable = 2,
|
|
|
|
ReturnFirst = 4,
|
|
|
|
AllowSkins = 8,
|
|
|
|
ShortNameOnly = 16,
|
|
|
|
DontCreate = 32
|
|
|
|
};
|
|
|
|
|
|
|
|
native static TextureID CheckForTexture(String name, int usetype, int flags = TryAny);
|
|
|
|
}
|
|
|
|
|
|
|
|
struct Screen
|
|
|
|
{
|
|
|
|
native static void DrawHUDTexture(TextureID tex, double x, double y);
|
|
|
|
}
|
|
|
|
|
2016-10-30 13:00:11 +00:00
|
|
|
class Object native
|
|
|
|
{
|
2016-11-22 22:42:32 +00:00
|
|
|
native bool bDestroyed;
|
|
|
|
|
2016-11-18 21:12:53 +00:00
|
|
|
// These really should be global functions...
|
|
|
|
native static int G_SkillPropertyInt(int p);
|
|
|
|
native static double G_SkillPropertyFloat(int p);
|
2016-11-25 18:52:35 +00:00
|
|
|
native static vector3, int G_PickDeathmatchStart();
|
|
|
|
native static vector3, int G_PickPlayerStart(int pnum, int flags = 0);
|
2016-11-26 00:14:47 +00:00
|
|
|
native static int GameType();
|
2016-11-28 10:52:03 +00:00
|
|
|
native static void S_Sound (Sound sound_id, int channel, float volume = 1, float attenuation = ATTN_NORM);
|
2017-01-03 19:06:20 +00:00
|
|
|
native static void S_PauseSound (bool notmusic, bool notsfx);
|
|
|
|
native static void S_ResumeSound (bool notsfx);
|
2016-11-30 00:25:51 +00:00
|
|
|
native static bool S_ChangeMusic(String music_name, int order = 0, bool looping = true, bool force = false);
|
2016-11-28 10:52:03 +00:00
|
|
|
native static void C_MidPrint(string fontname, string textlabel, bool bold = false); // always uses the stringtable.
|
2016-11-29 16:17:10 +00:00
|
|
|
native static uint BAM(double angle);
|
2016-12-28 20:41:06 +00:00
|
|
|
native static void SetMusicVolume(float vol);
|
2016-11-18 21:12:53 +00:00
|
|
|
|
2016-12-27 18:25:55 +00:00
|
|
|
native Name GetClassName();
|
2017-01-12 21:49:18 +00:00
|
|
|
native void Destroy();
|
2016-12-27 18:25:55 +00:00
|
|
|
|
2017-01-12 21:49:18 +00:00
|
|
|
// This does not call into the native method of the same name to avoid problems with objects that get garbage collected late on shutdown.
|
|
|
|
virtual void OnDestroy() {}
|
2016-10-30 13:00:11 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
class Thinker : Object native
|
|
|
|
{
|
2016-11-29 18:50:34 +00:00
|
|
|
enum EStatnums
|
|
|
|
{
|
|
|
|
// Thinkers that don't actually think
|
|
|
|
STAT_INFO, // An info queue
|
|
|
|
STAT_DECAL, // A decal
|
|
|
|
STAT_AUTODECAL, // A decal that can be automatically deleted
|
|
|
|
STAT_CORPSEPOINTER, // An entry in Hexen's corpse queue
|
|
|
|
STAT_TRAVELLING, // An actor temporarily travelling to a new map
|
|
|
|
|
|
|
|
// Thinkers that do think
|
|
|
|
STAT_FIRST_THINKING=32,
|
|
|
|
STAT_SCROLLER=STAT_FIRST_THINKING, // A DScroller thinker
|
|
|
|
STAT_PLAYER, // A player actor
|
|
|
|
STAT_BOSSTARGET, // A boss brain target
|
|
|
|
STAT_LIGHTNING, // The lightning thinker
|
|
|
|
STAT_DECALTHINKER, // An object that thinks for a decal
|
|
|
|
STAT_INVENTORY, // An inventory item
|
|
|
|
STAT_LIGHT, // A sector light effect
|
|
|
|
STAT_LIGHTTRANSFER, // A sector light transfer. These must be ticked after the light effects.
|
|
|
|
STAT_EARTHQUAKE, // Earthquake actors
|
|
|
|
STAT_MAPMARKER, // Map marker actors
|
|
|
|
|
|
|
|
STAT_DEFAULT = 100, // Thinkers go here unless specified otherwise.
|
|
|
|
STAT_SECTOREFFECT, // All sector effects that cause floor and ceiling movement
|
|
|
|
STAT_ACTORMOVER, // actor movers
|
|
|
|
STAT_SCRIPTS, // The ACS thinker. This is to ensure that it can't tick before all actors called PostBeginPlay
|
|
|
|
STAT_BOT, // Bot thinker
|
|
|
|
MAX_STATNUM = 127
|
|
|
|
}
|
|
|
|
|
2016-11-23 20:26:59 +00:00
|
|
|
const TICRATE = 35;
|
|
|
|
|
2016-11-21 13:59:17 +00:00
|
|
|
virtual native void Tick();
|
|
|
|
virtual native void PostBeginPlay();
|
2016-11-29 18:50:34 +00:00
|
|
|
virtual native void ChangeStatNum(int stat);
|
2016-10-31 16:02:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
class ThinkerIterator : Object native
|
|
|
|
{
|
|
|
|
|
2016-11-29 18:50:34 +00:00
|
|
|
native static ThinkerIterator Create(class<Object> type = "Actor", int statnum=Thinker.MAX_STATNUM+1);
|
2016-11-05 00:19:41 +00:00
|
|
|
native Thinker Next(bool exact = false);
|
2016-10-31 16:02:47 +00:00
|
|
|
native void Reinit();
|
|
|
|
}
|
|
|
|
|
2016-11-16 00:36:21 +00:00
|
|
|
class ActorIterator : Object native
|
|
|
|
{
|
|
|
|
native static ActorIterator Create(int tid, class<Actor> type = "Actor");
|
|
|
|
native Actor Next();
|
|
|
|
native void Reinit();
|
|
|
|
}
|
|
|
|
|
2016-11-29 17:42:48 +00:00
|
|
|
class BlockThingsIterator : Object native
|
|
|
|
{
|
|
|
|
native Actor thing;
|
|
|
|
native Vector3 position;
|
|
|
|
native int portalflags;
|
|
|
|
|
|
|
|
native static BlockThingsIterator Create(Actor origin, double checkradius = -1, bool ignorerestricted = false);
|
|
|
|
native static BlockThingsIterator CreateFromPos(double checkx, double checky, double checkz, double checkh, double checkradius, bool ignorerestricted);
|
|
|
|
native bool Next();
|
|
|
|
}
|
|
|
|
|
2016-10-31 16:02:47 +00:00
|
|
|
class DropItem : Object native
|
|
|
|
{
|
|
|
|
native readonly DropItem Next;
|
2016-11-05 00:19:41 +00:00
|
|
|
native readonly name Name;
|
2016-10-31 16:02:47 +00:00
|
|
|
native readonly int Probability;
|
2016-11-22 22:42:32 +00:00
|
|
|
native int Amount;
|
2016-10-31 16:02:47 +00:00
|
|
|
}
|
|
|
|
|
2016-11-18 21:12:53 +00:00
|
|
|
class SpotState : Object native
|
|
|
|
{
|
|
|
|
native static SpotState GetSpotState();
|
|
|
|
native SpecialSpot GetNextInList(class<Actor> type, int skipcounter);
|
2016-11-24 00:23:35 +00:00
|
|
|
native SpecialSpot GetSpotWithMinMaxDistance(Class<Actor> type, double x, double y, double mindist, double maxdist);
|
|
|
|
|
2016-11-22 18:20:31 +00:00
|
|
|
}
|
|
|
|
|
2016-11-22 23:35:06 +00:00
|
|
|
struct LevelLocals native
|
|
|
|
{
|
|
|
|
native readonly int time;
|
|
|
|
native readonly int maptime;
|
|
|
|
native readonly int totaltime;
|
|
|
|
native readonly int starttime;
|
|
|
|
native readonly int partime;
|
|
|
|
native readonly int sucktime;
|
|
|
|
native readonly int cluster;
|
|
|
|
native readonly int clusterflags;
|
|
|
|
native readonly int levelnum;
|
|
|
|
native readonly String LevelName;
|
|
|
|
native readonly String MapName;
|
|
|
|
native String NextMap;
|
|
|
|
native String NextSecretMap;
|
|
|
|
native readonly int maptype;
|
|
|
|
native readonly String Music;
|
|
|
|
native readonly int musicorder;
|
2016-11-29 18:50:34 +00:00
|
|
|
native int total_secrets;
|
2016-11-22 23:35:06 +00:00
|
|
|
native int found_secrets;
|
2016-11-29 18:50:34 +00:00
|
|
|
native int total_items;
|
2016-11-22 23:35:06 +00:00
|
|
|
native int found_items;
|
2016-11-29 18:50:34 +00:00
|
|
|
native int total_monsters;
|
2016-11-22 23:35:06 +00:00
|
|
|
native int killed_monsters;
|
|
|
|
native double gravity;
|
|
|
|
native double aircontrol;
|
|
|
|
native double airfriction;
|
|
|
|
native int airsupply;
|
|
|
|
native double teamdamage;
|
|
|
|
native bool monsterstelefrag;
|
|
|
|
native bool actownspecial;
|
|
|
|
native bool sndseqtotalctrl;
|
|
|
|
native bool allmap;
|
|
|
|
native bool missilesactivateimpact;
|
|
|
|
native bool monsterfallingdamage;
|
|
|
|
native bool checkswitchrange;
|
|
|
|
native bool polygrind;
|
2016-11-27 19:14:43 +00:00
|
|
|
native bool nomonsters;
|
2017-01-03 19:06:20 +00:00
|
|
|
native bool frozen;
|
2017-01-15 22:21:38 +00:00
|
|
|
native bool infinite_flight;
|
2016-11-22 23:35:06 +00:00
|
|
|
// level_info_t *info cannot be done yet.
|
|
|
|
}
|
|
|
|
|
2016-11-28 17:15:18 +00:00
|
|
|
struct StringTable native
|
|
|
|
{
|
2017-01-15 09:37:54 +00:00
|
|
|
native static String Localize(String val, bool prefixed = false);
|
2016-11-28 17:15:18 +00:00
|
|
|
}
|
|
|
|
|
2016-11-25 00:33:04 +00:00
|
|
|
// a few values of this need to be readable by the play code.
|
|
|
|
// Most are handled at load time and are omitted here.
|
|
|
|
struct DehInfo native
|
|
|
|
{
|
|
|
|
native int MaxSoulsphere;
|
|
|
|
native uint8 ExplosionStyle;
|
|
|
|
native double ExplosionAlpha;
|
|
|
|
native int NoAutofreeze;
|
|
|
|
native int BFGCells;
|
|
|
|
}
|
|
|
|
|
2016-11-22 23:35:06 +00:00
|
|
|
struct State native
|
|
|
|
{
|
2016-11-25 00:33:04 +00:00
|
|
|
native State NextState;
|
|
|
|
native int sprite;
|
|
|
|
native int16 Tics;
|
|
|
|
native uint16 TicRange;
|
|
|
|
native uint8 Frame;
|
|
|
|
native uint8 UseFlags;
|
|
|
|
native int Misc1;
|
|
|
|
native int Misc2;
|
|
|
|
native uint16 bSlow;
|
|
|
|
native uint16 bFast;
|
|
|
|
native bool bFullbright;
|
|
|
|
native bool bNoDelay;
|
|
|
|
native bool bSameFrame;
|
|
|
|
native bool bCanRaise;
|
|
|
|
native bool bDehacked;
|
2016-11-28 22:30:14 +00:00
|
|
|
|
|
|
|
native int DistanceTo(state other);
|
2016-11-22 23:35:06 +00:00
|
|
|
}
|
|
|
|
|
2016-11-25 15:05:03 +00:00
|
|
|
struct F3DFloor native
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2016-11-26 00:14:47 +00:00
|
|
|
struct Wads
|
|
|
|
{
|
|
|
|
enum WadNamespace
|
|
|
|
{
|
|
|
|
ns_hidden = -1,
|
|
|
|
|
|
|
|
ns_global = 0,
|
|
|
|
ns_sprites,
|
|
|
|
ns_flats,
|
|
|
|
ns_colormaps,
|
|
|
|
ns_acslibrary,
|
|
|
|
ns_newtextures,
|
|
|
|
ns_bloodraw,
|
|
|
|
ns_bloodsfx,
|
|
|
|
ns_bloodmisc,
|
|
|
|
ns_strifevoices,
|
|
|
|
ns_hires,
|
|
|
|
ns_voxels,
|
|
|
|
|
|
|
|
ns_specialzipdirectory,
|
|
|
|
ns_sounds,
|
|
|
|
ns_patches,
|
|
|
|
ns_graphics,
|
|
|
|
ns_music,
|
|
|
|
|
|
|
|
ns_firstskin,
|
|
|
|
}
|
|
|
|
|
|
|
|
native static int CheckNumForName(string name, int ns, int wadnum = -1, bool exact = false);
|
2016-11-27 23:49:10 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
struct TerrainDef native
|
|
|
|
{
|
|
|
|
native Name TerrainName;
|
|
|
|
native int Splash;
|
|
|
|
native int DamageAmount;
|
|
|
|
native Name DamageMOD;
|
|
|
|
native int DamageTimeMask;
|
|
|
|
native double FootClip;
|
|
|
|
native float StepVolume;
|
|
|
|
native int WalkStepTics;
|
|
|
|
native int RunStepTics;
|
|
|
|
native Sound LeftStepSound;
|
|
|
|
native Sound RightStepSound;
|
|
|
|
native bool IsLiquid;
|
|
|
|
native bool AllowProtection;
|
|
|
|
native double Friction;
|
|
|
|
native double MoveFactor;
|
|
|
|
};
|
2016-11-28 00:30:36 +00:00
|
|
|
|
|
|
|
enum EPickStart
|
|
|
|
{
|
|
|
|
PPS_FORCERANDOM = 1,
|
|
|
|
PPS_NOBLOCKINGCHECK = 2,
|
|
|
|
}
|
2016-11-28 17:15:18 +00:00
|
|
|
|
|
|
|
// Although String is a builtin type, this is a convenient way to attach methods to it.
|
|
|
|
struct String native
|
|
|
|
{
|
|
|
|
native void Replace(String pattern, String replacement);
|
|
|
|
}
|
2016-11-28 20:33:14 +00:00
|
|
|
|
|
|
|
class Floor : Thinker native
|
|
|
|
{
|
|
|
|
// only here so that some constants and functions can be added. Not directly usable yet.
|
|
|
|
enum EFloor
|
|
|
|
{
|
|
|
|
floorLowerToLowest,
|
|
|
|
floorLowerToNearest,
|
|
|
|
floorLowerToHighest,
|
|
|
|
floorLowerByValue,
|
|
|
|
floorRaiseByValue,
|
|
|
|
floorRaiseToHighest,
|
|
|
|
floorRaiseToNearest,
|
|
|
|
floorRaiseAndCrush,
|
|
|
|
floorRaiseAndCrushDoom,
|
|
|
|
floorCrushStop,
|
|
|
|
floorLowerInstant,
|
|
|
|
floorRaiseInstant,
|
|
|
|
floorMoveToValue,
|
|
|
|
floorRaiseToLowestCeiling,
|
|
|
|
floorRaiseByTexture,
|
|
|
|
|
|
|
|
floorLowerAndChange,
|
|
|
|
floorRaiseAndChange,
|
|
|
|
|
|
|
|
floorRaiseToLowest,
|
|
|
|
floorRaiseToCeiling,
|
|
|
|
floorLowerToLowestCeiling,
|
|
|
|
floorLowerByTexture,
|
|
|
|
floorLowerToCeiling,
|
|
|
|
|
|
|
|
donutRaise,
|
|
|
|
|
|
|
|
buildStair,
|
|
|
|
waitStair,
|
|
|
|
resetStair,
|
|
|
|
|
|
|
|
// Not to be used as parameters to EV_DoFloor()
|
|
|
|
genFloorChg0,
|
|
|
|
genFloorChgT,
|
|
|
|
genFloorChg
|
|
|
|
};
|
|
|
|
|
2016-11-30 00:25:51 +00:00
|
|
|
native static bool CreateFloor(sector sec, EFloor floortype, line ln, double speed, double height = 0, int crush = -1, int change = 0, bool crushmode = false, bool hereticlower = false);
|
|
|
|
}
|
|
|
|
|
|
|
|
class Ceiling : Thinker native
|
|
|
|
{
|
|
|
|
enum ECeiling
|
|
|
|
{
|
|
|
|
ceilLowerByValue,
|
|
|
|
ceilRaiseByValue,
|
|
|
|
ceilMoveToValue,
|
|
|
|
ceilLowerToHighestFloor,
|
|
|
|
ceilLowerInstant,
|
|
|
|
ceilRaiseInstant,
|
|
|
|
ceilCrushAndRaise,
|
|
|
|
ceilLowerAndCrush,
|
|
|
|
ceil_placeholder,
|
|
|
|
ceilCrushRaiseAndStay,
|
|
|
|
ceilRaiseToNearest,
|
|
|
|
ceilLowerToLowest,
|
|
|
|
ceilLowerToFloor,
|
|
|
|
|
|
|
|
// The following are only used by Generic_Ceiling
|
|
|
|
ceilRaiseToHighest,
|
|
|
|
ceilLowerToHighest,
|
|
|
|
ceilRaiseToLowest,
|
|
|
|
ceilLowerToNearest,
|
|
|
|
ceilRaiseToHighestFloor,
|
|
|
|
ceilRaiseToFloor,
|
|
|
|
ceilRaiseByTexture,
|
|
|
|
ceilLowerByTexture,
|
|
|
|
|
|
|
|
genCeilingChg0,
|
|
|
|
genCeilingChgT,
|
|
|
|
genCeilingChg
|
|
|
|
}
|
|
|
|
|
|
|
|
enum ECrushMode
|
|
|
|
{
|
|
|
|
crushDoom = 0,
|
|
|
|
crushHexen = 1,
|
|
|
|
crushSlowdown = 2
|
|
|
|
}
|
|
|
|
|
|
|
|
native bool CreateCeiling(sector sec, int type, line ln, double speed, double speed2, double height = 0, int crush = -1, int silent = 0, int change = 0, int crushmode = crushDoom);
|
2016-11-28 20:33:14 +00:00
|
|
|
|
2016-11-30 00:25:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
struct LookExParams
|
|
|
|
{
|
|
|
|
double Fov;
|
|
|
|
double minDist;
|
|
|
|
double maxDist;
|
|
|
|
double maxHeardist;
|
|
|
|
int flags;
|
|
|
|
State seestate;
|
|
|
|
};
|