Remove old controls code
This commit is contained in:
		
							parent
							
								
									e0a92867b3
								
							
						
					
					
						commit
						11aefede1d
					
				
					 6 changed files with 2 additions and 1819 deletions
				
			
		|  | @ -1,186 +0,0 @@ | |||
| #joyDiv { | ||||
|     position: absolute; | ||||
|     bottom: 0; | ||||
|     left: 0; | ||||
|     color: whitesmoke; | ||||
|     width: 50vh; | ||||
|     height: 50vh; | ||||
| 
 | ||||
|     z-index: 1488; | ||||
|     opacity: 0.6; | ||||
| } | ||||
| 
 | ||||
| .show-gamepad-button { | ||||
|     z-index: 1489; | ||||
|     position: absolute; | ||||
|     right: 3vh; | ||||
|     bottom: 3vh; | ||||
|     background-size: cover; | ||||
|     background-position: center; | ||||
|     justify-content: center; | ||||
|     align-items: center; | ||||
|     background-image: url('../assets/omori_show_button.png'); | ||||
|     min-width: 6vh; | ||||
|     min-height: 6vh; | ||||
|     opacity: 0.6; | ||||
|     image-rendering: pixelated; | ||||
| } | ||||
| 
 | ||||
| .switch-button { | ||||
|     z-index: 1489; | ||||
|     position: absolute; | ||||
|     left: 3vh; | ||||
|     bottom: 3vh; | ||||
|     background-size: cover; | ||||
|     background-position: center; | ||||
|     justify-content: center; | ||||
|     align-items: center; | ||||
|     background-image: url('../assets/omori_switch_button.png'); | ||||
|     min-width: 6vh; | ||||
|     min-height: 6vh; | ||||
|     opacity: 0.6; | ||||
|     image-rendering: pixelated; | ||||
| } | ||||
| 
 | ||||
| .fps-button { | ||||
|     position: absolute; | ||||
|     left: 5px; | ||||
|     top: 5px; | ||||
|     width: 90px; | ||||
|     height: 40px; | ||||
|     z-index: 1489; | ||||
| } | ||||
| 
 | ||||
| .gamepad-buttons { | ||||
|     opacity: 0.6; | ||||
|     z-index: 1488; | ||||
|     position: absolute; | ||||
|     bottom: 16px; | ||||
|     right: 32px; | ||||
| 
 | ||||
|     justify-content: center; | ||||
|     align-items: center; | ||||
| 
 | ||||
|     display: flex; | ||||
|     flex-flow: column nowrap; | ||||
| } | ||||
| 
 | ||||
| .gamepad-buttons-row { | ||||
|     display: flex; | ||||
|     flex-flow: row nowrap; | ||||
|     gap: 9vh; | ||||
| } | ||||
| 
 | ||||
| .gamepad-button { | ||||
|     min-width: 18vh; | ||||
|     min-height: 18vh; | ||||
|     display: flex; | ||||
|     position: relative; | ||||
|     background-size: cover; | ||||
|     background-position: center; | ||||
|     width: 100%; | ||||
|     height: 100%; | ||||
|     image-rendering: pixelated; | ||||
| } | ||||
| 
 | ||||
| .gamepad-bumper { | ||||
|     z-index: 1488; | ||||
|     position: absolute; | ||||
|     background-size: cover; | ||||
|     background-position: center; | ||||
|     justify-content: center; | ||||
|     align-items: center; | ||||
|     min-width: 18.8vh; | ||||
|     min-height: 12vh; | ||||
|     image-rendering: pixelated; | ||||
| } | ||||
| 
 | ||||
| .A { | ||||
|     background-image: url('../assets/omori_a_button.png'); | ||||
| } | ||||
| 
 | ||||
| .B { | ||||
|     background-image: url('../assets/omori_b_button.png'); | ||||
|     top: 4.5vh; | ||||
| } | ||||
| 
 | ||||
| .X { | ||||
|     background-image: url('../assets/omori_x_button.png'); | ||||
|     top: 4.5vh; | ||||
| } | ||||
| 
 | ||||
| .Y { | ||||
|     background-image: url('../assets/omori_y_button.png'); | ||||
|     top: 9vh; | ||||
| } | ||||
| 
 | ||||
| .LB { | ||||
|     background-image: url('../assets/omori_lb_button.png'); | ||||
|     opacity: 0.6; | ||||
|     left: 16px; | ||||
|     bottom: 56vh; | ||||
| } | ||||
| 
 | ||||
| .RB { | ||||
|     background-image: url('../assets/omori_rb_button.png'); | ||||
|     opacity: 0.6; | ||||
|     right: 16px; | ||||
|     bottom: 56vh; | ||||
| } | ||||
| 
 | ||||
| .dpad-buttons { | ||||
|     opacity: 0.6; | ||||
|     z-index: 1488; | ||||
|     position: absolute; | ||||
|     bottom: 16px; | ||||
|     left: 32px; | ||||
|     background-size: cover; | ||||
|     background-position: center; | ||||
|     justify-content: center; | ||||
|     align-items: center; | ||||
|     background-image: url('../assets/omori_dpad.png'); | ||||
|     display: flex; | ||||
|     flex-flow: column nowrap; | ||||
|     min-width: 42vh; | ||||
|     min-height: 42vh; | ||||
|     image-rendering: pixelated; | ||||
| } | ||||
| 
 | ||||
