Files
GDevelop/GDJS/Runtime/events-tools/inputtools.js
T

401 lines
7.9 KiB
JavaScript

/*
* GDevelop JS Platform
* Copyright 2013-2016 Florian Rival (Florian.Rival@gmail.com). All rights reserved.
* This project is released under the MIT License.
*/
/**
* Tools related to input ( Keyboard, mouse ), for events generated code.
*
* @memberof gdjs.evtTools
* @class input
* @static
* @private
*/
gdjs.evtTools.input = gdjs.evtTools.input || {};
/**
* Return true if the specified key is pressed
*
* @private
*/
gdjs.evtTools.input.isKeyPressed = function(runtimeScene, key) {
if (gdjs.evtTools.input.keysNameToCode.hasOwnProperty(key)) {
return runtimeScene
.getGame()
.getInputManager()
.isKeyPressed(gdjs.evtTools.input.keysNameToCode[key]);
}
return false;
};
/**
* Return true if the specified key was just released
*
* @private
*/
gdjs.evtTools.input.wasKeyReleased = function(runtimeScene, key) {
if (gdjs.evtTools.input.keysNameToCode.hasOwnProperty(key)) {
return runtimeScene
.getGame()
.getInputManager()
.wasKeyReleased(gdjs.evtTools.input.keysNameToCode[key]);
}
return false;
};
/**
* Return the name of the last key pressed in the game
* @private
*/
gdjs.evtTools.input.lastPressedKey = function(runtimeScene) {
//Ensure _keysCodeToName is constructed
if (gdjs.evtTools.input._keysCodeToName === undefined) {
gdjs.evtTools.input._keysCodeToName = {};
var keysNameToCode = gdjs.evtTools.input.keysNameToCode;
for (var p in keysNameToCode) {
if (keysNameToCode.hasOwnProperty(p)) {
gdjs.evtTools.input._keysCodeToName[keysNameToCode[p]] = p;
}
}
}
var keyCode = runtimeScene
.getGame()
.getInputManager()
.getLastPressedKey();
if (gdjs.evtTools.input._keysCodeToName.hasOwnProperty(keyCode)) {
return gdjs.evtTools.input._keysCodeToName[keyCode];
}
return '';
};
/**
* Hashmap associated each name of a key to its location-aware keyCode.
* @memberof gdjs.evtTools
*/
gdjs.evtTools.input.keysNameToCode = {
a: 65,
b: 66,
c: 67,
d: 68,
e: 69,
f: 70,
g: 71,
h: 72,
i: 73,
j: 74,
k: 75,
l: 76,
m: 77,
n: 78,
o: 79,
p: 80,
q: 81,
r: 82,
s: 83,
t: 84,
u: 85,
v: 86,
w: 87,
x: 88,
y: 89,
z: 90,
Num0: 48,
Num1: 49,
Num2: 50,
Num3: 51,
Num4: 52,
Num5: 53,
Num6: 54,
Num7: 55,
Num8: 56,
Num9: 57,
Numpad0: 96,
Numpad1: 97,
Numpad2: 98,
Numpad3: 99,
Numpad4: 100,
Numpad5: 101,
Numpad6: 102,
Numpad7: 103,
Numpad8: 104,
Numpad9: 105,
LShift: 1016,
RShift: 2016,
LControl: 1017,
RControl: 2017,
LAlt: 1018,
RAlt: 2018,
LSystem: 1091,
RSystem: 2091,
/*"Menu": sf::Keyboard::Menu ,
"LBracket": sf::Keyboard::LBracket ,
"RBracket": sf::Keyboard::RBracket ,
"SemiColon": sf::Keyboard::SemiColon ,
"Comma": sf::Keyboard::Comma ,
"Period": sf::Keyboard::Period ,
"Quote": sf::Keyboard::Quote ,
"Slash": sf::Keyboard::Slash ,
"BackSlash": sf::Keyboard::BackSlash ,
"Tilde": sf::Keyboard::Tilde ,
"Equal": sf::Keyboard::Equal ,
"Dash": sf::Keyboard::Dash,*/
Space: 32,
Back: 8,
Tab: 9,
Delete: 46,
Insert: 45,
Escape: 27,
PageUp: 33,
PageDown: 34,
End: 35,
Home: 36,
Return: 13,
NumpadPageUp: 3033,
NumpadPageDown: 3034,
NumpadEnd: 3035,
NumpadHome: 3036,
NumpadReturn: 3013,
Add: 107,
Subtract: 109,
Multiply: 106,
Divide: 111,
NumpadAdd: 3107,
NumpadSubtract: 3109,
NumpadMultiply: 3106,
NumpadDivide: 3111,
Left: 37,
Up: 38,
Right: 39,
Down: 40,
NumpadLeft: 3037,
NumpadUp: 3038,
NumpadRight: 3039,
NumpadDown: 3040,
F1: 112,
F2: 113,
F3: 114,
F4: 115,
F5: 116,
F6: 117,
F7: 118,
F8: 119,
F9: 120,
F10: 121,
F11: 122,
F12: 123,
Pause: 19,
};
gdjs.evtTools.input.anyKeyPressed = function(runtimeScene) {
return runtimeScene
.getGame()
.getInputManager()
.anyKeyPressed();
};
gdjs.evtTools.input.isMouseButtonPressed = function(runtimeScene, button) {
if (button === 'Left')
return runtimeScene
.getGame()
.getInputManager()
.isMouseButtonPressed(0);
if (button === 'Right')
return runtimeScene
.getGame()
.getInputManager()
.isMouseButtonPressed(1);
if (button === 'Middle')
return runtimeScene
.getGame()
.getInputManager()
.isMouseButtonPressed(2);
return false;
};
gdjs.evtTools.input.isMouseButtonReleased = function(runtimeScene, button) {
if (button === 'Left')
return runtimeScene
.getGame()
.getInputManager()
.isMouseButtonReleased(0);
if (button === 'Right')
return runtimeScene
.getGame()
.getInputManager()
.isMouseButtonReleased(1);
if (button === 'Middle')
return runtimeScene
.getGame()
.getInputManager()
.isMouseButtonReleased(2);
return false;
};
gdjs.evtTools.input.hideCursor = function(runtimeScene) {
runtimeScene.getRenderer().hideCursor();
};
gdjs.evtTools.input.showCursor = function(runtimeScene) {
runtimeScene.getRenderer().showCursor();
};
gdjs.evtTools.input.getMouseWheelDelta = function(runtimeScene) {
return runtimeScene
.getGame()
.getInputManager()
.getMouseWheelDelta();
};
gdjs.evtTools.input.isScrollingUp = function(runtimeScene) {
return runtimeScene
.getGame()
.getInputManager()
.isScrollingUp();
};
gdjs.evtTools.input.isScrollingDown = function(runtimeScene) {
return runtimeScene
.getGame()
.getInputManager()
.isScrollingDown();
};
gdjs.evtTools.input.getMouseX = function(runtimeScene, layer, camera) {
return runtimeScene.getLayer(layer).convertCoords(
runtimeScene
.getGame()
.getInputManager()
.getMouseX(),
runtimeScene
.getGame()
.getInputManager()
.getMouseY()
)[0];
};
gdjs.evtTools.input.getMouseY = function(runtimeScene, layer, camera) {
return runtimeScene.getLayer(layer).convertCoords(
runtimeScene
.getGame()
.getInputManager()
.getMouseX(),
runtimeScene
.getGame()
.getInputManager()
.getMouseY()
)[1];
};
gdjs.evtTools.input._cursorIsOnObject = function(obj, runtimeScene) {
return obj.cursorOnObject(runtimeScene);
};
gdjs.evtTools.input.cursorOnObject = function(
objectsLists,
runtimeScene,
accurate,
inverted
) {
return gdjs.evtTools.object.pickObjectsIf(
gdjs.evtTools.input._cursorIsOnObject,
objectsLists,
inverted,
runtimeScene
);
};
gdjs.evtTools.input.getTouchX = function(
runtimeScene,
identifier,
layer,
camera
) {
return runtimeScene.getLayer(layer).convertCoords(
runtimeScene
.getGame()
.getInputManager()
.getTouchX(identifier),
runtimeScene
.getGame()
.getInputManager()
.getTouchY(identifier)
)[0];
};
gdjs.evtTools.input.getTouchY = function(
runtimeScene,
identifier,
layer,
camera
) {
return runtimeScene.getLayer(layer).convertCoords(
runtimeScene
.getGame()
.getInputManager()
.getTouchX(identifier),
runtimeScene
.getGame()
.getInputManager()
.getTouchY(identifier)
)[1];
};
gdjs.evtTools.input.getLastTouchId = function() {
return gdjs.evtTools.input.lastTouchId || 0;
};
gdjs.evtTools.input.getLastEndedTouchId = function() {
return gdjs.evtTools.input.lastEndedTouchId || 0;
};
gdjs.evtTools.input.popStartedTouch = function(runtimeScene) {
var startedTouchId = runtimeScene
.getGame()
.getInputManager()
.popStartedTouch();
if (startedTouchId !== undefined) {
gdjs.evtTools.input.lastTouchId = startedTouchId;
return true;
}
return false;
};
gdjs.evtTools.input.popEndedTouch = function(runtimeScene) {
var endedTouchId = runtimeScene
.getGame()
.getInputManager()
.popEndedTouch();
if (endedTouchId !== undefined) {
gdjs.evtTools.input.lastEndedTouchId = endedTouchId;
return true;
}
return false;
};
gdjs.evtTools.input.touchSimulateMouse = function(runtimeScene, enable) {
runtimeScene
.getGame()
.getInputManager()
.touchSimulateMouse(enable);
};