raze/source/duke3d/src/gamedef.h
terminx 8433d133b4 Patch from Fox:
Add a FOV option in the menu. Range from 75 to 120 degrees (at 4:3 resolution), default is 90.

New userdef "fov". Equals the FOV in 360 degrees.

Update Polymost projection hack, so it compensates for the FOV or height of the game view.

Fix FOV in Polymer when the full status bar is visible. Now the FOV depends of the width of the game view instead of the height.

git-svn-id: https://svn.eduke32.com/eduke32@7329 1a8010ca-5511-0410-912e-c29ae57300e0
2019-02-18 22:02:33 +00:00

1384 lines
31 KiB
C

//-------------------------------------------------------------------------
/*
Copyright (C) 2016 EDuke32 developers and contributors
This file is part of EDuke32.
EDuke32 is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License version 2
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
//-------------------------------------------------------------------------
#ifndef gamedef_h_
#define gamedef_h_
#include "actors.h"
#include "build.h" // hashtable_t
#include "cheats.h"
#include "common.h" // tokenlist
#include "player.h" // projectile_t
#ifdef __cplusplus
extern "C" {
#endif
enum
{
LABEL_ACTION = 0x01,
LABEL_ACTOR = 0x02,
LABEL_AI = 0x04,
LABEL_DEFINE = 0x08,
LABEL_EVENT = 0x10,
LABEL_MOVE = 0x20,
LABEL_STATE = 0x40,
LABEL_ANY = -1,
};
#define LABEL_CHAR sizeof(uint8_t)
#define LABEL_SHORT sizeof(uint16_t)
#define LABEL_INT sizeof(uint32_t)
#define LABEL_UNSIGNED 8
#define LABEL_HASPARM2 16
#define LABEL_ISSTRING 32
#define LABEL_READFUNC 64
#define LABEL_WRITEFUNC 128
#define VM_INSTMASK 0xfff
#define C_CUSTOMERROR(Text, ...) \
do \
{ \
C_ReportError(-1); \
initprintf("%s:%d: error: " Text "\n", g_scriptFileName, g_lineNumber, ##__VA_ARGS__); \
g_errorCnt++; \
} while (0)
#define C_CUSTOMWARNING(Text, ...) \
do \
{ \
C_ReportError(-1); \
initprintf("%s:%d: warning: " Text "\n", g_scriptFileName, g_lineNumber, ##__VA_ARGS__); \
g_warningCnt++; \
} while (0)
#if !defined LUNATIC
extern intptr_t const * insptr;
extern void VM_ScriptInfo(intptr_t const *ptr, int range);
#endif
extern hashtable_t h_gamefuncs;
#if !defined LUNATIC
extern hashtable_t h_gamevars;
extern hashtable_t h_arrays;
extern hashtable_t h_labels;
extern int32_t g_aimAngleVarID; // var ID of "AUTOAIMANGLE"
extern int32_t g_angRangeVarID; // var ID of "ANGRANGE"
extern int32_t g_hitagVarID; // var ID of "HITAG"
extern int32_t g_lotagVarID; // var ID of "LOTAG"
extern int32_t g_returnVarID; // var ID of "RETURN"
extern int32_t g_textureVarID; // var ID of "TEXTURE"
extern int32_t g_thisActorVarID; // var ID of "THISACTOR"
extern int32_t g_weaponVarID; // var ID of "WEAPON"
extern int32_t g_worksLikeVarID; // var ID of "WORKSLIKE"
extern int32_t g_zRangeVarID; // var ID of "ZRANGE"
// KEEPINSYNC gamevars.cpp: "special vars for struct access"
enum QuickStructureAccess_t
{
STRUCT_SPRITE,
STRUCT_SPRITE_INTERNAL__,
STRUCT_ACTOR_INTERNAL__,
STRUCT_SPRITEEXT_INTERNAL__,
STRUCT_SECTOR,
STRUCT_WALL,
STRUCT_PLAYER,
STRUCT_ACTORVAR,
STRUCT_PLAYERVAR,
STRUCT_TSPR,
STRUCT_PROJECTILE,
STRUCT_THISPROJECTILE,
STRUCT_USERDEF,
STRUCT_INPUT,
STRUCT_TILEDATA,
STRUCT_PALDATA,
NUMQUICKSTRUCTS,
};
extern int32_t g_structVarIDs;
#include "events_defs.h"
extern intptr_t apScriptEvents[MAXEVENTS];
#endif
extern char g_scriptFileName[BMAX_PATH];
extern const uint32_t CheatFunctionFlags[];
extern const uint8_t CheatFunctionIDs[];
extern int32_t g_errorCnt;
extern int32_t g_lineNumber;
extern int32_t g_numXStrings;
extern int32_t g_scriptVersion;
extern int32_t g_totalLines;
extern int32_t g_warningCnt;
extern uint32_t g_scriptcrc;
extern int32_t otherp;
extern const char *EventNames[MAXEVENTS];
#if !defined LUNATIC
extern intptr_t *g_scriptPtr;
typedef struct
{
const char *name;
int32_t lId;
uint32_t flags;
int16_t maxParm2;
int16_t offset;
} memberlabel_t;
extern const memberlabel_t ActorLabels[];
extern const memberlabel_t InputLabels[];
extern const memberlabel_t PalDataLabels[];
extern const memberlabel_t PlayerLabels[];
extern const memberlabel_t ProjectileLabels[];
extern const memberlabel_t SectorLabels[];
extern const memberlabel_t TileDataLabels[];
extern const memberlabel_t TsprLabels[];
extern const memberlabel_t UserdefsLabels[];
extern const memberlabel_t WallLabels[];
extern hashtable_t h_actor;
extern hashtable_t h_input;
extern hashtable_t h_paldata;
extern hashtable_t h_player;
extern hashtable_t h_projectile;
extern hashtable_t h_sector;
extern hashtable_t h_tiledata;
extern hashtable_t h_tsprite;
extern hashtable_t h_userdef;
extern hashtable_t h_wall;
#endif
typedef projectile_t defaultprojectile_t;
extern defaultprojectile_t DefaultProjectile;
int32_t C_AllocQuote(int32_t qnum);
void C_AllocProjectile(int32_t j);
void C_FreeProjectile(int32_t j);
void C_InitQuotes(void);
void C_InitProjectiles(void);
typedef struct {
int spriteNum;
int playerNum;
int playerDist;
int flags;
union {
spritetype * pSprite;
uspritetype *pUSprite;
};
int32_t * pData;
DukePlayer_t *pPlayer;
actor_t * pActor;
} vmstate_t;
extern vmstate_t vm;
void G_DoGameStartup(const int32_t *params);
void C_DefineMusic(int volumeNum, int levelNum, const char *fileName);
void C_DefineVolumeFlags(int32_t vol, int32_t flags);
void C_UndefineVolume(int32_t vol);
void C_UndefineSkill(int32_t skill);
void C_UndefineLevel(int32_t vol, int32_t lev);
#if defined LUNATIC
void C_DefineSound(int32_t sndidx, const char *fn, int32_t args[5]);
void C_DefineQuote(int32_t qnum, const char *qstr);
void C_DefineVolumeName(int32_t vol, const char *name);
void C_DefineSkillName(int32_t skill, const char *name);
void C_DefineLevelName(int32_t vol, int32_t lev, const char *fn,
int32_t partime, int32_t designertime,
const char *levelname);
void C_DefineGameFuncName(int32_t idx, const char *name);
void C_DefineGameType(int32_t idx, int32_t flags, const char *name);
int32_t C_SetDefName(const char *name);
void C_DefineProjectile(int32_t j, int32_t what, int32_t val);
void C_SetCfgName(const char *cfgname);
#else
void C_ReportError(int error);
void C_Compile(const char *filenam);
extern int32_t g_errorLineNum;
extern int32_t g_tw;
typedef struct {
const char* token;
int32_t val;
} tokenmap_t;
extern const tokenmap_t iter_tokens[];
extern char const * VM_GetKeywordForID(int32_t id);
// KEEPINSYNC lunatic/con_lang.lua
enum SystemString_t {
STR_MAPNAME,
STR_MAPFILENAME,
STR_PLAYERNAME,
STR_VERSION,
STR_GAMETYPE,
STR_VOLUMENAME,
STR_YOURTIME,
STR_PARTIME,
STR_DESIGNERTIME,
STR_BESTTIME,
STR_USERMAPFILENAME,
};
enum ScriptError_t
{
ERROR_ARRAYREADONLY,
ERROR_EVENTONLY,
ERROR_EXCEEDSMAXTILES,
ERROR_EXPECTEDKEYWORD,
ERROR_FOUNDWITHIN,
ERROR_GAMEARRAYBNC,
ERROR_GAMEARRAYBNO,
ERROR_INVALIDARRAYWRITE,
ERROR_ISAKEYWORD,
ERROR_NOENDSWITCH,
ERROR_NOTAGAMEARRAY,
ERROR_NOTAGAMEDEF,
ERROR_NOTAGAMEVAR,
ERROR_NOTAMEMBER,
ERROR_NOTTOPLEVEL,
ERROR_PARAMUNDEFINED,
ERROR_SYNTAXERROR,
ERROR_VARREADONLY,
ERROR_VARTYPEMISMATCH,
WARNING_ARRAYMASKSKEYWORD,
WARNING_BADGAMEVAR,
WARNING_DUPLICATECASE,
WARNING_DUPLICATEDEFINITION,
WARNING_EVENTSYNC,
WARNING_LABELSONLY,
WARNING_NAMEMATCHESVAR,
WARNING_VARMASKSKEYWORD,
};
enum PlayerLabel_t
{
PLAYER_ZOOM,
PLAYER_LOOGIEX,
PLAYER_LOOGIEY,
PLAYER_NUMLOOGS,
PLAYER_LOOGCNT,
PLAYER_POSX,
PLAYER_POSY,
PLAYER_POSZ,
PLAYER_HORIZ,
PLAYER_HORIZOFF,
PLAYER_OHORIZ,
PLAYER_OHORIZOFF,
PLAYER_Q16HORIZ,
PLAYER_Q16HORIZOFF,
PLAYER_OQ16HORIZ,
PLAYER_OQ16HORIZOFF,
PLAYER_INVDISPTIME,
PLAYER_BOBPOSX,
PLAYER_BOBPOSY,
PLAYER_OPOSX,
PLAYER_OPOSY,
PLAYER_OPOSZ,
PLAYER_PYOFF,
PLAYER_OPYOFF,
PLAYER_POSXV,
PLAYER_POSYV,
PLAYER_POSZV,
PLAYER_LAST_PISSED_TIME,
PLAYER_TRUEFZ,
PLAYER_TRUECZ,
PLAYER_PLAYER_PAR,
PLAYER_VISIBILITY,
PLAYER_BOBCOUNTER,
PLAYER_WEAPON_SWAY,
PLAYER_PALS_TIME,
PLAYER_CRACK_TIME,
PLAYER_AIM_MODE,
PLAYER_ANG,
PLAYER_OANG,
PLAYER_Q16ANG,
PLAYER_OQ16ANG,
PLAYER_ANGVEL,
PLAYER_Q16ANGVEL,
PLAYER_CURSECTNUM,
PLAYER_LOOK_ANG,
PLAYER_LAST_EXTRA,
PLAYER_SUBWEAPON,
PLAYER_AMMO_AMOUNT,
PLAYER_WACKEDBYACTOR,
PLAYER_FRAG,
PLAYER_FRAGGEDSELF,
PLAYER_CURR_WEAPON,
PLAYER_LAST_WEAPON,
PLAYER_TIPINCS,
PLAYER_WANTWEAPONFIRE,
PLAYER_HOLODUKE_AMOUNT,
PLAYER_NEWOWNER,
PLAYER_HURT_DELAY,
PLAYER_HBOMB_HOLD_DELAY,
PLAYER_JUMPING_COUNTER,
PLAYER_AIRLEFT,
PLAYER_KNEE_INCS,
PLAYER_ACCESS_INCS,
PLAYER_FTA,
PLAYER_FTQ,
PLAYER_ACCESS_WALLNUM,
PLAYER_ACCESS_SPRITENUM,
PLAYER_KICKBACK_PIC,
PLAYER_GOT_ACCESS,
PLAYER_WEAPON_ANG,
PLAYER_FIRSTAID_AMOUNT,
PLAYER_SOMETHINGONPLAYER,
PLAYER_ON_CRANE,
PLAYER_I,
PLAYER_PARALLAX_SECTNUM,
PLAYER_OVER_SHOULDER_ON,
PLAYER_RANDOM_CLUB_FRAME,
PLAYER_FIST_INCS,
PLAYER_ONE_EIGHTY_COUNT,
PLAYER_CHEAT_PHASE,
PLAYER_DUMMYPLAYERSPRITE,
PLAYER_EXTRA_EXTRA8,
PLAYER_QUICK_KICK,
PLAYER_HEAT_AMOUNT,
PLAYER_ACTORSQU,
PLAYER_TIMEBEFOREEXIT,
PLAYER_CUSTOMEXITSOUND,
PLAYER_WEAPRECS,
PLAYER_WEAPRECCNT,
PLAYER_INTERFACE_TOGGLE,
PLAYER_ROTSCRNANG,
PLAYER_DEAD_FLAG,
PLAYER_SHOW_EMPTY_WEAPON,
PLAYER_SCUBA_AMOUNT,
PLAYER_JETPACK_AMOUNT,
PLAYER_STEROIDS_AMOUNT,
PLAYER_SHIELD_AMOUNT,
PLAYER_HOLODUKE_ON,
PLAYER_PYCOUNT,
PLAYER_WEAPON_POS,
PLAYER_FRAG_PS,
PLAYER_TRANSPORTER_HOLD,
PLAYER_CLIPDIST,
PLAYER_LAST_FULL_WEAPON,
PLAYER_FOOTPRINTSHADE,
PLAYER_BOOT_AMOUNT,
PLAYER_SCREAM_VOICE,
PLAYER_GM,
PLAYER_ON_WARPING_SECTOR,
PLAYER_FOOTPRINTCOUNT,
PLAYER_HBOMB_ON,
PLAYER_JUMPING_TOGGLE,
PLAYER_RAPID_FIRE_HOLD,
PLAYER_ON_GROUND,
PLAYER_NAME,
PLAYER_INVEN_ICON,
PLAYER_BUTTONPALETTE,
PLAYER_JETPACK_ON,
PLAYER_SPRITEBRIDGE,
PLAYER_SCUBA_ON,
PLAYER_FOOTPRINTPAL,
PLAYER_HEAT_ON,
PLAYER_HOLSTER_WEAPON,
PLAYER_FALLING_COUNTER,
PLAYER_GOTWEAPON,
PLAYER_PALETTE,
PLAYER_TOGGLE_KEY_FLAG,
PLAYER_KNUCKLE_INCS,
PLAYER_WALKING_SND_TOGGLE,
PLAYER_PALOOKUP,
PLAYER_HARD_LANDING,
PLAYER_MAX_SECRET_ROOMS,
PLAYER_SECRET_ROOMS,
PLAYER_PALS,
PLAYER_MAX_ACTORS_KILLED,
PLAYER_ACTORS_KILLED,
PLAYER_RETURN_TO_CENTER,
PLAYER_RUNSPEED,
PLAYER_SBS,
PLAYER_RELOADING,
PLAYER_AUTO_AIM,
PLAYER_MOVEMENT_LOCK,
PLAYER_SOUND_PITCH,
PLAYER_WEAPONSWITCH,
PLAYER_TEAM,
PLAYER_MAX_PLAYER_HEALTH,
PLAYER_MAX_SHIELD_AMOUNT,
PLAYER_MAX_AMMO_AMOUNT,
PLAYER_LAST_QUICK_KICK,
PLAYER_AUTOSTEP,
PLAYER_AUTOSTEP_SBW,
PLAYER_HUDPAL,
PLAYER_INDEX,
PLAYER_CONNECTED,
PLAYER_FRAGS,
PLAYER_DEATHS,
PLAYER_LAST_USED_WEAPON,
PLAYER_END
};
enum UserdefsLabel_t
{
USERDEFS_GOD,
USERDEFS_WARP_ON,
USERDEFS_CASHMAN,
USERDEFS_EOG,
USERDEFS_SHOWALLMAP,
USERDEFS_SHOW_HELP,
USERDEFS_SCROLLMODE,
USERDEFS_CLIPPING,
USERDEFS_USER_NAME,
USERDEFS_RIDECULE,
USERDEFS_SAVEGAME,
USERDEFS_PWLOCKOUT,
USERDEFS_RTSNAME,
USERDEFS_OVERHEAD_ON,
USERDEFS_LAST_OVERHEAD,
USERDEFS_SHOWWEAPONS,
USERDEFS_PAUSE_ON,
USERDEFS_FROM_BONUS,
USERDEFS_CAMERASPRITE,
USERDEFS_LAST_CAMSPRITE,
USERDEFS_LAST_LEVEL,
USERDEFS_SECRETLEVEL,
USERDEFS_CONST_VISIBILITY,
USERDEFS_UW_FRAMERATE,
USERDEFS_CAMERA_TIME,
USERDEFS_FOLFVEL,
USERDEFS_FOLAVEL,
USERDEFS_FOLX,
USERDEFS_FOLY,
USERDEFS_FOLA,
USERDEFS_RECCNT,
USERDEFS_ENTERED_NAME,
USERDEFS_SCREEN_TILTING,
USERDEFS_SHADOWS,
USERDEFS_FTA_ON,
USERDEFS_EXECUTIONS,
USERDEFS_AUTO_RUN,
USERDEFS_COORDS,
USERDEFS_TICKRATE,
USERDEFS_M_COOP,
USERDEFS_COOP,
USERDEFS_SCREEN_SIZE,
USERDEFS_LOCKOUT,
USERDEFS_CROSSHAIR,
USERDEFS_PLAYERAI,
USERDEFS_RESPAWN_MONSTERS,
USERDEFS_RESPAWN_ITEMS,
USERDEFS_RESPAWN_INVENTORY,
USERDEFS_RECSTAT,
USERDEFS_MONSTERS_OFF,
USERDEFS_BRIGHTNESS,
USERDEFS_M_RESPAWN_ITEMS,
USERDEFS_M_RESPAWN_MONSTERS,
USERDEFS_M_RESPAWN_INVENTORY,
USERDEFS_M_RECSTAT,
USERDEFS_M_MONSTERS_OFF,
USERDEFS_DETAIL,
USERDEFS_M_FFIRE,
USERDEFS_FFIRE,
USERDEFS_M_PLAYER_SKILL,
USERDEFS_M_LEVEL_NUMBER,
USERDEFS_M_VOLUME_NUMBER,
USERDEFS_MULTIMODE,
USERDEFS_PLAYER_SKILL,
USERDEFS_LEVEL_NUMBER,
USERDEFS_VOLUME_NUMBER,
USERDEFS_M_MARKER,
USERDEFS_MARKER,
USERDEFS_MOUSEFLIP,
USERDEFS_STATUSBARSCALE,
USERDEFS_DRAWWEAPON,
USERDEFS_MOUSEAIMING,
USERDEFS_WEAPONSWITCH,
USERDEFS_DEMOCAMS,
USERDEFS_COLOR,
USERDEFS_MSGDISPTIME,
USERDEFS_STATUSBARMODE,
USERDEFS_M_NOEXITS,
USERDEFS_NOEXITS,
USERDEFS_AUTOVOTE,
USERDEFS_AUTOMSG,
USERDEFS_IDPLAYERS,
USERDEFS_TEAM,
USERDEFS_VIEWBOB,
USERDEFS_WEAPONSWAY,
USERDEFS_ANGLEINTERPOLATION,
USERDEFS_OBITUARIES,
USERDEFS_LEVELSTATS,
USERDEFS_CROSSHAIRSCALE,
USERDEFS_ALTHUD,
USERDEFS_DISPLAY_BONUS_SCREEN,
USERDEFS_SHOW_LEVEL_TEXT,
USERDEFS_WEAPONSCALE,
USERDEFS_TEXTSCALE,
USERDEFS_RUNKEY_MODE,
USERDEFS_M_ORIGIN_X,
USERDEFS_M_ORIGIN_Y,
USERDEFS_PLAYERBEST,
USERDEFS_MUSICTOGGLE,
USERDEFS_USEVOXELS,
USERDEFS_USEHIGHTILE,
USERDEFS_USEMODELS,
USERDEFS_GAMETYPEFLAGS,
USERDEFS_M_GAMETYPEFLAGS,
USERDEFS_GLOBALFLAGS,
USERDEFS_GLOBALGAMEFLAGS,
USERDEFS_VM_PLAYER,
USERDEFS_VM_SPRITE,
USERDEFS_VM_DISTANCE,
USERDEFS_SOUNDTOGGLE,
USERDEFS_GAMETEXT_TRACKING,
USERDEFS_MGAMETEXT_TRACKING,
USERDEFS_MENUTEXT_TRACKING,
USERDEFS_MAXSPRITESONSCREEN,
USERDEFS_SCREENAREA_X1,
USERDEFS_SCREENAREA_Y1,
USERDEFS_SCREENAREA_X2,
USERDEFS_SCREENAREA_Y2,
USERDEFS_SCREENFADE,
USERDEFS_MENUBACKGROUND,
USERDEFS_STATUSBARFLAGS,
USERDEFS_STATUSBARRANGE,
USERDEFS_STATUSBARCUSTOM,
USERDEFS_HUDONTOP,
USERDEFS_MENU_SLIDEBARZ,
USERDEFS_MENU_SLIDEBARMARGIN,
USERDEFS_MENU_SLIDECURSORZ,
USERDEFS_GLOBAL_R,
USERDEFS_GLOBAL_G,
USERDEFS_GLOBAL_B,
USERDEFS_DEFAULT_VOLUME,
USERDEFS_DEFAULT_SKILL,
USERDEFS_MENU_SHADEDESELECTED,
USERDEFS_MENU_SHADEDISABLED,
USERDEFS_MENUTEXT_ZOOM,
USERDEFS_MENUTEXT_XSPACE,
USERDEFS_MENUTEXT_PAL,
USERDEFS_MENUTEXT_PALSELECTED,
USERDEFS_MENUTEXT_PALDESELECTED,
USERDEFS_MENUTEXT_PALDISABLED,
USERDEFS_MENUTEXT_PALSELECTED_RIGHT,
USERDEFS_MENUTEXT_PALDESELECTED_RIGHT,
USERDEFS_MENUTEXT_PALDISABLED_RIGHT,
USERDEFS_GAMETEXT_ZOOM,
USERDEFS_GAMETEXT_XSPACE,
USERDEFS_GAMETEXT_PAL,
USERDEFS_GAMETEXT_PALSELECTED,
USERDEFS_GAMETEXT_PALDESELECTED,
USERDEFS_GAMETEXT_PALDISABLED,
USERDEFS_GAMETEXT_PALSELECTED_RIGHT,
USERDEFS_GAMETEXT_PALDESELECTED_RIGHT,
USERDEFS_GAMETEXT_PALDISABLED_RIGHT,
USERDEFS_MINITEXT_ZOOM,
USERDEFS_MINITEXT_XSPACE,
USERDEFS_MINITEXT_TRACKING,
USERDEFS_MINITEXT_PAL,
USERDEFS_MINITEXT_PALSELECTED,
USERDEFS_MINITEXT_PALDESELECTED,
USERDEFS_MINITEXT_PALDISABLED,
USERDEFS_MINITEXT_PALSELECTED_RIGHT,
USERDEFS_MINITEXT_PALDESELECTED_RIGHT,
USERDEFS_MINITEXT_PALDISABLED_RIGHT,
USERDEFS_MENUTITLE_PAL,
USERDEFS_SLIDEBAR_PALSELECTED,
USERDEFS_SLIDEBAR_PALDISABLED,
USERDEFS_USER_MAP,
USERDEFS_M_USER_MAP,
USERDEFS_MUSIC_EPISODE,
USERDEFS_MUSIC_LEVEL,
USERDEFS_SHADOW_PAL,
USERDEFS_MENU_SCROLLBARTILENUM,
USERDEFS_MENU_SCROLLBARZ,
USERDEFS_MENU_SCROLLCURSORZ,
USERDEFS_RETURN,
USERDEFS_USERBYTEVERSION,
USERDEFS_AUTOSAVE,
USERDEFS_DRAW_Y,
USERDEFS_DRAW_YXASPECT,
USERDEFS_FOV,
USERDEFS_END
};
enum SectorLabel_t
{
SECTOR_WALLPTR,
SECTOR_WALLNUM,
SECTOR_CEILINGZ,
SECTOR_CEILINGZGOAL,
SECTOR_CEILINGZVEL,
SECTOR_FLOORZ,
SECTOR_FLOORZGOAL,
SECTOR_FLOORZVEL,
SECTOR_CEILINGSTAT,
SECTOR_FLOORSTAT,
SECTOR_CEILINGPICNUM,
SECTOR_CEILINGSLOPE,
SECTOR_CEILINGSHADE,
SECTOR_CEILINGPAL,
SECTOR_CEILINGXPANNING,
SECTOR_CEILINGYPANNING,
SECTOR_FLOORPICNUM,
SECTOR_FLOORSLOPE,
SECTOR_FLOORSHADE,
SECTOR_FLOORPAL,
SECTOR_FLOORXPANNING,
SECTOR_FLOORYPANNING,
SECTOR_VISIBILITY,
SECTOR_FOGPAL,
SECTOR_LOTAG,
SECTOR_HITAG,
SECTOR_EXTRA,
SECTOR_CEILINGBUNCH,
SECTOR_FLOORBUNCH,
SECTOR_ULOTAG,
SECTOR_UHITAG,
SECTOR_END
};
enum WallLabel_t
{
WALL_X,
WALL_Y,
WALL_POINT2,
WALL_NEXTWALL,
WALL_NEXTSECTOR,
WALL_CSTAT,
WALL_PICNUM,
WALL_OVERPICNUM,
WALL_SHADE,
WALL_PAL,
WALL_XREPEAT,
WALL_YREPEAT,
WALL_XPANNING,
WALL_YPANNING,
WALL_LOTAG,
WALL_HITAG,
WALL_EXTRA,
WALL_ULOTAG,
WALL_UHITAG,
WALL_BLEND,
WALL_END
};
enum ActorLabel_t
{
ACTOR_X,
ACTOR_Y,
ACTOR_Z,
ACTOR_CSTAT,
ACTOR_PICNUM,
ACTOR_SHADE,
ACTOR_PAL,
ACTOR_CLIPDIST,
ACTOR_DETAIL,
ACTOR_XREPEAT,
ACTOR_YREPEAT,
ACTOR_XOFFSET,
ACTOR_YOFFSET,
ACTOR_SECTNUM,
ACTOR_STATNUM,
ACTOR_ANG,
ACTOR_OWNER,
ACTOR_XVEL,
ACTOR_YVEL,
ACTOR_ZVEL,
ACTOR_LOTAG,
ACTOR_HITAG,
ACTOR_EXTRA,
ACTOR_ULOTAG,
ACTOR_UHITAG,
ACTOR_STRUCT_BEGIN,
ACTOR_HTCGG = ACTOR_STRUCT_BEGIN,
ACTOR_HTPICNUM,
ACTOR_HTANG,
ACTOR_HTEXTRA,
ACTOR_HTOWNER,
ACTOR_HTMOVFLAG,
ACTOR_HTUMOVFLAG,
ACTOR_HTTEMPANG,
ACTOR_HTSTAYPUT,
ACTOR_HTDISPICNUM,
ACTOR_HTTIMETOSLEEP,
ACTOR_HTFLOORZ,
ACTOR_HTCEILINGZ,
ACTOR_HTLASTVX,
ACTOR_HTLASTVY,
ACTOR_HTBPOSX,
ACTOR_HTBPOSY,
ACTOR_HTBPOSZ,
ACTOR_HTG_T,
ACTOR_HTFLAGS,
ACTOR_SPRITEEXT_BEGIN,
ACTOR_ANGOFF = ACTOR_SPRITEEXT_BEGIN,
ACTOR_PITCH,
ACTOR_ROLL,
ACTOR_MDXOFF,
ACTOR_MDYOFF,
ACTOR_MDZOFF,
ACTOR_MDFLAGS,
ACTOR_XPANNING,
ACTOR_YPANNING,
ACTOR_ALPHA,
ACTOR_ISVALID,
ACTOR_END
};
enum InputLabel_t
{
INPUT_AVEL,
INPUT_Q16AVEL,
INPUT_HORZ,
INPUT_Q16HORZ,
INPUT_FVEL,
INPUT_SVEL,
INPUT_BITS,
INPUT_EXTBITS,
INPUT_END
};
enum TileDataLabel_t
{
TILEDATA_XSIZE,
TILEDATA_YSIZE,
TILEDATA_ANIMFRAMES,
TILEDATA_XOFFSET,
TILEDATA_YOFFSET,
TILEDATA_ANIMSPEED,
TILEDATA_ANIMTYPE,
TILEDATA_GAMEFLAGS,
TILEDATA_END
};
enum PalDataLabel_t
{
PALDATA_NOFLOORPAL,
PALDATA_DUMMY, // so the hash table is size 1. remove when another member is added.
PALDATA_END
};
#endif
// KEEPINSYNC lunatic/con_lang.lua
enum ProjectileLabel_t
{
PROJ_WORKSLIKE, // 0
PROJ_SPAWNS,
PROJ_SXREPEAT,
PROJ_SYREPEAT,
PROJ_SOUND,
PROJ_ISOUND, // 5
PROJ_VEL,
PROJ_EXTRA,
PROJ_DECAL,
PROJ_TRAIL,
PROJ_TXREPEAT, // 10
PROJ_TYREPEAT,
PROJ_TOFFSET,
PROJ_TNUM,
PROJ_DROP,
PROJ_CSTAT, // 15
PROJ_CLIPDIST,
PROJ_SHADE,
PROJ_XREPEAT,
PROJ_YREPEAT,
PROJ_PAL, // 20
PROJ_EXTRA_RAND,
PROJ_HITRADIUS,
PROJ_MOVECNT,
PROJ_OFFSET,
PROJ_BOUNCES, // 25
PROJ_BSOUND,
PROJ_RANGE,
PROJ_FLASH_COLOR,
PROJ_USERDATA,
PROJ_END
};
#if !defined LUNATIC
enum IterationTypes_t
{
ITER_ALLSPRITES,
ITER_ALLSECTORS,
ITER_ALLWALLS,
ITER_ACTIVELIGHTS,
ITER_DRAWNSPRITES,
// ---
ITER_SPRITESOFSECTOR,
ITER_SPRITESOFSTATUS,
ITER_WALLSOFSECTOR,
ITER_LOOPOFWALL,
ITER_RANGE,
ITER_ALLSPRITESBYSTAT,
ITER_ALLSPRITESBYSECT,
ITER_END
};
// most keywords have opcodes but some opcodes don't have keywords
enum ScriptKeywords_t
{
CON_IFVARA_GLOBAL,
CON_IFVARAE_GLOBAL,
CON_IFVARAND_GLOBAL,
CON_IFVARB_GLOBAL,
CON_IFVARBE_GLOBAL,
CON_IFVARBOTH_GLOBAL,
CON_IFVARE_GLOBAL,
CON_IFVAREITHER_GLOBAL,
CON_IFVARG_GLOBAL,
CON_IFVARGE_GLOBAL,
CON_IFVARL_GLOBAL,
CON_IFVARLE_GLOBAL,
CON_IFVARN_GLOBAL,
CON_IFVAROR_GLOBAL,
CON_IFVARXOR_GLOBAL,
CON_ADDVAR_GLOBAL,
CON_ANDVAR_GLOBAL,
CON_DIVVAR_GLOBAL,
CON_MODVAR_GLOBAL,
CON_MULVAR_GLOBAL,
CON_ORVAR_GLOBAL,
CON_RANDVAR_GLOBAL,
CON_SETVAR_GLOBAL,
CON_SHIFTVARL_GLOBAL,
CON_SHIFTVARR_GLOBAL,
CON_SUBVAR_GLOBAL,
CON_WHILEVARL_GLOBAL,
CON_WHILEVARN_GLOBAL,
CON_XORVAR_GLOBAL,
CON_IFVARA_PLAYER,
CON_IFVARAE_PLAYER,
CON_IFVARAND_PLAYER,
CON_IFVARB_PLAYER,
CON_IFVARBE_PLAYER,
CON_IFVARBOTH_PLAYER,
CON_IFVARE_PLAYER,
CON_IFVAREITHER_PLAYER,
CON_IFVARG_PLAYER,
CON_IFVARGE_PLAYER,
CON_IFVARL_PLAYER,
CON_IFVARLE_PLAYER,
CON_IFVARN_PLAYER,
CON_IFVAROR_PLAYER,
CON_IFVARXOR_PLAYER,
CON_ADDVAR_PLAYER,
CON_ANDVAR_PLAYER,
CON_DIVVAR_PLAYER,
CON_MODVAR_PLAYER,
CON_MULVAR_PLAYER,
CON_ORVAR_PLAYER,
CON_RANDVAR_PLAYER,
CON_SETVAR_PLAYER,
CON_SHIFTVARL_PLAYER,
CON_SHIFTVARR_PLAYER,
CON_SUBVAR_PLAYER,
CON_WHILEVARL_PLAYER,
CON_WHILEVARN_PLAYER,
CON_XORVAR_PLAYER,
CON_IFVARA_ACTOR,
CON_IFVARAE_ACTOR,
CON_IFVARAND_ACTOR,
CON_IFVARB_ACTOR,
CON_IFVARBE_ACTOR,
CON_IFVARBOTH_ACTOR,
CON_IFVARE_ACTOR,
CON_IFVAREITHER_ACTOR,
CON_IFVARG_ACTOR,
CON_IFVARGE_ACTOR,
CON_IFVARL_ACTOR,
CON_IFVARLE_ACTOR,
CON_IFVARN_ACTOR,
CON_IFVAROR_ACTOR,
CON_IFVARXOR_ACTOR,
CON_ADDVAR_ACTOR,
CON_ANDVAR_ACTOR,
CON_DIVVAR_ACTOR,
CON_MODVAR_ACTOR,
CON_MULVAR_ACTOR,
CON_ORVAR_ACTOR,
CON_RANDVAR_ACTOR,
CON_SETVAR_ACTOR,
CON_SHIFTVARL_ACTOR,
CON_SHIFTVARR_ACTOR,
CON_SUBVAR_ACTOR,
CON_WHILEVARL_ACTOR,
CON_WHILEVARN_ACTOR,
CON_XORVAR_ACTOR,
CON_IFVARVARA,
CON_IFVARVARAE,
CON_IFVARVARAND,
CON_IFVARVARB,
CON_IFVARVARBE,
CON_IFVARVARBOTH,
CON_IFVARVARE,
CON_IFVARVAREITHER,
CON_IFVARVARG,
CON_IFVARVARGE,
CON_IFVARVARL,
CON_IFVARVARLE,
CON_IFVARVARN,
CON_IFVARVAROR,
CON_IFVARVARXOR,
CON_ADDVARVAR,
CON_ANDVARVAR,
CON_DIVVARVAR,
CON_MODVARVAR,
CON_MULVARVAR,
CON_ORVARVAR,
CON_RANDVARVAR,
CON_SETVARVAR,
CON_SHIFTVARVARL,
CON_SHIFTVARVARR,
CON_SUBVARVAR,
CON_WHILEVARVARL,
CON_WHILEVARVARN,
CON_XORVARVAR,
CON_IFVARA,
CON_IFVARAE,
CON_IFVARAND,
CON_IFVARB,
CON_IFVARBE,
CON_IFVARBOTH,
CON_IFVARE,
CON_IFVAREITHER,
CON_IFVARG,
CON_IFVARGE,
CON_IFVARL,
CON_IFVARLE,
CON_IFVARN,
CON_IFVAROR,
CON_IFVARXOR,
CON_ADDVAR,
CON_ANDVAR,
CON_DIVVAR,
CON_MODVAR,
CON_MULVAR,
CON_ORVAR,
CON_RANDVAR,
CON_SETVAR,
CON_SHIFTVARL,
CON_SHIFTVARR,
CON_SUBVAR,
CON_WHILEVARL,
CON_WHILEVARN,
CON_XORVAR,
CON_ELSE,
CON_ENDA,
CON_ENDEVENT,
CON_ENDS,
CON_ENDSWITCH,
CON_LEFTBRACE,
CON_RIGHTBRACE,
CON_STATE,
CON_SETACTOR,
CON_SETACTORSTRUCT,
CON_SETACTORVAR,
CON_SETARRAY,
CON_SETPLAYER,
CON_SETPLAYERVAR,
CON_SETPROJECTILE,
CON_SETSECTOR,
CON_SETSPRITEEXT,
CON_SETSPRITESTRUCT,
CON_SETTHISPROJECTILE,
CON_SETTSPR,
CON_SETUSERDEF,
CON_SETWALL,
CON_GETACTOR,
CON_GETACTORSTRUCT,
CON_GETACTORVAR,
CON_GETANGLE,
CON_GETPLAYER,
CON_GETPLAYERVAR,
CON_GETPROJECTILE,
CON_GETSECTOR,
CON_GETSPRITEEXT,
CON_GETSPRITESTRUCT,
CON_GETTSPR,
CON_GETUSERDEF,
CON_GETWALL,
CON_ACTION,
CON_ACTIVATE,
CON_ACTIVATEBYSECTOR,
CON_ACTIVATECHEAT,
CON_ACTORSOUND,
CON_ADDAMMO,
CON_ADDINVENTORY,
CON_ADDKILLS,
CON_ADDLOGVAR,
CON_ADDPHEALTH,
CON_ADDSTRENGTH,
CON_ADDWEAPON,
CON_AI,
CON_ANGOFF,
CON_BREAK,
CON_CACTOR,
CON_CALCHYPOTENUSE,
CON_CANSEE,
CON_CANSEESPR,
CON_CHANGESPRITESECT,
CON_CHANGESPRITESTAT,
CON_CHECKACTIVATORMOTION,
CON_CHECKAVAILINVEN,
CON_CHECKAVAILWEAPON,
CON_CLAMP,
CON_CLEARMAPSTATE,
CON_CLIPDIST,
CON_CLIPMOVE,
CON_CLIPMOVENOSLIDE,
CON_CMENU,
CON_COPY,
CON_COS,
CON_COUNT,
CON_CSTAT,
CON_CSTATOR,
CON_DEBRIS,
CON_DEBUG,
CON_DIGITALNUMBER,
CON_DIGITALNUMBERZ,
CON_DISPLAYRAND,
CON_DIST,
CON_DIVR,
CON_DIVRU,
CON_DIVSCALE,
CON_DISPLAYRANDVAR,
CON_DISPLAYRANDVARVAR,
CON_DRAGPOINT,
CON_DRAWLINE256,
CON_DRAWLINERGB,
CON_ECHO,
CON_ENDOFGAME,
CON_ENDOFLEVEL,
CON_EQSPAWN,
CON_ESHOOT,
CON_ESPAWN,
CON_EVENTLOADACTOR,
CON_EZSHOOT,
CON_FALL,
CON_FINDNEARACTOR,
CON_FINDNEARACTOR3D,
CON_FINDNEARACTORZ,
CON_FINDNEARSPRITE,
CON_FINDNEARSPRITE3D,
CON_FINDNEARSPRITEZ,
CON_FINDOTHERPLAYER,
CON_FINDPLAYER,
CON_FLASH,
CON_FOR,
CON_GAMETEXT,
CON_GAMETEXTZ,
CON_GETACTORANGLE,
CON_GETANGLETOTARGET,
CON_GETARRAYSIZE,
CON_GETCEILZOFSLOPE,
CON_GETCLOSESTCOL,
CON_GETCURRADDRESS,
CON_GETFLORZOFSLOPE,
CON_GETINCANGLE,
CON_GETINPUT,
CON_GETKEYNAME,
CON_GETLASTPAL,
CON_GETMUSICPOSITION,
CON_GETPLAYERANGLE,
CON_GETPNAME,
CON_GETTEXTURECEILING,
CON_GETTEXTUREFLOOR,
CON_GETTHISPROJECTILE,
CON_GETTICKS,
CON_GETTILEDATA,
CON_GETTIMEDATE,
CON_GETZRANGE,
CON_GLOBALSOUND,
CON_GMAXAMMO,
CON_GUNIQHUDID,
CON_GUTS,
CON_HEADSPRITESECT,
CON_HEADSPRITESTAT,
CON_HITRADIUS,
CON_HITSCAN,
CON_IFACTION,
CON_IFACTIONCOUNT,
CON_IFACTOR,
CON_IFACTORNOTSTAYPUT,
CON_IFACTORSOUND,
CON_IFAI,
CON_IFANGDIFFL,
CON_IFAWAYFROMWALL,
CON_IFBULLETNEAR,
CON_IFCANSEE,
CON_IFCANSEETARGET,
CON_IFCANSHOOTTARGET,
CON_IFCEILINGDISTL,
CON_IFCLIENT,
CON_IFCOUNT,
CON_IFCUTSCENE,
CON_IFDEAD,
CON_IFFLOORDISTL,
CON_IFGAPZL,
CON_IFGOTWEAPONCE,
CON_IFHITSPACE,
CON_IFHITWEAPON,
CON_IFINOUTERSPACE,
CON_IFINSPACE,
CON_IFINWATER,
CON_IFMOVE,
CON_IFMULTIPLAYER,
CON_IFNOSOUNDS,
CON_IFNOTMOVING,
CON_IFONWATER,
CON_IFOUTSIDE,
CON_IFP,
CON_IFPDISTG,
CON_IFPDISTL,
CON_IFPHEALTHL,
CON_IFPINVENTORY,
CON_IFPLAYBACKON,
CON_IFPLAYERSL,
CON_IFRESPAWN,
CON_IFRND,
CON_IFSERVER,
CON_IFSOUND,
CON_IFSPAWNEDBY,
CON_IFSPRITEPAL,
CON_IFSQUISHED,
CON_IFSTRENGTH,
CON_IFWASWEAPON,
CON_INITTIMER,
CON_INSERTSPRITEQ,
CON_INV,
CON_JUMP,
CON_KILLIT,
CON_KLABS,
CON_LDIST,
CON_LINEINTERSECT,
CON_LOADMAPSTATE,
CON_LOCKPLAYER,
CON_LOTSOFGLASS,
CON_MAIL,
CON_MIKESND,
CON_MINITEXT,
CON_MONEY,
CON_MOVE,
CON_MOVESECTOR,
CON_MOVESPRITE,
CON_MULSCALE,
CON_MUSIC,
CON_MYOS,
CON_MYOSPAL,
CON_MYOSPALX,
CON_MYOSX,
CON_NEARTAG,
CON_NEXTSECTORNEIGHBORZ,
CON_NEXTSPRITESECT,
CON_NEXTSPRITESTAT,
CON_NULLOP,
CON_OPERATE,
CON_OPERATEACTIVATORS,
CON_OPERATEMASTERSWITCHES,
CON_OPERATERESPAWNS,
CON_OPERATESECTORS,
CON_PALFROM,
CON_PAPER,
CON_PKICK,
CON_PRECACHE,
CON_PRELOADTRACKSLOTFORSWAP,
CON_PREVSPRITESECT,
CON_PREVSPRITESTAT,
CON_PSTOMP,
CON_QGETSYSSTR,
CON_QSPAWN,
CON_QSPRINTF,
CON_QSTRCAT,
CON_QSTRCMP,
CON_QSTRCPY,
CON_QSTRDIM,
CON_QSTRLEN,
CON_QSTRNCAT,
CON_QSUBSTR,
CON_QUAKE,
CON_QUOTE,
CON_RAYINTERSECT,
CON_READARRAYFROMFILE,
CON_READGAMEVAR,
CON_REDEFINEQUOTE,
CON_RESETACTIONCOUNT,
CON_RESETCOUNT,
CON_RESETPLAYER,
CON_RESETPLAYERFLAGS,
CON_RESIZEARRAY,
CON_RESPAWNHITAG,
CON_RETURN,
CON_ROTATEPOINT,
CON_ROTATESPRITE,
CON_ROTATESPRITE16,
CON_ROTATESPRITEA,
CON_SAVE,
CON_SAVEGAMEVAR,
CON_SAVEMAPSTATE,
CON_SAVENN,
CON_SCALEVAR,
CON_SCREENPAL,
CON_SCREENSOUND,
CON_SCREENTEXT,
CON_SECTCLEARINTERPOLATION,
CON_SECTGETHITAG,
CON_SECTGETLOTAG,
CON_SECTOROFWALL,
CON_SECTSETINTERPOLATION,
CON_SETACTORANGLE,
CON_SETACTORSOUNDPITCH,
CON_SETASPECT,
CON_SETGAMEPALETTE,
CON_SETINPUT,
CON_SETMUSICPOSITION,
CON_SETPLAYERANGLE,
CON_SETSPRITE,
CON_SETTILEDATA,
CON_SHADETO,
CON_SHOOT,
CON_SHOWVIEW,
CON_SHOWVIEWQ16,
CON_SHOWVIEWQ16UNBIASED,
CON_SHOWVIEWUNBIASED,
CON_SIN,
CON_SIZEAT,
CON_SIZETO,
CON_SLEEPTIME,
CON_SMAXAMMO,
CON_SOUND,
CON_SOUNDONCE,
CON_SPAWN,
CON_SPAWNCEILINGGLASS,
CON_SPAWNWALLGLASS,
CON_SPAWNWALLSTAINEDGLASS,
CON_SPGETHITAG,
CON_SPGETLOTAG,
CON_SPRITEFLAGS,
CON_SPRITEPAL,
CON_SQRT,
CON_SSP,
CON_STARTCUTSCENE,
CON_STARTLEVEL,
CON_STARTSCREEN,
CON_STARTTRACK,
CON_STARTTRACKSLOT,
CON_STOPACTORSOUND,
CON_STOPALLMUSIC,
CON_STOPALLSOUNDS,
CON_STOPSOUND,
CON_STRENGTH,
CON_SWAPARRAYS,
CON_SWAPTRACKSLOT,
CON_SWITCH,
CON_TIME,
CON_TIP,
CON_TOSSWEAPON,
CON_UPDATESECTOR,
CON_UPDATESECTORZ,
CON_USERQUOTE,
CON_WACKPLAYER,
CON_WRITEARRAYTOFILE,
CON_ZSHOOT,
CON_OPCODE_END,
// these are the keywords that don't have instructions written into the bytecode
CON_ACTOR,
CON_APPENDEVENT,
CON_BETANAME,
CON_CASE,
CON_CHEATKEYS,
CON_DAMAGEEVENTTILE,
CON_DAMAGEEVENTTILERANGE,
CON_DEFAULT,
CON_DEFINE,
CON_DEFINECHEAT,
CON_DEFINEGAMEFUNCNAME,
CON_DEFINEGAMETYPE,
CON_DEFINELEVELNAME,
CON_DEFINEPROJECTILE,
CON_DEFINEQUOTE,
CON_DEFINESKILLNAME,
CON_DEFINESOUND,
CON_DEFINEVOLUMEFLAGS,
CON_DEFINEVOLUMENAME,
CON_DEFSTATE,
CON_DYNAMICREMAP,
CON_DYNAMICSOUNDREMAP,
CON_ENHANCED,
CON_GAMEARRAY,
CON_GAMESTARTUP,
CON_GAMEVAR,
CON_INCLUDE,
CON_INCLUDEDEFAULT,
CON_ONEVENT,
CON_SCRIPTSIZE,
CON_SETCFGNAME,
CON_SETDEFNAME,
CON_SETGAMENAME,
CON_SPRITENOPAL,
CON_SPRITENOSHADE,
CON_SPRITENVG,
CON_SPRITESHADOW,
CON_UNDEFINECHEAT,
CON_UNDEFINEGAMEFUNC,
CON_UNDEFINELEVEL,
CON_UNDEFINESKILL,
CON_UNDEFINEVOLUME,
CON_USERACTOR,
CON_END
};
// KEEPINSYNC with the keyword list in lunatic/con_lang.lua
#endif
#ifdef __cplusplus
}
#endif
#endif // gamedef_h_