| .dpad-buttons-row { | ||||
|     display: flex; | ||||
|     flex-flow: row nowrap; | ||||
| } | ||||
| 
 | ||||
| .dpad-button { | ||||
|     min-width: 12vh; | ||||
|     min-height: 12vh; | ||||
|     display: flex; | ||||
|     position: relative; | ||||
|     width: 100%; | ||||
|     height: 100%; | ||||
|     opacity: 0.6; | ||||
| } | ||||
| 
 | ||||
| .up { | ||||
|     /* background-color: blue; */ | ||||
|     bottom: 7.5vh; | ||||
|     right: 6vh; | ||||
| } | ||||
| 
 | ||||
| .left { | ||||
|     /* background-color: red; */ | ||||
|     right: 7.5vh; | ||||
|     top: 6vh; | ||||
| } | ||||
| 
 | ||||
| .right { | ||||
|     /* background-color: green; */ | ||||
|     left: 7.5vh; | ||||
|     bottom: 6vh; | ||||
| } | ||||
| 
 | ||||
| .down { | ||||
|     /* background-color: yellow; */ | ||||
|     top: 7.5vh; | ||||
|     left: 6vh; | ||||
| } | ||||
|  | @ -1,421 +0,0 @@ | |||
| /* | ||||
|  * Name          : joy.js | ||||
|  * @author       : Roberto D'Amico (Bobboteck) | ||||
|  * Last modified : 30.06.2022 | ||||
|  * Revision      : 2.0.0 | ||||
|  * | ||||
|  * Modification History: | ||||
|  * Date         Version     Modified By     Description | ||||
|  * 2021-12-21   2.0.0       Roberto D'Amico New version of the project that integrates the callback functions, while  | ||||
|  *                                          maintaining compatibility with previous versions. Fixed Issue #27 too,  | ||||
|  *                                          thanks to @artisticfox8 for the suggestion. | ||||
|  * 2020-06-09   1.1.6       Roberto D'Amico Fixed Issue #10 and #11 | ||||
|  * 2020-04-20   1.1.5       Roberto D'Amico Correct: Two sticks in a row, thanks to @liamw9534 for the suggestion | ||||
|  * 2020-04-03               Roberto D'Amico Correct: InternalRadius when change the size of canvas, thanks to  | ||||
|  *                                          @vanslipon for the suggestion | ||||
|  * 2020-01-07   1.1.4       Roberto D'Amico Close #6 by implementing a new parameter to set the functionality of  | ||||
|  *                                          auto-return to 0 position | ||||
|  * 2019-11-18   1.1.3       Roberto D'Amico Close #5 correct indication of East direction | ||||
|  * 2019-11-12   1.1.2       Roberto D'Amico Removed Fix #4 incorrectly introduced and restored operation with touch  | ||||
|  *                                          devices | ||||
|  * 2019-11-12   1.1.1       Roberto D'Amico Fixed Issue #4 - Now JoyStick work in any position in the page, not only  | ||||
|  *                                          at 0,0 | ||||
|  *  | ||||
|  * The MIT License (MIT) | ||||
|  * | ||||
|  *  This file is part of the JoyStick Project (https://github.com/bobboteck/JoyStick).
 | ||||
|  *	Copyright (c) 2015 Roberto D'Amico (Bobboteck). | ||||
|  * | ||||
|  * Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
|  * of this software and associated documentation files (the "Software"), to deal | ||||
|  * in the Software without restriction, including without limitation the rights | ||||
|  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
|  * copies of the Software, and to permit persons to whom the Software is | ||||
|  * furnished to do so, subject to the following conditions: | ||||
|  *  | ||||
|  * The above copyright notice and this permission notice shall be included in all | ||||
|  * copies or substantial portions of the Software. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
|  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
|  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
|  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
|  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
|  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
|  * SOFTWARE. | ||||
|  */ | ||||
| 
 | ||||
