mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-10 14:51:51 +00:00
1dcc017daf
- activated the RenderOverlay event, now that it can be called from the correct spot, i.e. right after the top level HUD messages are drawn. The system's status output will still be drawn on top of them.
340 lines
11 KiB
Text
Executable file
340 lines
11 KiB
Text
Executable file
|
|
struct RenderEvent native ui version("2.4")
|
|
{
|
|
native readonly Vector3 ViewPos;
|
|
native readonly double ViewAngle;
|
|
native readonly double ViewPitch;
|
|
native readonly double ViewRoll;
|
|
native readonly double FracTic;
|
|
native readonly Actor Camera;
|
|
}
|
|
|
|
struct WorldEvent native play version("2.4")
|
|
{
|
|
// for loaded/unloaded
|
|
native readonly bool IsSaveGame;
|
|
// this will be true if we are re-entering the hub level.
|
|
native readonly bool IsReopen;
|
|
// for thingspawned/thingdied/thingdestroyed
|
|
native readonly Actor Thing;
|
|
// for thingdied. can be null
|
|
native readonly Actor Inflictor;
|
|
// for thingdamaged.
|
|
native readonly int Damage;
|
|
native readonly Actor DamageSource;
|
|
native readonly Name DamageType;
|
|
native readonly EDmgFlags DamageFlags;
|
|
native readonly double DamageAngle;
|
|
}
|
|
|
|
struct PlayerEvent native play version("2.4")
|
|
{
|
|
// this is the player number that caused the event.
|
|
// note: you can get player struct from this by using players[e.PlayerNumber]
|
|
native readonly int PlayerNumber;
|
|
// this will be true if we are re-entering the hub level.
|
|
native readonly bool IsReturn;
|
|
}
|
|
|
|
struct UiEvent native ui version("2.4")
|
|
{
|
|
// d_gui.h
|
|
enum EGUIEvent
|
|
{
|
|
Type_None,
|
|
Type_KeyDown,
|
|
Type_KeyRepeat,
|
|
Type_KeyUp,
|
|
Type_Char,
|
|
Type_FirstMouseEvent, // ?
|
|
Type_MouseMove,
|
|
Type_LButtonDown,
|
|
Type_LButtonUp,
|
|
Type_LButtonClick,
|
|
Type_MButtonDown,
|
|
Type_MButtonUp,
|
|
Type_MButtonClick,
|
|
Type_RButtonDown,
|
|
Type_RButtonUp,
|
|
Type_RButtonClick,
|
|
Type_WheelUp,
|
|
Type_WheelDown,
|
|
Type_WheelRight, // ???
|
|
Type_WheelLeft, // ???
|
|
Type_BackButtonDown, // ???
|
|
Type_BackButtonUp, // ???
|
|
Type_FwdButtonDown, // ???
|
|
Type_FwdButtonUp, // ???
|
|
Type_LastMouseEvent
|
|
}
|
|
|
|
// for KeyDown, KeyRepeat, KeyUp
|
|
enum ESpecialGUIKeys
|
|
{
|
|
Key_PgDn = 1,
|
|
Key_PgUp = 2,
|
|
Key_Home = 3,
|
|
Key_End = 4,
|
|
Key_Left = 5,
|
|
Key_Right = 6,
|
|
Key_Alert = 7, // ASCII bell
|
|
Key_Backspace = 8, // ASCII
|
|
Key_Tab = 9, // ASCII
|
|
Key_LineFeed = 10, // ASCII
|
|
Key_Down = 10,
|
|
Key_VTab = 11, // ASCII
|
|
Key_Up = 11,
|
|
Key_FormFeed = 12, // ASCII
|
|
Key_Return = 13, // ASCII
|
|
Key_F1 = 14,
|
|
Key_F2 = 15,
|
|
Key_F3 = 16,
|
|
Key_F4 = 17,
|
|
Key_F5 = 18,
|
|
Key_F6 = 19,
|
|
Key_F7 = 20,
|
|
Key_F8 = 21,
|
|
Key_F9 = 22,
|
|
Key_F10 = 23,
|
|
Key_F11 = 24,
|
|
Key_F12 = 25,
|
|
Key_Del = 26,
|
|
Key_Escape = 27, // ASCII
|
|
Key_Free1 = 28,
|
|
Key_Free2 = 29,
|
|
Key_Back = 30, // browser back key
|
|
Key_CEscape = 31 // color escape
|
|
}
|
|
|
|
//
|
|
native readonly EGUIEvent Type;
|
|
//
|
|
native readonly String KeyString;
|
|
native readonly int KeyChar;
|
|
//
|
|
native readonly int MouseX;
|
|
native readonly int MouseY;
|
|
//
|
|
native readonly bool IsShift;
|
|
native readonly bool IsCtrl;
|
|
native readonly bool IsAlt;
|
|
}
|
|
|
|
struct InputEvent native play version("2.4")
|
|
{
|
|
enum EGenericEvent
|
|
{
|
|
Type_None,
|
|
Type_KeyDown,
|
|
Type_KeyUp,
|
|
Type_Mouse,
|
|
Type_GUI, // unused, kept for completeness
|
|
Type_DeviceChange
|
|
}
|
|
|
|
// ew.
|
|
enum EDoomInputKeys
|
|
{
|
|
Key_Pause = 0xc5, // DIK_PAUSE
|
|
Key_RightArrow = 0xcd, // DIK_RIGHT
|
|
Key_LeftArrow = 0xcb, // DIK_LEFT
|
|
Key_UpArrow = 0xc8, // DIK_UP
|
|
Key_DownArrow = 0xd0, // DIK_DOWN
|
|
Key_Escape = 0x01, // DIK_ESCAPE
|
|
Key_Enter = 0x1c, // DIK_RETURN
|
|
Key_Space = 0x39, // DIK_SPACE
|
|
Key_Tab = 0x0f, // DIK_TAB
|
|
Key_F1 = 0x3b, // DIK_F1
|
|
Key_F2 = 0x3c, // DIK_F2
|
|
Key_F3 = 0x3d, // DIK_F3
|
|
Key_F4 = 0x3e, // DIK_F4
|
|
Key_F5 = 0x3f, // DIK_F5
|
|
Key_F6 = 0x40, // DIK_F6
|
|
Key_F7 = 0x41, // DIK_F7
|
|
Key_F8 = 0x42, // DIK_F8
|
|
Key_F9 = 0x43, // DIK_F9
|
|
Key_F10 = 0x44, // DIK_F10
|
|
Key_F11 = 0x57, // DIK_F11
|
|
Key_F12 = 0x58, // DIK_F12
|
|
Key_Grave = 0x29, // DIK_GRAVE
|
|
|
|
Key_Backspace = 0x0e, // DIK_BACK
|
|
|
|
Key_Equals = 0x0d, // DIK_EQUALS
|
|
Key_Minus = 0x0c, // DIK_MINUS
|
|
|
|
Key_LShift = 0x2A, // DIK_LSHIFT
|
|
Key_LCtrl = 0x1d, // DIK_LCONTROL
|
|
Key_LAlt = 0x38, // DIK_LMENU
|
|
|
|
Key_RShift = Key_LSHIFT,
|
|
Key_RCtrl = Key_LCTRL,
|
|
Key_RAlt = Key_LALT,
|
|
|
|
Key_Ins = 0xd2, // DIK_INSERT
|
|
Key_Del = 0xd3, // DIK_DELETE
|
|
Key_End = 0xcf, // DIK_END
|
|
Key_Home = 0xc7, // DIK_HOME
|
|
Key_PgUp = 0xc9, // DIK_PRIOR
|
|
Key_PgDn = 0xd1, // DIK_NEXT
|
|
|
|
Key_Mouse1 = 0x100,
|
|
Key_Mouse2 = 0x101,
|
|
Key_Mouse3 = 0x102,
|
|
Key_Mouse4 = 0x103,
|
|
Key_Mouse5 = 0x104,
|
|
Key_Mouse6 = 0x105,
|
|
Key_Mouse7 = 0x106,
|
|
Key_Mouse8 = 0x107,
|
|
|
|
Key_FirstJoyButton = 0x108,
|
|
Key_Joy1 = (Key_FirstJoyButton+0),
|
|
Key_Joy2 = (Key_FirstJoyButton+1),
|
|
Key_Joy3 = (Key_FirstJoyButton+2),
|
|
Key_Joy4 = (Key_FirstJoyButton+3),
|
|
Key_Joy5 = (Key_FirstJoyButton+4),
|
|
Key_Joy6 = (Key_FirstJoyButton+5),
|
|
Key_Joy7 = (Key_FirstJoyButton+6),
|
|
Key_Joy8 = (Key_FirstJoyButton+7),
|
|
Key_LastJoyButton = 0x187,
|
|
Key_JoyPOV1_Up = 0x188,
|
|
Key_JoyPOV1_Right = 0x189,
|
|
Key_JoyPOV1_Down = 0x18a,
|
|
Key_JoyPOV1_Left = 0x18b,
|
|
Key_JoyPOV2_Up = 0x18c,
|
|
Key_JoyPOV3_Up = 0x190,
|
|
Key_JoyPOV4_Up = 0x194,
|
|
|
|
Key_MWheelUp = 0x198,
|
|
Key_MWheelDown = 0x199,
|
|
Key_MWheelRight = 0x19A,
|
|
Key_MWheelLeft = 0x19B,
|
|
|
|
Key_JoyAxis1Plus = 0x19C,
|
|
Key_JoyAxis1Minus = 0x19D,
|
|
Key_JoyAxis2Plus = 0x19E,
|
|
Key_JoyAxis2Minus = 0x19F,
|
|
Key_JoyAxis3Plus = 0x1A0,
|
|
Key_JoyAxis3Minus = 0x1A1,
|
|
Key_JoyAxis4Plus = 0x1A2,
|
|
Key_JoyAxis4Minus = 0x1A3,
|
|
Key_JoyAxis5Plus = 0x1A4,
|
|
Key_JoyAxis5Minus = 0x1A5,
|
|
Key_JoyAxis6Plus = 0x1A6,
|
|
Key_JoyAxis6Minus = 0x1A7,
|
|
Key_JoyAxis7Plus = 0x1A8,
|
|
Key_JoyAxis7Minus = 0x1A9,
|
|
Key_JoyAxis8Plus = 0x1AA,
|
|
Key_JoyAxis8Minus = 0x1AB,
|
|
Num_JoyAxisButtons = 8,
|
|
|
|
Key_Pad_LThumb_Right = 0x1AC,
|
|
Key_Pad_LThumb_Left = 0x1AD,
|
|
Key_Pad_LThumb_Down = 0x1AE,
|
|
Key_Pad_LThumb_Up = 0x1AF,
|
|
|
|
Key_Pad_RThumb_Right = 0x1B0,
|
|
Key_Pad_RThumb_Left = 0x1B1,
|
|
Key_Pad_RThumb_Down = 0x1B2,
|
|
Key_Pad_RThumb_Up = 0x1B3,
|
|
|
|
Key_Pad_DPad_Up = 0x1B4,
|
|
Key_Pad_DPad_Down = 0x1B5,
|
|
Key_Pad_DPad_Left = 0x1B6,
|
|
Key_Pad_DPad_Right = 0x1B7,
|
|
Key_Pad_Start = 0x1B8,
|
|
Key_Pad_Back = 0x1B9,
|
|
Key_Pad_LThumb = 0x1BA,
|
|
Key_Pad_RThumb = 0x1BB,
|
|
Key_Pad_LShoulder = 0x1BC,
|
|
Key_Pad_RShoulder = 0x1BD,
|
|
Key_Pad_LTrigger = 0x1BE,
|
|
Key_Pad_RTrigger = 0x1BF,
|
|
Key_Pad_A = 0x1C0,
|
|
Key_Pad_B = 0x1C1,
|
|
Key_Pad_X = 0x1C2,
|
|
Key_Pad_Y = 0x1C3,
|
|
|
|
Num_Keys = 0x1C4
|
|
}
|
|
|
|
//
|
|
native readonly EGenericEvent Type;
|
|
//
|
|
native readonly int KeyScan; // as in EDoomInputKeys enum
|
|
native readonly String KeyString;
|
|
native readonly int KeyChar; // ASCII char (if any)
|
|
//
|
|
native readonly int MouseX;
|
|
native readonly int MouseY;
|
|
}
|
|
|
|
struct ConsoleEvent native version("2.4")
|
|
{
|
|
// for net events, this will be the activator.
|
|
// for UI events, this is always -1, and you need to check if level is loaded and use players[consoleplayer].
|
|
native readonly int Player;
|
|
// this is the name and args as specified in SendNetworkEvent or event/netevent CCMDs
|
|
native readonly String Name;
|
|
native readonly int Args[3];
|
|
// this will be true if the event is fired from the console by event/netevent CCMD
|
|
native readonly bool IsManual;
|
|
}
|
|
|
|
class StaticEventHandler : Object native play version("2.4")
|
|
{
|
|
// static event handlers CAN register other static event handlers.
|
|
// unlike EventHandler.Create that will not create them.
|
|
clearscope static native StaticEventHandler Find(Class<StaticEventHandler> type); // just for convenience. who knows.
|
|
|
|
// these are called when the handler gets registered or unregistered
|
|
// you can set Order/IsUiProcessor here.
|
|
virtual native void OnRegister();
|
|
virtual native void OnUnregister();
|
|
|
|
// actual handlers are here
|
|
virtual native void WorldLoaded(WorldEvent e);
|
|
virtual native void WorldUnloaded(WorldEvent e);
|
|
virtual native void WorldThingSpawned(WorldEvent e);
|
|
virtual native void WorldThingDied(WorldEvent e);
|
|
virtual native void WorldThingRevived(WorldEvent e);
|
|
virtual native void WorldThingDamaged(WorldEvent e);
|
|
virtual native void WorldThingDestroyed(WorldEvent e);
|
|
virtual native void WorldLightning(WorldEvent e); // for the sake of completeness.
|
|
virtual native void WorldTick();
|
|
|
|
//
|
|
//virtual native ui void RenderFrame(RenderEvent e);
|
|
virtual native ui void RenderOverlay(RenderEvent e);
|
|
|
|
//
|
|
virtual native void PlayerEntered(PlayerEvent e);
|
|
virtual native void PlayerRespawned(PlayerEvent e);
|
|
virtual native void PlayerDied(PlayerEvent e);
|
|
virtual native void PlayerDisconnected(PlayerEvent e);
|
|
|
|
//
|
|
virtual native ui bool UiProcess(UiEvent e);
|
|
virtual native ui bool InputProcess(InputEvent e);
|
|
virtual native ui void UiTick();
|
|
|
|
//
|
|
virtual native ui void ConsoleProcess(ConsoleEvent e);
|
|
virtual native void NetworkProcess(ConsoleEvent e);
|
|
|
|
// this value will be queried on Register() to decide the relative order of this handler to every other.
|
|
// this is most useful in UI systems.
|
|
// default is 0.
|
|
native readonly int Order;
|
|
native void SetOrder(int order);
|
|
// this value will be queried on user input to decide whether to send UiProcess to this handler.
|
|
native bool IsUiProcessor;
|
|
// this value determines whether mouse input is required.
|
|
native bool RequireMouse;
|
|
}
|
|
|
|
class EventHandler : StaticEventHandler native version("2.4")
|
|
{
|
|
clearscope static native StaticEventHandler Find(class<StaticEventHandler> type);
|
|
clearscope static native void SendNetworkEvent(String name, int arg1 = 0, int arg2 = 0, int arg3 = 0);
|
|
}
|