Skip to content

Commit

Permalink
gamepad config
Browse files Browse the repository at this point in the history
  • Loading branch information
Turupawn committed May 9, 2020
1 parent e4756bf commit 133b722
Show file tree
Hide file tree
Showing 2 changed files with 83 additions and 119 deletions.
200 changes: 82 additions & 118 deletions configureGamepad.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,98 +2,72 @@
<html>
<head>
<title>Shoot Em Up Launcher</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<link rel='stylesheet' href='https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css' integrity='sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh' crossorigin='anonymous'>
</head>
<body>
<div class='container'>
<div class="row">
<div class="col-sm-12">
<div class="card">
<div class="card-header">
<div class='row'>
<div class='col-sm-12'>
<div class='card'>
<div class='card-header'>
Configure Gamepad
</div>
<div class="card-body">
<div class='card-body'>
<div class='form-group'>
<button id='default_btn' onclick='resetDefaults()' class='btn btn-secondary mb-2'>Default</button>
<p id='info'>Press any key</p>
<button id='default_btn' onclick='resetDefaults()' class='btn btn-secondary mb-2' style='display:none'>Default</button>
</div>
<table class="table">
<table id='buttons_table' class='table' style='display:none'>
<tbody>
<tr>
<th scope="row">
Up
</th>
<td>
<input type="text" class="form-control" id="up_input">
</td>
</tr>
<tr>
<th scope="row">
Down
</th>
<td>
<input type="text" class="form-control" id="down_input">
</td>
</tr>
<tr>
<th scope="row">
Left
</th>
<td>
<input type="text" class="form-control" id="left_input">
</td>
</tr>
<tr>
<th scope="row">
Right
</th>
<td>
<input type="text" class="form-control" id="right_input">
</td>
</tr>
<tr>
<th scope="row">
<th scope='row'>
Shoot
</th>
<td>
<input type="text" class="form-control" id="shoot_input">
<input type='text' class='form-control' id='shoot_input'>
<button id='shoot_btn' onclick='gamepadUpdateHandler("a", "#shoot_input")' class='btn btn-secondary mb-2'>Change</button>
</td>
</tr>
<tr>
<th scope="row">
<th scope='row'>
Slow
</th>
<td>
<input type="text" class="form-control" id="slow_input">
<input type='text' class='form-control' id='slow_input'>
<button id='shoot_btn' onclick='gamepadUpdateHandler("b", "#slow_input")' class='btn btn-secondary mb-2'>Change</button>
</td>
</tr>
<tr>
<th scope="row">
<th scope='row'>
Jump
</th>
<td>
<input type="text" class="form-control" id="jump_input">
<input type='text' class='form-control' id='jump_input'>
<button id='shoot_btn' onclick='gamepadUpdateHandler("c", "#jump_input")' class='btn btn-secondary mb-2'>Change</button>
</td>
</tr>
<tr>
<th scope="row">
<th scope='row'>
Bomb
</th>
<td>
<input type="text" class="form-control" id="bomb_input">
<input type='text' class='form-control' id='bomb_input'>
<button id='shoot_btn' onclick='gamepadUpdateHandler("d", "#bomb_input")' class='btn btn-secondary mb-2'>Change</button>
</td>
</tr>
<tr>
<th scope="row">
<th scope='row'>
Back
</th>
<td>
<input type="text" class="form-control" id="back_input">
<input type='text' class='form-control' id='back_input'>
<button id='shoot_btn' onclick='gamepadUpdateHandler("back", "#back_input")' class='btn btn-secondary mb-2'>Change</button>
</td>
</tr>
</tbody>
</table>
<div class='form-group'>
<button algin="right" id='back_btn' onclick='closeWindow()' class='btn btn-primary mb-2 float-right btn-lg'>Back</button>
<button algin='right' id='back_btn' onclick='closeWindow()' class='btn btn-primary mb-2 float-right btn-lg'>Back</button>
</div>
</div>
</div>
Expand All @@ -105,6 +79,53 @@
const {ipcRenderer} = electron
const app = require('electron').remote.app
var path = require('path')
var gamepad = null

window.addEventListener('gamepadconnected', function(e) {
info = 'Gamepad connected at index ' + e.gamepad.index + ': ' +
e.gamepad.id + '. ' + e.gamepad.buttons.length + ' buttons, ' + e.gamepad.axes.length + ' axes.'
gamepad = e.gamepad
console.log(info)
document.getElementById('info').innerText = info
document.getElementById('buttons_table').style.display = 'block'
document.getElementById('default_btn').style.display = 'block'
});

window.addEventListener('gamepaddisconnected', function(e) {
info = 'Gamepad disconnected'
console.log('Gamepad disconnected')
document.getElementById('info').innerText = info
});

function buttonPressed(b) {
if (typeof(b) == 'object') {
return b.pressed;
}
return b == 1.0;
}

function gamepadUpdateHandler(button_name, element_id) {
document.querySelector(element_id).value = '[Press a button]'

var buttonWaitInterval = setInterval(function(){
var gamepads = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads : []);
if (!gamepads) {
return;
}

var gp = gamepads[0]

for(i=0; i<20; i++)
{
if (buttonPressed(gp.buttons[i])) {
document.querySelector(element_id).value = ''+i
setButtonJsonElement(button_name, ''+i)
clearInterval(buttonWaitInterval)
return
}
}
},15)
}

const config_file_path = path.normalize(__dirname + '/../../../game/assets/config.json')

Expand Down Expand Up @@ -157,41 +178,25 @@
for (var i=0; i<input_type_gamepad.button.length; i++)
{
switch(input_type_gamepad.button[i].name) {
case '8':
input_type_gamepad.button[i].key = 'up'
document.querySelector('#up_input').value = 'up'
break;
case '2':
input_type_gamepad.button[i].key = 'down'
document.querySelector('#down_input').value = 'down'
break;
case '4':
input_type_gamepad.button[i].key = 'left'
document.querySelector('#left_input').value = 'left'
break;
case '6':
input_type_gamepad.button[i].key = 'right'
document.querySelector('#right_input').value = 'right'
break;
case 'a':
input_type_gamepad.button[i].key = '1'
document.querySelector('#shoot_input').value = '1'
input_type_gamepad.button[i].key = '0'
document.querySelector('#shoot_input').value = '0'
break;
case 'b':
input_type_gamepad.button[i].key = '2'
document.querySelector('#slow_input').value = '2'
input_type_gamepad.button[i].key = '1'
document.querySelector('#slow_input').value = '1'
break;
case 'c':
input_type_gamepad.button[i].key = '3'
document.querySelector('#jump_input').value = '3'
input_type_gamepad.button[i].key = '2'
document.querySelector('#jump_input').value = '2'
break;
case 'd':
input_type_gamepad.button[i].key = '4'
document.querySelector('#bomb_input').value = '4'
input_type_gamepad.button[i].key = '3'
document.querySelector('#bomb_input').value = '3'
break;
case 'back':
input_type_gamepad.button[i].key = '5'
document.querySelector('#back_input').value = '5'
input_type_gamepad.button[i].key = '4'
document.querySelector('#back_input').value = '4'
break;
default:
}
Expand All @@ -206,53 +211,12 @@
const fs = require('fs')
const config_json = require(config_file_path)

document.getElementById('up_input').value = getButtonJsonElement(config_json, '8').key
document.getElementById('down_input').value = getButtonJsonElement(config_json, '2').key
document.getElementById('left_input').value = getButtonJsonElement(config_json, '4').key
document.getElementById('right_input').value = getButtonJsonElement(config_json, '6').key
document.getElementById('shoot_input').value = getButtonJsonElement(config_json, 'a').key
document.getElementById('slow_input').value = getButtonJsonElement(config_json, 'b').key
document.getElementById('jump_input').value = getButtonJsonElement(config_json, 'c').key
document.getElementById('bomb_input').value = getButtonJsonElement(config_json, 'd').key
document.getElementById('back_input').value = getButtonJsonElement(config_json, 'back').key
})

document.querySelector('#up_input').addEventListener('input', function(e){
const key = document.querySelector('#up_input').value
setButtonJsonElement('8', key)
})
document.querySelector('#down_input').addEventListener('input', function(e){
const key = document.querySelector('#down_input').value
setButtonJsonElement('2', key)
})
document.querySelector('#left_input').addEventListener('input', function(e){
const key = document.querySelector('#left_input').value
setButtonJsonElement('4', key)
})
document.querySelector('#right_input').addEventListener('input', function(e){
const key = document.querySelector('#right_input').value
setButtonJsonElement('6', key)
})
document.querySelector('#shoot_input').addEventListener('input', function(e){
const key = document.querySelector('#shoot_input').value
setButtonJsonElement('a', key)
})
document.querySelector('#slow_input').addEventListener('input', function(e){
const key = document.querySelector('#slow_input').value
setButtonJsonElement('b', key)
})
document.querySelector('#jump_input').addEventListener('input', function(e){
const key = document.querySelector('#jump_input').value
setButtonJsonElement('c', key)
})
document.querySelector('#bomb_input').addEventListener('input', function(e){
const key = document.querySelector('#bomb_input').value
setButtonJsonElement('d', key)
})
document.querySelector('#back_input').addEventListener('input', function(e){
const key = document.querySelector('#back_input').value
setButtonJsonElement('back', key)
})
</script>
</body>
</html>
2 changes: 1 addition & 1 deletion main.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ const path = require('path')

const {app, BrowserWindow, Menu, ipcMain} = electron

//process.env.NODE_ENV = 'production'
process.env.NODE_ENV = 'production'

let mainWindow

Expand Down

0 comments on commit 133b722

Please sign in to comment.