class Object native { native bool bDestroyed; // These really should be global functions... native static int G_SkillPropertyInt(int p); native static double G_SkillPropertyFloat(int p); native static vector3, int G_PickDeathmatchStart(); native static vector3, int G_PickPlayerStart(int pnum, int flags = 0); native static int GameType(); /*virtual*/ native void Destroy(); } class Thinker : Object native { const TICRATE = 35; virtual native void Tick(); virtual native void PostBeginPlay(); } class ThinkerIterator : Object native { enum EStatnums { MAX_STATNUM = 127 } native static ThinkerIterator Create(class type = "Actor", int statnum=MAX_STATNUM+1); native Thinker Next(bool exact = false); native void Reinit(); } class ActorIterator : Object native { native static ActorIterator Create(int tid, class type = "Actor"); native Actor Next(); native void Reinit(); } class DropItem : Object native { native readonly DropItem Next; native readonly name Name; native readonly int Probability; native int Amount; } class SpotState : Object native { native static SpotState GetSpotState(); native SpecialSpot GetNextInList(class type, int skipcounter); native SpecialSpot GetSpotWithMinMaxDistance(Class type, double x, double y, double mindist, double maxdist); } 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; native readonly int total_secrets; native int found_secrets; native readonly int total_items; native int found_items; native readonly int total_monsters; 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; // level_info_t *info cannot be done yet. } // 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; } struct State native { 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; } struct F3DFloor native { } struct Sector native { native double, Sector, F3DFloor NextHighestCeilingAt(double x, double y, double bottomz, double topz, int flags = 0); } 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); }