2017-01-30 23:28:47 +00:00
|
|
|
|
2017-03-06 21:27:51 +00:00
|
|
|
struct RenderEvent native ui version("2.4")
|
2017-01-30 23:28:47 +00:00
|
|
|
{
|
|
|
|
native readonly Vector3 ViewPos;
|
|
|
|
native readonly double ViewAngle;
|
|
|
|
native readonly double ViewPitch;
|
|
|
|
native readonly double ViewRoll;
|
|
|
|
native readonly double FracTic;
|
|
|
|
native readonly Actor Camera;
|
|
|
|
}
|
|
|
|
|
2017-03-06 21:27:51 +00:00
|
|
|
struct WorldEvent native play version("2.4")
|
2017-01-30 23:28:47 +00:00
|
|
|
{
|
|
|
|
// for loaded/unloaded
|
|
|
|
native readonly bool IsSaveGame;
|
2017-02-02 18:26:56 +00:00
|
|
|
// this will be true if we are re-entering the hub level.
|
|
|
|
native readonly bool IsReopen;
|
2017-01-30 23:28:47 +00:00
|
|
|
// for thingspawned/thingdied/thingdestroyed
|
|
|
|
native readonly Actor Thing;
|
2017-01-31 00:07:00 +00:00
|
|
|
// for thingdied. can be null
|
|
|
|
native readonly Actor Inflictor;
|
2018-11-06 02:59:17 +00:00
|
|
|
// for thingdamaged, line/sector damaged
|
2017-01-31 02:35:44 +00:00
|
|
|
native readonly int Damage;
|
|
|
|
native readonly Actor DamageSource;
|
|
|
|
native readonly Name DamageType;
|
|
|
|
native readonly EDmgFlags DamageFlags;
|
|
|
|
native readonly double DamageAngle;
|
2018-03-24 14:59:20 +00:00
|
|
|
// for line(pre)activated
|
2018-03-17 15:01:47 +00:00
|
|
|
native readonly Line ActivatedLine;
|
2018-04-14 08:33:17 +00:00
|
|
|
native readonly int ActivationType;
|
2018-03-24 14:59:20 +00:00
|
|
|
native bool ShouldActivate;
|
2018-11-06 02:59:17 +00:00
|
|
|
// for line/sector damaged
|
|
|
|
native readonly SectorPart DamageSectorPart;
|
|
|
|
native readonly Line DamageLine;
|
|
|
|
native readonly Sector DamageSector;
|
|
|
|
native readonly int DamageLineSide;
|
|
|
|
native readonly vector3 DamagePosition;
|
|
|
|
native readonly bool DamageIsRadius;
|
|
|
|
native int NewDamage;
|
2017-01-30 23:28:47 +00:00
|
|
|
}
|
|
|
|
|
2017-03-06 21:27:51 +00:00
|
|
|
struct PlayerEvent native play version("2.4")
|
2017-02-02 18:26:56 +00:00
|
|
|
{
|
|
|
|
// 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;
|
|
|
|
}
|
|
|
|
|
2017-03-06 21:27:51 +00:00
|
|
|
struct UiEvent native ui version("2.4")
|
2017-02-03 10:28:40 +00:00
|
|
|
{
|
|
|
|
// 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;
|
|
|
|
}
|
|
|
|
|
2017-03-06 21:27:51 +00:00
|
|
|
struct InputEvent native play version("2.4")
|
2017-02-03 10:28:40 +00:00
|
|
|
{
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
2017-03-06 21:27:51 +00:00
|
|
|
struct ConsoleEvent native version("2.4")
|
2017-02-06 13:52:20 +00:00
|
|
|
{
|
|
|
|
// 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;
|
2017-03-06 09:25:30 +00:00
|
|
|
// this is the name and args as specified in SendNetworkEvent or event/netevent CCMDs
|
2017-02-06 13:52:20 +00:00
|
|
|
native readonly String Name;
|
|
|
|
native readonly int Args[3];
|
2017-03-06 09:25:30 +00:00
|
|
|
// this will be true if the event is fired from the console by event/netevent CCMD
|
|
|
|
native readonly bool IsManual;
|
2017-02-06 13:52:20 +00:00
|
|
|
}
|
|
|
|
|
2018-08-15 15:46:03 +00:00
|
|
|
struct ReplaceEvent native version("2.4")
|
|
|
|
{
|
|
|
|
native readonly Class<Actor> Replacee;
|
|
|
|
native Class<Actor> Replacement;
|
2018-08-16 18:46:40 +00:00
|
|
|
native bool IsFinal;
|
2018-08-15 15:46:03 +00:00
|
|
|
}
|
|
|
|
|
2017-03-05 13:03:27 +00:00
|
|
|
class StaticEventHandler : Object native play version("2.4")
|
2017-01-22 02:15:30 +00:00
|
|
|
{
|
2017-01-30 07:28:27 +00:00
|
|
|
// static event handlers CAN register other static event handlers.
|
|
|
|
// unlike EventHandler.Create that will not create them.
|
2017-03-04 22:52:43 +00:00
|
|
|
clearscope static native StaticEventHandler Find(Class<StaticEventHandler> type); // just for convenience. who knows.
|
2017-01-30 07:28:27 +00:00
|
|
|
|
2017-02-03 10:28:40 +00:00
|
|
|
// these are called when the handler gets registered or unregistered
|
|
|
|
// you can set Order/IsUiProcessor here.
|
2018-11-29 17:46:28 +00:00
|
|
|
virtual void OnRegister() {}
|
|
|
|
virtual void OnUnregister() {}
|
2017-01-30 07:28:27 +00:00
|
|
|
|
2017-01-30 23:28:47 +00:00
|
|
|
// actual handlers are here
|
2018-11-29 17:46:28 +00:00
|
|
|
virtual void WorldLoaded(WorldEvent e) {}
|
|
|
|
virtual void WorldUnloaded(WorldEvent e) {}
|
|
|
|
virtual void WorldThingSpawned(WorldEvent e) {}
|
|
|
|
virtual void WorldThingDied(WorldEvent e) {}
|
|
|
|
virtual void WorldThingRevived(WorldEvent e) {}
|
|
|
|
virtual void WorldThingDamaged(WorldEvent e) {}
|
|
|
|
virtual void WorldThingDestroyed(WorldEvent e) {}
|
|
|
|
virtual void WorldLinePreActivated(WorldEvent e) {}
|
|
|
|
virtual void WorldLineActivated(WorldEvent e) {}
|
|
|
|
virtual void WorldSectorDamaged(WorldEvent e) {}
|
|
|
|
virtual void WorldLineDamaged(WorldEvent e) {}
|
|
|
|
virtual void WorldLightning(WorldEvent e) {} // for the sake of completeness.
|
|
|
|
virtual void WorldTick() {}
|
2017-01-22 06:56:57 +00:00
|
|
|
|
2017-02-02 18:26:56 +00:00
|
|
|
//
|
2018-11-29 17:46:28 +00:00
|
|
|
//virtual ui void RenderFrame(RenderEvent e) {}
|
|
|
|
virtual ui void RenderOverlay(RenderEvent e) {}
|
2017-02-02 17:57:00 +00:00
|
|
|
|
2017-02-02 18:26:56 +00:00
|
|
|
//
|
2018-11-29 17:46:28 +00:00
|
|
|
virtual void PlayerEntered(PlayerEvent e) {}
|
|
|
|
virtual void PlayerRespawned(PlayerEvent e) {}
|
|
|
|
virtual void PlayerDied(PlayerEvent e) {}
|
|
|
|
virtual void PlayerDisconnected(PlayerEvent e) {}
|
2017-02-02 18:26:56 +00:00
|
|
|
|
2017-02-03 10:28:40 +00:00
|
|
|
//
|
2018-11-29 17:46:28 +00:00
|
|
|
virtual ui bool UiProcess(UiEvent e) { return false; }
|
|
|
|
virtual ui bool InputProcess(InputEvent e) { return false; }
|
|
|
|
virtual ui void UiTick() {}
|
|
|
|
virtual ui void PostUiTick() {}
|
2017-02-03 10:28:40 +00:00
|
|
|
|
2017-02-06 13:52:20 +00:00
|
|
|
//
|
2018-11-29 17:46:28 +00:00
|
|
|
virtual ui void ConsoleProcess(ConsoleEvent e) {}
|
|
|
|
virtual void NetworkProcess(ConsoleEvent e) {}
|
2017-02-06 13:52:20 +00:00
|
|
|
|
2018-08-15 15:46:03 +00:00
|
|
|
//
|
2018-11-29 17:46:28 +00:00
|
|
|
virtual void CheckReplacement(ReplaceEvent e) {}
|
2018-08-15 15:46:03 +00:00
|
|
|
|
2018-09-15 02:57:07 +00:00
|
|
|
//
|
2018-11-29 17:46:28 +00:00
|
|
|
virtual void NewGame() {}
|
2018-09-15 02:57:07 +00:00
|
|
|
|
2017-02-03 10:28:40 +00:00
|
|
|
// this value will be queried on Register() to decide the relative order of this handler to every other.
|
2017-02-02 17:57:00 +00:00
|
|
|
// this is most useful in UI systems.
|
|
|
|
// default is 0.
|
2017-02-03 18:44:27 +00:00
|
|
|
native readonly int Order;
|
|
|
|
native void SetOrder(int order);
|
2017-02-03 10:28:40 +00:00
|
|
|
// this value will be queried on user input to decide whether to send UiProcess to this handler.
|
|
|
|
native bool IsUiProcessor;
|
2017-02-03 18:34:34 +00:00
|
|
|
// this value determines whether mouse input is required.
|
|
|
|
native bool RequireMouse;
|
2017-01-30 06:47:15 +00:00
|
|
|
}
|
|
|
|
|
2017-03-05 13:03:27 +00:00
|
|
|
class EventHandler : StaticEventHandler native version("2.4")
|
2017-01-22 06:56:57 +00:00
|
|
|
{
|
2017-03-04 22:38:00 +00:00
|
|
|
clearscope static native StaticEventHandler Find(class<StaticEventHandler> type);
|
2017-03-03 22:57:41 +00:00
|
|
|
clearscope static native void SendNetworkEvent(String name, int arg1 = 0, int arg2 = 0, int arg3 = 0);
|
2017-01-22 06:56:57 +00:00
|
|
|
}
|