| let StickStatus = | ||||
| { | ||||
|     xPosition: 0, | ||||
|     yPosition: 0, | ||||
|     x: 0, | ||||
|     y: 0, | ||||
|     cardinalDirection: "C" | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * @desc Principal object that draw a joystick, you only need to initialize the object and suggest the HTML container | ||||
|  * @costructor | ||||
|  * @param container {String} - HTML object that contains the Joystick | ||||
|  * @param parameters (optional) - object with following keys: | ||||
|  *  title {String} (optional) - The ID of canvas (Default value is 'joystick') | ||||
|  *  width {Int} (optional) - The width of canvas, if not specified is setted at width of container object (Default value is the width of container object) | ||||
|  *  height {Int} (optional) - The height of canvas, if not specified is setted at height of container object (Default value is the height of container object) | ||||
|  *  internalFillColor {String} (optional) - Internal color of Stick (Default value is '#00AA00') | ||||
|  *  internalLineWidth {Int} (optional) - Border width of Stick (Default value is 2) | ||||
|  *  internalStrokeColor {String}(optional) - Border color of Stick (Default value is '#003300') | ||||
|  *  externalLineWidth {Int} (optional) - External reference circonference width (Default value is 2) | ||||
|  *  externalStrokeColor {String} (optional) - External reference circonference color (Default value is '#008000') | ||||
|  *  autoReturnToCenter {Bool} (optional) - Sets the behavior of the stick, whether or not, it should return to zero position when released (Default value is True and return to zero) | ||||
|  * @param callback {StickStatus} -  | ||||
|  */ | ||||
| var JoyStick = (function(container, parameters, callback) | ||||
| { | ||||
|     parameters = parameters || {}; | ||||
|     var title = (typeof parameters.title === "undefined" ? "joystick" : parameters.title), | ||||
|         width = (typeof parameters.width === "undefined" ? 0 : parameters.width), | ||||
|         height = (typeof parameters.height === "undefined" ? 0 : parameters.height), | ||||
|         internalFillColor = (typeof parameters.internalFillColor === "undefined" ? "#00AA00" : parameters.internalFillColor), | ||||
|         internalLineWidth = (typeof parameters.internalLineWidth === "undefined" ? 2 : parameters.internalLineWidth), | ||||
|         internalStrokeColor = (typeof parameters.internalStrokeColor === "undefined" ? "#003300" : parameters.internalStrokeColor), | ||||
|         externalLineWidth = (typeof parameters.externalLineWidth === "undefined" ? 2 : parameters.externalLineWidth), | ||||
|         externalStrokeColor = (typeof parameters.externalStrokeColor ===  "undefined" ? "#008000" : parameters.externalStrokeColor), | ||||
|         autoReturnToCenter = (typeof parameters.autoReturnToCenter === "undefined" ? true : parameters.autoReturnToCenter); | ||||
| 
 | ||||
|     callback = callback || function(StickStatus) {}; | ||||
| 
 | ||||
|     // Create Canvas element and add it in the Container object
 | ||||
|     var objContainer = document.getElementById(container); | ||||
|      | ||||
|     // Fixing Unable to preventDefault inside passive event listener due to target being treated as passive in Chrome [Thanks to https://github.com/artisticfox8 for this suggestion]
 | ||||
|     objContainer.style.touchAction = "none"; | ||||
| 
 | ||||
|     var canvas = document.createElement("canvas"); | ||||
|     canvas.id = title; | ||||
|     if(width === 0) { width = objContainer.clientWidth; } | ||||
|     if(height === 0) { height = objContainer.clientHeight; } | ||||
|     canvas.width = width; | ||||
|     canvas.height = height; | ||||
|     objContainer.appendChild(canvas); | ||||
|     var context=canvas.getContext("2d"); | ||||
| 
 | ||||
|     var pressed = 0; // Bool - 1=Yes - 0=No
 | ||||
|     var circumference = 2 * Math.PI; | ||||
|     var internalRadius = (canvas.width-((canvas.width/2)+10))/2; | ||||
|     var maxMoveStick = internalRadius + 5; | ||||
|     var externalRadius = internalRadius + 30; | ||||
|     var centerX = canvas.width / 2; | ||||
|     var centerY = canvas.height / 2; | ||||
|     var directionHorizontalLimitPos = canvas.width / 10; | ||||
|     var directionHorizontalLimitNeg = directionHorizontalLimitPos * -1; | ||||
|     var directionVerticalLimitPos = canvas.height / 10; | ||||
|     var directionVerticalLimitNeg = directionVerticalLimitPos * -1; | ||||
|     // Used to save current position of stick
 | ||||
|     var movedX=centerX; | ||||
|     var movedY=centerY; | ||||
| 
 | ||||
|     // Check if the device support the touch or not
 | ||||
|     if("ontouchstart" in document.documentElement) | ||||
|     { | ||||
|         canvas.addEventListener("touchstart", onTouchStart, false); | ||||
|         document.addEventListener("touchmove", onTouchMove, false); | ||||
|         document.addEventListener("touchend", onTouchEnd, false); | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         canvas.addEventListener("mousedown", onMouseDown, false); | ||||
|         document.addEventListener("mousemove", onMouseMove, false); | ||||
|         document.addEventListener("mouseup", onMouseUp, false); | ||||
|     } | ||||
|     // Draw the object
 | ||||
|     drawExternal(); | ||||
|     drawInternal(); | ||||
| 
 | ||||
|     /****************************************************** | ||||
|      * Private methods | ||||
|      *****************************************************/ | ||||
| 
 | ||||
|     /** | ||||
|      * @desc Draw the external circle used as reference position | ||||
|      */ | ||||
|     function drawExternal() | ||||
|     { | ||||
|         context.beginPath(); | ||||
|         context.arc(centerX, centerY, externalRadius, 0, circumference, false); | ||||
|         context.lineWidth = externalLineWidth; | ||||
|         context.strokeStyle = externalStrokeColor; | ||||
|         context.stroke(); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @desc Draw the internal stick in the current position the user have moved it | ||||
|      */ | ||||
|     function drawInternal() | ||||
|     { | ||||
|         context.beginPath(); | ||||
|         if(movedX<internalRadius) { movedX=maxMoveStick; } | ||||
|         if((movedX+internalRadius) > canvas.width) { movedX = canvas.width-(maxMoveStick); } | ||||
|         if(movedY<internalRadius) { movedY=maxMoveStick; } | ||||
|         if((movedY+internalRadius) > canvas.height) { movedY = canvas.height-(maxMoveStick); } | ||||
|         context.arc(movedX, movedY, internalRadius, 0, circumference, false); | ||||
|         // create radial gradient
 | ||||
|         var grd = context.createRadialGradient(centerX, centerY, 5, centerX, centerY, 200); | ||||
|         // Light color
 | ||||
|         grd.addColorStop(0, internalFillColor); | ||||
|         // Dark color
 | ||||
|         grd.addColorStop(1, internalStrokeColor); | ||||
|         context.fillStyle = grd; | ||||
|         context.fill(); | ||||
|         context.lineWidth = internalLineWidth; | ||||
|         context.strokeStyle = internalStrokeColor; | ||||
|         context.stroke(); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @desc Events for manage touch | ||||
|      */ | ||||
|     let touchId = null; | ||||
|     function onTouchStart(event) | ||||
|     { | ||||
|         pressed = 1; | ||||
|         touchId = event.targetTouches[0].identifier; | ||||
|     } | ||||
| 
 | ||||
|     function onTouchMove(event) | ||||
|     { | ||||
|         if(pressed === 1 && event.targetTouches[0].target === canvas) | ||||
|         { | ||||
|             movedX = event.targetTouches[0].pageX; | ||||
|             movedY = event.targetTouches[0].pageY; | ||||
|             // Manage offset
 | ||||
|             if(canvas.offsetParent.tagName.toUpperCase() === "BODY") | ||||
|             { | ||||
|                 movedX -= canvas.offsetLeft; | ||||
|                 movedY -= canvas.offsetTop; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 movedX -= canvas.offsetParent.offsetLeft; | ||||
|                 movedY -= canvas.offsetParent.offsetTop; | ||||
|             } | ||||
|             // Delete canvas
 | ||||
|             context.clearRect(0, 0, canvas.width, canvas.height); | ||||
|             // Redraw object
 | ||||
|             drawExternal(); | ||||
|             drawInternal(); | ||||
| 
 | ||||
|             // Set attribute of callback
 | ||||
|             StickStatus.xPosition = movedX; | ||||
|             StickStatus.yPosition = movedY; | ||||
|             StickStatus.x = (100*((movedX - centerX)/maxMoveStick)).toFixed(); | ||||
|             StickStatus.y = ((100*((movedY - centerY)/maxMoveStick))*-1).toFixed(); | ||||
|             StickStatus.cardinalDirection = getCardinalDirection(); | ||||
|             callback(StickStatus); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     function onTouchEnd(event) | ||||
|     { | ||||
|         if (event.changedTouches[0].identifier !== touchId) return; | ||||
| 
 | ||||
|         pressed = 0; | ||||
|         // If required reset position store variable
 | ||||
|         if(autoReturnToCenter) | ||||
|         { | ||||
|             movedX = centerX; | ||||
|             movedY = centerY; | ||||
|         } | ||||
|         // Delete canvas
 | ||||
|         context.clearRect(0, 0, canvas.width, canvas.height); | ||||
|         // Redraw object
 | ||||
|         drawExternal(); | ||||
|         drawInternal(); | ||||
| 
 | ||||
|         // Set attribute of callback
 | ||||
|         StickStatus.xPosition = movedX; | ||||
|         StickStatus.yPosition = movedY; | ||||
|         StickStatus.x = (100*((movedX - centerX)/maxMoveStick)).toFixed(); | ||||
|         StickStatus.y = ((100*((movedY - centerY)/maxMoveStick))*-1).toFixed(); | ||||
|         StickStatus.cardinalDirection = getCardinalDirection(); | ||||
|         callback(StickStatus); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @desc Events for manage mouse | ||||
|      */ | ||||
|     function onMouseDown(event)  | ||||
|     { | ||||
|         pressed = 1; | ||||
|     } | ||||
| 
 | ||||
|     /* To simplify this code there was a new experimental feature here: https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/offsetX , but it present only in Mouse case not metod presents in Touch case :-( */ | ||||
|     function onMouseMove(event)  | ||||
|     { | ||||
|         if(pressed === 1) | ||||
|         { | ||||
|             movedX = event.pageX; | ||||
|             movedY = event.pageY; | ||||
|             // Manage offset
 | ||||
|             if(canvas.offsetParent.tagName.toUpperCase() === "BODY") | ||||
|             { | ||||
|                 movedX -= canvas.offsetLeft; | ||||
|                 movedY -= canvas.offsetTop; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 movedX -= canvas.offsetParent.offsetLeft; | ||||
|                 movedY -= canvas.offsetParent.offsetTop; | ||||
|             } | ||||
|             // Delete canvas
 | ||||
|             context.clearRect(0, 0, canvas.width, canvas.height); | ||||
|             // Redraw object
 | ||||
|             drawExternal(); | ||||
|             drawInternal(); | ||||
| 
 | ||||
|             // Set attribute of callback
 | ||||
|             StickStatus.xPosition = movedX; | ||||
|             StickStatus.yPosition = movedY; | ||||
|             StickStatus.x = (100*((movedX - centerX)/maxMoveStick)).toFixed(); | ||||
|             StickStatus.y = ((100*((movedY - centerY)/maxMoveStick))*-1).toFixed(); | ||||
|             StickStatus.cardinalDirection = getCardinalDirection(); | ||||
|             callback(StickStatus); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     function onMouseUp(event)  | ||||
|     { | ||||
|         pressed = 0; | ||||
|         // If required reset position store variable
 | ||||
|         if(autoReturnToCenter) | ||||
|         { | ||||
|             movedX = centerX; | ||||
|             movedY = centerY; | ||||
|         } | ||||
|         // Delete canvas
 | ||||
|         context.clearRect(0, 0, canvas.width, canvas.height); | ||||
|         // Redraw object
 | ||||
|         drawExternal(); | ||||
|         drawInternal(); | ||||
| 
 | ||||
|         // Set attribute of callback
 | ||||
|         StickStatus.xPosition = movedX; | ||||
|         StickStatus.yPosition = movedY; | ||||
|         StickStatus.x = (100*((movedX - centerX)/maxMoveStick)).toFixed(); | ||||
|         StickStatus.y = ((100*((movedY - centerY)/maxMoveStick))*-1).toFixed(); | ||||
|         StickStatus.cardinalDirection = getCardinalDirection(); | ||||
|         callback(StickStatus); | ||||
|     } | ||||
| 
 | ||||
|     function getCardinalDirection() | ||||
|     { | ||||
|         let result = ""; | ||||
|         let orizontal = movedX - centerX; | ||||
|         let vertical = movedY - centerY; | ||||
|          | ||||
|         if(vertical >= directionVerticalLimitNeg && vertical <= directionVerticalLimitPos) | ||||
|         { | ||||
|             result = "C"; | ||||
|         } | ||||
|         if(vertical < directionVerticalLimitNeg) | ||||
|         { | ||||
|             result = "N"; | ||||
|         } | ||||
|         if(vertical > directionVerticalLimitPos) | ||||
|         { | ||||
|             result = "S"; | ||||
|         } | ||||
|          | ||||
|         if(orizontal < directionHorizontalLimitNeg) | ||||
|         { | ||||
|             if(result === "C") | ||||
|             {  | ||||
|                 result = "W"; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 result += "W"; | ||||
|             } | ||||
|         } | ||||
|         if(orizontal > directionHorizontalLimitPos) | ||||
|         { | ||||
|             if(result === "C") | ||||
|             {  | ||||
|                 result = "E"; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 result += "E"; | ||||
|             } | ||||
|         } | ||||
|          | ||||
|         return result; | ||||
|     } | ||||
| 
 | ||||
|     /****************************************************** | ||||
|      * Public methods | ||||
|      *****************************************************/ | ||||
| 
 | ||||
|     /** | ||||
|      * @desc The width of canvas | ||||
|      * @return Number of pixel width  | ||||
|      */ | ||||
|     this.GetWidth = function ()  | ||||
|     { | ||||
|         return canvas.width; | ||||
|     }; | ||||
| 
 | ||||
|     /** | ||||
|      * @desc The height of canvas | ||||
|      * @return Number of pixel height | ||||
|      */ | ||||
|     this.GetHeight = function ()  | ||||
|     { | ||||
|         return canvas.height; | ||||
|     }; | ||||
| 
 | ||||
|     /** | ||||
|      * @desc The X position of the cursor relative to the canvas that contains it and to its dimensions | ||||
|      * @return Number that indicate relative position | ||||
|      */ | ||||
|     this.GetPosX = function () | ||||
|     { | ||||
|         return movedX; | ||||
|     }; | ||||
| 
 | ||||
|     /** | ||||
|      * @desc The Y position of the cursor relative to the canvas that contains it and to its dimensions | ||||
|      * @return Number that indicate relative position | ||||
|      */ | ||||
|     this.GetPosY = function () | ||||
|     { | ||||
|         return movedY; | ||||
|     }; | ||||
| 
 | ||||
|     /** | ||||
|      * @desc Normalizzed value of X move of stick | ||||
|      * @return Integer from -100 to +100 | ||||
|      */ | ||||
|     this.GetX = function () | ||||
|     { | ||||
|         return (100*((movedX - centerX)/maxMoveStick)).toFixed(); | ||||
|     }; | ||||
| 
 | ||||
|     /** | ||||
|      * @desc Normalizzed value of Y move of stick | ||||
|      * @return Integer from -100 to +100 | ||||
|      */ | ||||
|     this.GetY = function () | ||||
|     { | ||||
|         return ((100*((movedY - centerY)/maxMoveStick))*-1).toFixed(); | ||||
|     }; | ||||
| 
 | ||||
|     /** | ||||
|      * @desc Get the direction of the cursor as a string that indicates the cardinal points where this is oriented | ||||
|      * @return String of cardinal point N, NE, E, SE, S, SW, W, NW and C when it is placed in the center | ||||
|      */ | ||||
|     this.GetDir = function() | ||||
|     { | ||||
|         return getCardinalDirection(); | ||||
|     }; | ||||
| }); | ||||
|  | @ -1,55 +1,5 @@ | |||
| // by VienDesu! Poring Team 2023
 | ||||
| 
 | ||||
| function create_control_buttons() { | ||||
| 
 | ||||
|     // A-Y Buttons
 | ||||
|     const DivBMain = document.createElement("div"); | ||||
|     DivBMain.className = "gamepad-buttons"; | ||||
|     DivBMain.id = "gamepad-div"; | ||||
|     const DivBRow1 = document.createElement("div"); | ||||
|     DivBRow1.className = "gamepad-buttons-row"; | ||||
|     const DivBRow2 = document.createElement("div"); | ||||
|     DivBRow2.className = "gamepad-buttons-row"; | ||||
|     const DivBRow3 = document.createElement("div"); | ||||
|     DivBRow3.className = "gamepad-buttons-row"; | ||||
| 
 | ||||
|     const DivB_Y = document.createElement("div"); | ||||
|     DivB_Y.className = "gamepad-button Y"; | ||||
|     DivB_Y.id = "buttonA"; | ||||
|     const DivB_X = document.createElement("div"); | ||||
|     DivB_X.className = "gamepad-button X"; | ||||
|     DivB_X.id = "buttonShift"; | ||||
|     const DivB_B = document.createElement("div"); | ||||
|     DivB_B.className = "gamepad-button B"; | ||||
|     DivB_B.id = "buttonX"; | ||||
|     const DivB_A = document.createElement("div"); | ||||
|     DivB_A.className = "gamepad-button A"; | ||||
|     DivB_A.id = "buttonZ"; | ||||
| 
 | ||||
|     // LB-RB Buttons
 | ||||
|     const DivB_LB = document.createElement("div"); | ||||
|     DivB_LB.className = "gamepad-bumper LB"; | ||||
|     DivB_LB.id = "buttonQ"; | ||||
|     const DivB_RB = document.createElement("div"); | ||||
|     DivB_RB.className = "gamepad-bumper RB"; | ||||
|     DivB_RB.id = "buttonW"; | ||||
| 
 | ||||
|     // Adding
 | ||||
|     document.body.appendChild(DivB_LB); | ||||
|     document.body.appendChild(DivB_RB); | ||||
| 
 | ||||
|     DivBMain.appendChild(DivBRow1); | ||||
|     DivBMain.appendChild(DivBRow2); | ||||
|     DivBMain.appendChild(DivBRow3); | ||||
| 
 | ||||
|     DivBRow1.appendChild(DivB_Y); | ||||
|     DivBRow2.appendChild(DivB_X); | ||||
|     DivBRow2.appendChild(DivB_B); | ||||
|     DivBRow3.appendChild(DivB_A); | ||||
| 
 | ||||
|     document.body.appendChild(DivBMain); | ||||
| } | ||||
| 
 | ||||
| function create_fps_button() { | ||||
|     // Remove in release 
 | ||||
|     const keys = [{ key: 'F2', keyCode: 113 }]; | ||||
|  | @ -66,225 +16,11 @@ function create_fps_button() { | |||
|     } | ||||
| } | ||||
| 
 | ||||
| function create_new_controls() { | ||||
|     // Remove in release 
 | ||||
|     const NewBtn = document.createElement("div"); | ||||
|     NewBtn.className = "new-button"; | ||||
|     document.body.appendChild(NewBtn);  | ||||
| 
 | ||||
|     NewBtn.addEventListener("pointerdown", () => { | ||||
|         var controls_canvas = document.getElementById("ControlsCanvas"); | ||||
|         if (controls_canvas === null) { | ||||
|             document.getElementById("show-gamepad").remove(); | ||||
|             ONSControls.initialize(); | ||||
|         } else { | ||||
|             controls_canvas.remove(); | ||||
|             create_show_button(); | ||||
|         } | ||||
|     }); | ||||
| } | ||||
| 
 | ||||
| function create_dpad_buttons() { | ||||
|     // Скуфting elements
 | ||||
|     const DivDMain = document.createElement("div"); | ||||
|     DivDMain.className = "dpad-buttons"; | ||||
|     DivDMain.id = "dpad-div"; | ||||
|     const DivDRow1 = document.createElement("div"); | ||||
|     DivDRow1.className = "dpad-buttons-row"; | ||||
|     const DivDRow2 = document.createElement("div"); | ||||
|     DivDRow2.className = "dpad-buttons-row"; | ||||
| 
 | ||||
|     const DivD_L = document.createElement("div"); | ||||
|     DivD_L.className = "dpad-button left"; | ||||
|     DivD_L.id = "buttonLeft"; | ||||
|     const DivD_U = document.createElement("div"); | ||||
|     DivD_U.className = "dpad-button up"; | ||||
|     DivD_U.id = "buttonUp"; | ||||
|     const DivD_D = document.createElement("div"); | ||||
|     DivD_D.className = "dpad-button down"; | ||||
|     DivD_D.id = "buttonDown"; | ||||
|     const DivD_R = document.createElement("div"); | ||||
|     DivD_R.className = "dpad-button right"; | ||||
|     DivD_R.id = "buttonRight"; | ||||
| 
 | ||||
|     // Adding
 | ||||
|     DivDMain.appendChild(DivDRow1); | ||||
|     DivDMain.appendChild(DivDRow2); | ||||
| 
 | ||||
|     DivDRow1.appendChild(DivD_L); | ||||
|     DivDRow1.appendChild(DivD_U); | ||||
|     DivDRow2.appendChild(DivD_D); | ||||
|     DivDRow2.appendChild(DivD_R); | ||||
| 
 | ||||
|     document.body.appendChild(DivDMain); | ||||
| 
 | ||||
|     currentControlElement = "dpad"; | ||||
| } | ||||
| 
 | ||||
| function create_joystick() { | ||||
|     const JoyDiv = document.createElement("div"); | ||||
|     JoyDiv.id = "joyDiv"; | ||||
|     document.body.appendChild(JoyDiv); | ||||
|     const kbd = joyStates; | ||||
|     const joy = new JoyStick('joyDiv', {internalFillColor: "#373737", internalStrokeColor: "#FFFFFF", externalStrokeColor: "#FFFFFF"}, (stickData) => { | ||||
|         disableActive(); | ||||
|         switch (stickData.cardinalDirection) { | ||||
|             case 'NE': | ||||
|             case 'NW': | ||||
|             case 'N': | ||||
|                 kbd.up.status = true; | ||||
|                 sendEvent(false, kbd.up.code); | ||||
|                 break; | ||||
|             case 'E': | ||||
|                 kbd.right.status = true; | ||||
|                 sendEvent(false, kbd.right.code); | ||||
|                 break; | ||||
|             case 'W': | ||||
|                 kbd.left.status = true; | ||||
|                 sendEvent(false, kbd.left.code); | ||||
|                 break; | ||||
|             case 'SE': | ||||
|             case 'SW': | ||||
|             case 'S': | ||||
|                 kbd.down.status = true; | ||||
|                 sendEvent(false, kbd.down.code); | ||||
|                 break; | ||||
|             case 'C': | ||||
|                 disableActive(); | ||||
|                 break; | ||||
|         } | ||||
|     }); | ||||
|     currentControlElement = "joystick"; | ||||
| } | ||||
| 
 | ||||
| function create_switch_button() { | ||||
|     const newDiv = document.createElement("div"); | ||||
|     newDiv.className = "switch-button"; | ||||
|     newDiv.id = "switch"; | ||||
| 
 | ||||
|     document.body.appendChild(newDiv); | ||||
| 
 | ||||
|     newDiv.addEventListener("pointerdown", (event) => { | ||||
|         if (document.getElementById("joyDiv") === null) { | ||||
|             document.getElementById("dpad-div").remove(); | ||||
|             create_joystick(); | ||||
|         } else { | ||||
|             document.getElementById("joyDiv").remove(); | ||||
|             create_dpad_buttons(); | ||||
|             setupDpad(); | ||||
|         } | ||||
|     }); | ||||
| } | ||||
| 
 | ||||
| function create_show_button() { | ||||
|     const newDiv = document.createElement("div"); | ||||
|     newDiv.className = "show-gamepad-button"; | ||||
|     newDiv.id = "show-gamepad"; | ||||
| 
 | ||||
|     document.body.appendChild(newDiv); | ||||
| 
 | ||||
|     newDiv.addEventListener("pointerdown", (event) => { | ||||
|         event.stopImmediatePropagation(); | ||||
|         event.preventDefault(); | ||||
|         var DivBMain = document.getElementById("gamepad-div"); | ||||
|         var DivB_LB = document.getElementById("buttonW"); | ||||
|         var DivB_RB = document.getElementById("buttonQ"); | ||||
|         var DivDMain = document.getElementById("dpad-div"); | ||||
|         var DivJoy = document.getElementById("joyDiv"); | ||||
|         var ShowB = document.getElementById("switch"); | ||||
| 
 | ||||
|         if (DivBMain !== null) { | ||||
|             DivBMain.remove(); | ||||
|             DivB_LB.remove(); | ||||
|             DivB_RB.remove(); | ||||
|             ShowB.remove(); | ||||
|             switch (currentControlElement) { | ||||
|                 case "dpad": | ||||
|                     DivDMain.remove(); | ||||
|                     break; | ||||
|                 case "joystick": | ||||
|                     DivJoy.remove(); | ||||
|                     break; | ||||
|             } | ||||
|         } else { | ||||
|             create_control_buttons(); | ||||
|             switch (currentControlElement) { | ||||
|                 case "dpad": | ||||
|                     create_dpad_buttons(); | ||||
|                     setupDpad(); | ||||
|                     break; | ||||
|                 case "joystick": | ||||
|                     create_joystick(); | ||||
|                     break; | ||||
|             } | ||||
|             setupButtons(); | ||||
|             create_switch_button(); | ||||
|         } | ||||
|     }); | ||||
| } | ||||
| 
 | ||||
| var currentControlElement = null; | ||||
| 
 | ||||
| const keys = [ | ||||
|     { key: 'Z', keyCode: 90 }, | ||||
|     { key: 'X', keyCode: 88 }, | ||||
|     { key: 'Shift', keyCode: 16 }, | ||||
|     { key: 'A', keyCode: 65 }, | ||||
| 
 | ||||
|     { key: 'Q', keyCode: 81 }, | ||||
|     { key: 'W', keyCode: 87 } | ||||
| ]; | ||||
| 
 | ||||
| const dpadkeys = [ | ||||
|     { key: "Left", keyCode: 37 }, | ||||
|     { key: "Up", keyCode: 38 }, | ||||
|     { key: "Right", keyCode: 39 }, | ||||
|     { key: "Down", keyCode: 40 } | ||||
| ]; | ||||
| 
 | ||||
| const joyStates = { | ||||
|     left: { status: false, code: 37 }, | ||||
|     right: { status: false, code: 39 }, | ||||
| 
 | ||||
|     up: { status: false, code: 38 }, | ||||
|     down: { status: false, code: 40 } | ||||
| }; | ||||
| 
 | ||||
| function createButton(key, keyCode) { | ||||
|     return { key: key, keyCode: keyCode }; | ||||
| } | ||||
| 
 | ||||
| function sendEvent(isUp, keycode) { | ||||
|     document.getElementById("GameCanvas").focus(); | ||||
|     document.dispatchEvent(new KeyboardEvent(isUp ? 'keyup' : 'keydown', { 'key': '', keyCode: keycode })) | ||||
| } | ||||
| 
 | ||||
| function disableActive() { | ||||
|     for (const kbdKey in joyStates) { | ||||
|         const kbd = joyStates[kbdKey]; | ||||
|         if (kbd.status) { | ||||
|             sendEvent(true, kbd.code); | ||||
|             kbd.status = false; | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| function setupButtons() { | ||||
|     for (const key of keys) { | ||||
|         const elementId = key.id === undefined ? `button${key.key}` : key.id; | ||||
|         console.log(`Setting up the ${elementId} key...`); //Remove in release
 | ||||
|         setupKey(elementId, key.key, key.keyCode); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| function setupDpad() { | ||||
|     for (const key of dpadkeys) { | ||||
|         const elementId = key.id === undefined ? `button${key.key}` : key.id; | ||||
|         console.log(`Setting up the ${elementId} key...`); //Remove in release
 | ||||
|         setupKey(elementId, key.key, key.keyCode); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| function setupKey(id, key, keyCode) { | ||||
|     const element = document.getElementById(id); | ||||
|     element.addEventListener("pointerdown", (event) => { | ||||
|  | @ -301,37 +37,4 @@ function setupKey(id, key, keyCode) { | |||
| 
 | ||||
| window.addEventListener('load', () => { | ||||
|     create_fps_button(); // Remove in release 
 | ||||
|     // create_new_controls(); // Remove in release
 | ||||
|     // if (navigator.getGamepads().length == 0) {
 | ||||
|     //     create_control_buttons();
 | ||||
|     //     create_dpad_buttons();
 | ||||
|     //     create_show_button();
 | ||||
|     //     create_switch_button();
 | ||||
|     //     setupButtons();
 | ||||
|     //     setupDpad();
 | ||||
|     // }
 | ||||
| }); | ||||
| 
 | ||||
| // window.addEventListener('gamepadconnected', () => {
 | ||||
| //     var DivBMain = document.getElementById("gamepad-div");
 | ||||
| //     var DivB_LB = document.getElementById("buttonW");
 | ||||
| //     var DivB_RB = document.getElementById("buttonQ");
 | ||||
| //     var DivDMain = document.getElementById("dpad-div");
 | ||||
| //     var DivJoy = document.getElementById("joyDiv");
 | ||||
| //     var ShowB = document.getElementById("switch");
 | ||||
| 
 | ||||
| //     if (DivBMain !== null) {
 | ||||
| //         DivBMain.remove();
 | ||||
| //         DivB_LB.remove();
 | ||||
| //         DivB_RB.remove();
 | ||||
| //         ShowB.remove();
 | ||||
| //         switch (currentControlElement) {
 | ||||
| //             case "dpad":
 | ||||
| //                 DivDMain.remove();
 | ||||
| //                 break;
 | ||||
| //             case "joystick":
 | ||||
| //                 DivJoy.remove();
 | ||||
| //                 break;
 | ||||
| //         }
 | ||||
| //     }
 | ||||
| // });
 | ||||
| }); | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue