JademusSreg

Input

Mar 9th, 2011
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.63 KB | None | 0 0
  1. //=====================================================
  2. // Input, a script to capture key and mouse input
  3. //
  4. // This script will catch and store player input
  5. // from the keyboard and mouse in a struct array.
  6. // Keys and buttons are records as bool states,
  7. // while mouse clicks and movement are kept as
  8. // int and fixed values for the UI and World
  9. // respectively.
  10. //
  11. // To get the state of the X key, you would use:
  12. // playerInput[p].key.state[c_keyX]
  13. // To get the point of the cursor, you could:
  14. // Point(playerInput[p].mouse.x,playerInput[p].mouse.y)
  15. //
  16. // The user may configure the DETECT bool
  17. // constants to set which triggers will be
  18. // created on initialization of the script.
  19. //=====================================================
  20. // CONFIGURABLE CONSTANTS
  21. const bool DETECT_KEYDOWN = true;
  22. const bool DETECT_KEYUP = true;
  23. const bool DETECT_BUTTONDOWN = true;
  24. const bool DETECT_BUTTONUP = true;
  25. const bool DETECT_MOVEMENT = true;
  26. const int INPUT_BUTTONS = 6;
  27. const int INPUT_KEYS = 99;
  28. const int MAX_PLAYERS = 16;
  29. // STRUCTS
  30. struct Button { bool[INPUT_BUTTONS] state; };
  31. struct Key { bool[INPUT_KEYS] state; };
  32. struct Mouse {
  33.     int uix;
  34.     int uiy;
  35.     fixed x;
  36.     fixed y;
  37.     fixed z;
  38. };
  39. struct Input {
  40.     Key key;
  41.     Button button;
  42.     Mouse mouse;
  43. };
  44. // GLOBALS
  45. Input[MAX_PLAYERS] playerInput;
  46. // FUNCTIONS
  47. bool Input_KeyOn (bool testConds, bool runActions) {
  48.     playerInput[EventPlayer()].key.state[EventKeyPressed()] = true;
  49.     return true;
  50. }
  51. bool Input_KeyOff (bool testConds, bool runActions) {
  52.     playerInput[EventPlayer()].key.state[EventKeyPressed()] = false;
  53.     return true;
  54. }
  55. bool Input_ButtonOn (bool testConds, bool runActions) {
  56.     int p = EventPlayer();
  57.     playerInput[p].button.state[EventMouseClickedButton()] = true;
  58.     playerInput[p].mouse.uix = EventMouseClickedPosXUI();
  59.     playerInput[p].mouse.uiy = EventMouseClickedPosYUI();
  60.     playerInput[p].mouse.x = EventMouseClickedPosXWorld();
  61.     playerInput[p].mouse.y = EventMouseClickedPosYWorld();
  62.     playerInput[p].mouse.z = EventMouseClickedPosZWorld();
  63.     return true;
  64. }
  65. bool Input_ButtonOff (bool testConds, bool runActions) {
  66.     int p = EventPlayer();
  67.     playerInput[p].button.state[EventMouseClickedButton()] = false;
  68.     playerInput[p].mouse.uix = EventMouseClickedPosXUI();
  69.     playerInput[p].mouse.uiy = EventMouseClickedPosYUI();
  70.     playerInput[p].mouse.x = EventMouseClickedPosXWorld();
  71.     playerInput[p].mouse.y = EventMouseClickedPosYWorld();
  72.     playerInput[p].mouse.z = EventMouseClickedPosZWorld();
  73.     return true;
  74. }
  75. bool Input_Movement (bool testConds, bool runActions) {
  76.     int p = EventPlayer();
  77.     playerInput[p].mouse.uix = EventMouseMovedPosXUI();
  78.     playerInput[p].mouse.uiy = EventMouseMovedPosYUI();
  79.     playerInput[p].mouse.x = EventMouseMovedPosXWorld();
  80.     playerInput[p].mouse.y = EventMouseMovedPosYWorld();
  81.     playerInput[p].mouse.z = EventMouseMovedPosZWorld();
  82.     return true;
  83. }
  84. void Input_Init () {
  85.     if (DETECT_KEYDOWN) {
  86.         TriggerAddEventKeyPressed(TriggerCreate("Input_KeyOn"),c_playerAny,c_keyNone,true,0,0,0);
  87.     }
  88.     if (DETECT_KEYUP) {
  89.         TriggerAddEventKeyPressed(TriggerCreate("Input_KeyOff"),c_playerAny,c_keyNone,false,0,0,0);
  90.     }
  91.     if (DETECT_BUTTONDOWN) {
  92.         TriggerAddEventMouseClicked(TriggerCreate("Input_ButtonOn"),c_playerAny,c_mouseButtonNone,true);
  93.     }
  94.     if (DETECT_BUTTONUP) {
  95.         TriggerAddEventMouseClicked(TriggerCreate("Input_ButtonOff"),c_playerAny,c_mouseButtonNone,false);
  96.     }
  97.     if (DETECT_MOVEMENT) {
  98.         TriggerAddEventMouseMoved(TriggerCreate("Input_Movement"), c_playerAny);
  99.     }
  100. }
Advertisement
Add Comment
Please, Sign In to add comment