Created
April 20, 2017 14:14
-
-
Save juliozuppa/1e00bd15acd232616d5973b2685e635d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Padrão Singleton (pode ser uma declaração literal) | |
// ou com construtor: | |
function Singleton() { | |
if (typeof Singleton.instance === "object") { | |
return Singleton.instance; | |
} | |
this.value = "Teste"; | |
Singleton.instance = this; | |
} | |
var foo = new Singleton(); | |
var bar = new Singleton(); | |
var baz = Singleton.instance; | |
console.log(foo == bar); | |
console.log(bar === baz); | |
// com instance privado: | |
function Singleton(){ | |
this.value = "TreinaWeb"; | |
var instance = this; | |
Singleton = function(){ | |
return instance; | |
} | |
} | |
var foo = new Singleton(); | |
var bar = new Singleton(); | |
var baz = Singleton.instance; | |
console.log(foo == bar); | |
console.log(bar === baz); | |
var gamepads = new Array(4); | |
(function () { | |
var knownGamepads = new Array(4); | |
setInterval(function () { | |
for(var index in gamepads) { | |
var gamepad = gamepads[index], | |
knownGamepad = knownGamepads[index]; | |
if(gamepad !== undefined && knownGamepad === undefined) { | |
knownGamepads[index] = gamepad; | |
var newGamepadEvent = document.createEvent('Event'); | |
newGamepadEvent.initEvent('gamepadConnected', true, true); | |
newGamepadEvent.gamepad = gamepad; | |
window.dispatchEvent(newGamepadEvent); | |
} | |
if(gamepad === undefined && knownGamepad !== undefined) { | |
knownGamepads[index] = undefined; | |
var removeGamepadEvent = document.createEvent('Event'); | |
removeGamepadEvent.initEvent('gamepadDisconnected', true, true); | |
removeGamepadEvent.gamepad = knownGamepad; | |
window.dispatchEvent(removeGamepadEvent); | |
} | |
} | |
}, 600); | |
})(); | |
var playerManagement = { | |
players: [], | |
addPlayer: function (gamepad) { | |
var index = this.players.length; | |
for(var i in this.players) { | |
if(this.players[i] === undefined) { | |
index = parseInt(i); | |
break; | |
} | |
} | |
this.players[index] = { | |
name: 'Player' + (index + 1), | |
gamepad: gamepad | |
}; | |
alert(this.players[index].name + ' entrou no jogo.'); | |
}, | |
removePlayer: function (gamepad) { | |
var index = this.getPlayerIndex(gamepad); | |
alert(this.players[index].name + " saiu do jogo."); | |
this.players[i] = undefined; | |
}, | |
getPlayerIndex: function (gamepad) { | |
for(var index in this.players) { | |
var player = this.players[index]; | |
if(player !== undefined){ | |
if(gamepad === player.gamepad){ | |
return index; | |
} | |
} | |
} | |
}, | |
init: function () { | |
var that = this; | |
var onGamepadConnected = function (event) { | |
that.addPlayer(event.gamepad); | |
}; | |
var onGamepadDisconnected = function (event) { | |
that.removePlayer(event.gamepad); | |
}; | |
window.addEventListener('gamepadConnected', onGamepadConnected); | |
window.addEventListener('gamepadDisconnected', onGamepadDisconnected); | |
} | |
}; | |
playerManagement.init(); | |
// no console do navegador, inserir, por exemplo: | |
// gamepads[0] = {name:"gamepad1"}; | |
// gamepads[1] = {name:"gamepad2"}; | |
// gamepads[2] = {name:"gamepad3"}; | |
// para adicionar, exibirá mensagem | |
// e para remover, exemplo: | |
// gamepads[1] = undefined; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment