lotta stuff
@ -52,6 +52,7 @@ body{
|
|||||||
#gameOver{
|
#gameOver{
|
||||||
height:100%;
|
height:100%;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
|
right:120px;
|
||||||
background:rgba(0,0,0,.75);
|
background:rgba(0,0,0,.75);
|
||||||
z-index:999;
|
z-index:999;
|
||||||
color:#ffe100;
|
color:#ffe100;
|
||||||
|
176
dist/tetrion.js
vendored
@ -158,7 +158,7 @@ var tetrisCanvas = {
|
|||||||
if (value === 1){
|
if (value === 1){
|
||||||
var x = gsize *(shape.x + j);
|
var x = gsize *(shape.x + j);
|
||||||
var y = gsize *(bottomY + i); //(shape.y + i);
|
var y = gsize *(bottomY + i); //(shape.y + i);
|
||||||
drawBox(this.sceneContext,shape.color,x,y,gsize);
|
drawBox(this.sceneContext,"rgba(255, 255, 255, 0.4)",x,y,gsize);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -402,24 +402,16 @@ var UserInputs = {
|
|||||||
updateGamepad() {
|
updateGamepad() {
|
||||||
this.gpButtons = gamepad.update();
|
this.gpButtons = gamepad.update();
|
||||||
},
|
},
|
||||||
|
|
||||||
incFrame() {
|
|
||||||
this.frames++;
|
|
||||||
this.nframe++;
|
|
||||||
},
|
|
||||||
incDeciframes() {
|
incDeciframes() {
|
||||||
this.nDeciframes++;
|
this.nDeciframes++;
|
||||||
this.nDeciframesKey++;
|
this.nDeciframesKey++;
|
||||||
|
this.keyboardButtonsDeciframes++;
|
||||||
|
this.keyboardDirectionArrowsDeciframes++;
|
||||||
|
this.gamepadButtonsDeciFrames++;
|
||||||
|
this.gamepadDirectionPadDeciFrames++;
|
||||||
},
|
},
|
||||||
processGamepadInput() {
|
processGamepadInput() {
|
||||||
|
|
||||||
this.gamepadDown("DPad-Left");
|
|
||||||
this.gamepadDown("DPad-Right");
|
|
||||||
this.gamepadDown("DPad-Down");
|
|
||||||
|
|
||||||
return;
|
|
||||||
},
|
|
||||||
processButtons() {
|
|
||||||
this.gamepadButtonsDown("RB");
|
this.gamepadButtonsDown("RB");
|
||||||
this.gamepadButtonsDown("LB");
|
this.gamepadButtonsDown("LB");
|
||||||
this.gamepadButtonsDown("A");
|
this.gamepadButtonsDown("A");
|
||||||
@ -427,13 +419,24 @@ var UserInputs = {
|
|||||||
this.gamepadButtonsDown("DPad-Up");
|
this.gamepadButtonsDown("DPad-Up");
|
||||||
//this.gamepadButtonsDown("X");
|
//this.gamepadButtonsDown("X");
|
||||||
//this.gamepadButtonsDown("Y");
|
//this.gamepadButtonsDown("Y");
|
||||||
|
|
||||||
|
this.gamepadDPadDown("DPad-Left");
|
||||||
|
this.gamepadDPadDown("DPad-Right");
|
||||||
|
this.gamepadDPadDown("DPad-Down");
|
||||||
|
|
||||||
return;
|
return;
|
||||||
},
|
},
|
||||||
|
/*
|
||||||
|
processButtons() {
|
||||||
|
|
||||||
|
return;
|
||||||
|
},
|
||||||
|
*/
|
||||||
|
|
||||||
// X, Y, A, B , RB, LB Buttons
|
// X, Y, A, B , RB, LB Buttons
|
||||||
gamepadButtonsDown(finds) {
|
gamepadButtonsDown(finds) {
|
||||||
var deciDAS = 50;
|
var deciDAS = 50.0;
|
||||||
var deciARR = 10;
|
var deciARR = 10.0;
|
||||||
var isContained = this.gpButtons.includes(finds);
|
var isContained = this.gpButtons.includes(finds);
|
||||||
var isPrevContained = this.prevGpButtons.includes(finds);
|
var isPrevContained = this.prevGpButtons.includes(finds);
|
||||||
|
|
||||||
@ -443,25 +446,26 @@ var UserInputs = {
|
|||||||
if(isContained)
|
if(isContained)
|
||||||
this.gamepadQueue.push(finds);
|
this.gamepadQueue.push(finds);
|
||||||
}
|
}
|
||||||
|
var gamepadDASFrames = this.gamepadButtonsDeciFrames / 1.0;
|
||||||
|
|
||||||
if (!this.isGamepadButtonDown) {
|
if (!this.isGamepadButtonDown) {
|
||||||
|
|
||||||
if (this.nDeciframes >= deciDAS) {
|
if (gamepadDASFrames >= deciDAS) {
|
||||||
this.nDeciframes = 0;
|
this.gamepadButtonsDeciFrames = 0;
|
||||||
this.isGamepadButtonDown = true;
|
this.isGamepadButtonDown = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (this.nDeciframes >= deciARR && isContained) {
|
if (gamepadDASFrames >= deciARR && isContained) {
|
||||||
this.gamepadQueue.push(finds);
|
this.gamepadQueue.push(finds);
|
||||||
this.nDeciframes = 0;
|
this.gamepadButtonsDeciFrames = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// Direction Pad
|
// Direction Pad
|
||||||
gamepadDown(finds) {
|
gamepadDPadDown(finds) {
|
||||||
var DAS = 7;
|
var DAS = 7;
|
||||||
var ARR = 3;
|
var ARR = 3;
|
||||||
var isContained = this.gpButtons.includes(finds);
|
var isContained = this.gpButtons.includes(finds);
|
||||||
@ -493,59 +497,68 @@ var UserInputs = {
|
|||||||
this.processKeyDown(88); // X
|
this.processKeyDown(88); // X
|
||||||
this.processKeyDown(90); // Z
|
this.processKeyDown(90); // Z
|
||||||
},
|
},
|
||||||
processKeyShift() {
|
|
||||||
this.processInput(39); // right
|
|
||||||
this.processInput(37); // left
|
|
||||||
this.processInput(40); // down
|
|
||||||
},
|
|
||||||
// keyboard keys z,x,space
|
// keyboard keys z,x,space
|
||||||
processKeyDown(key)
|
processKeyDown(key)
|
||||||
{
|
{
|
||||||
var deciDAS = 10;
|
var deciDAS = 10;
|
||||||
var deciARR = 9;
|
var deciARR = 15
|
||||||
|
|
||||||
|
|
||||||
|
if(this.prevKeyboardKeys[key] != this.keyboardKeys[key]) {
|
||||||
|
this.isKeyboardKeyDown = false;
|
||||||
|
if(this.keyboardKeys[key] == true)
|
||||||
|
this.inputqueue.push(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
var keyboardDASFrames = this.keyboardButtonsDeciframes;
|
||||||
|
|
||||||
if(this.prevKeyboardKeys[key] != this.keyboardKeys[key]) {
|
if (!this.isKeyboardKeyDown) {
|
||||||
this.isKeyDown = false;
|
if (keyboardDASFrames >= deciDAS) {
|
||||||
if(this.keyboardKeys[key] == true)
|
this.keyboardButtonsDeciframes = 0;
|
||||||
this.inputqueue.push(key);
|
this.isKeyboardKeyDown = true;
|
||||||
}
|
|
||||||
|
|
||||||
if (!this.isKeyDown) {
|
|
||||||
if (this.nDeciframesKey >= deciDAS) {
|
|
||||||
this.nDeciframesKey = 0;
|
|
||||||
this.isKeyDown = true;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (this.nDeciframesKey >= deciARR && this.keyboardKeys[key] == true) {
|
if (keyboardDASFrames >= deciARR && this.keyboardKeys[key] == true) {
|
||||||
this.inputqueue.push(key);
|
this.inputqueue.push(key);
|
||||||
this.nDeciframesKey = 0;
|
this.keyboardButtonsDeciframes = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
processKeyShift() {
|
||||||
|
this.processKeyboardArrowKeys(39); // right
|
||||||
|
this.processKeyboardArrowKeys(37); // left
|
||||||
|
this.processKeyboardArrowKeys(40); // down
|
||||||
},
|
},
|
||||||
// Direction arrows
|
// Direction arrows
|
||||||
processInput(key) {
|
processKeyboardArrowKeys(key) {
|
||||||
var DAS = 13;
|
var DAS = 13;
|
||||||
var ARR = 5;
|
var ARR = 3.0;
|
||||||
|
|
||||||
|
/* do once?
|
||||||
if(this.prevKeyboardKeys[key] != this.keyboardKeys[key]) {
|
if(this.prevKeyboardKeys[key] != this.keyboardKeys[key]) {
|
||||||
this.held = false;
|
this.isDirectionArrowDown = false;
|
||||||
if(this.keyboardKeys[key] == true)
|
if(this.keyboardKeys[key] == true)
|
||||||
this.inputqueue.push(key);
|
this.inputqueue.push(key);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
if (!this.held) {
|
//console.log(key + " " + this.held
|
||||||
if (this.frames >= DAS) {
|
var keyboardDASFrames = this.keyboardDirectionArrowsDeciframes / 1.0; // why isnt this 10?
|
||||||
this.frames = 0;
|
//console.log(keyboardDASFrames + " " + this.held);
|
||||||
this.held = true;
|
if (!this.isDirectionArrowDown) {
|
||||||
|
|
||||||
|
if (keyboardDASFrames >= DAS) {
|
||||||
|
this.keyboardDirectionArrowsDeciframes = 0;
|
||||||
|
this.isDirectionArrowDown = true;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (this.frames >= ARR && this.keyboardKeys[key] == true) {
|
if (keyboardDASFrames >= ARR && this.keyboardKeys[key] == true) {
|
||||||
this.inputqueue.push(key);
|
this.inputqueue.push(key);
|
||||||
this.frames = 0;
|
this.keyboardDirectionArrowsDeciframes = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//}
|
//}
|
||||||
@ -554,13 +567,11 @@ var UserInputs = {
|
|||||||
this.keyboardKeys[event.keyCode] = true;
|
this.keyboardKeys[event.keyCode] = true;
|
||||||
},
|
},
|
||||||
keyUp(event) {
|
keyUp(event) {
|
||||||
this.nDeciframesKey = 0;
|
|
||||||
this.isKeyDown = false;
|
this.isKeyDown = false;
|
||||||
this.keyboardKeys[event.keyCode] = false;
|
this.keyboardKeys[event.keyCode] = false;
|
||||||
},
|
},
|
||||||
gamepadButtonClear() {
|
gamepadButtonClear() {
|
||||||
gpButtons = [];
|
gpButtons = [];
|
||||||
nDeciframes = 0;
|
|
||||||
isGamepadDown = false;
|
isGamepadDown = false;
|
||||||
isGamepadButtonDown = false;
|
isGamepadButtonDown = false;
|
||||||
gamepadQueue = [];
|
gamepadQueue = [];
|
||||||
@ -571,20 +582,26 @@ var UserInputs = {
|
|||||||
saveKeyboardKeys() {
|
saveKeyboardKeys() {
|
||||||
this.prevKeyboardKeys = {...this.keyboardKeys};
|
this.prevKeyboardKeys = {...this.keyboardKeys};
|
||||||
},
|
},
|
||||||
isDown: false,
|
// button states
|
||||||
isKeyDown: false,
|
isDirectionArrowDown: false,
|
||||||
|
isKeyboardKeyDown: false,
|
||||||
isGamepadDown: false,
|
isGamepadDown: false,
|
||||||
isGamepadButtonDown: false,
|
isGamepadButtonDown: false,
|
||||||
held: false,
|
|
||||||
nframe: 0,
|
// das frame counters
|
||||||
frames: 0,
|
keyboardButtonsDeciframes: 0, // DAS controlled frames/10 for non-shifted keys
|
||||||
nDeciframes: 0,
|
keyboardDirectionArrowsDeciframes: 0, // DAS controlled frames/10 for mino shifting keys
|
||||||
nDeciframesKey: 0,
|
gamepadButtonsDeciFrames: 0, // DAS controlled frames/10 for non-shifted keys
|
||||||
|
gamepadDirectionPadDeciFrames: 0, // DAS controlled frames/10 for mino shifting keys
|
||||||
|
|
||||||
|
// buttons state contatiners
|
||||||
gpButtons: [],
|
gpButtons: [],
|
||||||
prevGpButtons:[],
|
prevGpButtons:[],
|
||||||
keyboardKeys: [],
|
keyboardKeys: [],
|
||||||
prevKeyboardKeys: [],
|
prevKeyboardKeys: [],
|
||||||
inputqueue: [],
|
|
||||||
|
// button pressed containers
|
||||||
|
inputqueue: [],
|
||||||
gamepadQueue: []
|
gamepadQueue: []
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -785,6 +802,7 @@ Tetris.prototype = {
|
|||||||
this.holdQueue.push(this.shape);
|
this.holdQueue.push(this.shape);
|
||||||
this.shape = this.shapeQueue.shift();
|
this.shape = this.shapeQueue.shift();
|
||||||
this.canPullFromHoldQueue = false;
|
this.canPullFromHoldQueue = false;
|
||||||
|
this.shape.resetOrigin();
|
||||||
//canvas.drawHoldShape(this.holdQueue);
|
//canvas.drawHoldShape(this.holdQueue);
|
||||||
this._draw(); // update?
|
this._draw(); // update?
|
||||||
}
|
}
|
||||||
@ -793,10 +811,10 @@ Tetris.prototype = {
|
|||||||
{
|
{
|
||||||
if(this.holdQueue.length >= 1 && this.canPullFromHoldQueue)
|
if(this.holdQueue.length >= 1 && this.canPullFromHoldQueue)
|
||||||
{
|
{
|
||||||
|
|
||||||
this.canPullFromHoldQueue = false;
|
this.canPullFromHoldQueue = false;
|
||||||
this.shapeQueue.unshift(this.shape);
|
this.shapeQueue.unshift(this.shape);
|
||||||
this.shape = this.holdQueue.pop();
|
this.shape = this.holdQueue.pop();
|
||||||
|
this.shape.resetOrigin();
|
||||||
//canvas.drawHoldShape(this.holdQueue);
|
//canvas.drawHoldShape(this.holdQueue);
|
||||||
this._draw();
|
this._draw();
|
||||||
}
|
}
|
||||||
@ -903,21 +921,25 @@ Tetris.prototype = {
|
|||||||
}
|
}
|
||||||
this.currentTime = new Date().getTime();
|
this.currentTime = new Date().getTime();
|
||||||
var deltaTime = this.currentTime - this.prevTime;
|
var deltaTime = this.currentTime - this.prevTime;
|
||||||
|
|
||||||
|
/*
|
||||||
if(deltaTime >= 10)
|
if(deltaTime >= 10)
|
||||||
{
|
{
|
||||||
inputs.incFrame();
|
inputs.incFrame();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
if(deltaTime >= 1) { // 600hz
|
if(deltaTime >= 1) { // 600hz
|
||||||
inputs.incDeciframes();
|
inputs.incDeciframes();
|
||||||
inputs.updateGamepad();
|
|
||||||
inputs.processButtons();
|
|
||||||
inputs.processGamepadInput();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(deltaTime >= 1) {
|
||||||
|
inputs.updateGamepad();
|
||||||
|
//inputs.processButtons();
|
||||||
|
inputs.processGamepadInput();
|
||||||
|
}
|
||||||
|
|
||||||
// drain gamepad queue
|
// drain gamepad queue
|
||||||
if(deltaTime > 5)
|
if(deltaTime > 5)
|
||||||
{
|
{
|
||||||
@ -997,14 +1019,14 @@ Tetris.prototype = {
|
|||||||
this._update();
|
this._update();
|
||||||
}
|
}
|
||||||
if(curkey == 16) {
|
if(curkey == 16) {
|
||||||
//holdQueue.push(this.shape);
|
this.pullHoldQueue();
|
||||||
|
|
||||||
this._update();
|
//this._update();
|
||||||
}
|
}
|
||||||
if(curkey == 16) {
|
if(curkey == 16) {
|
||||||
//holdQueue.pop(this.shape);
|
this.pushHoldQueue();
|
||||||
|
|
||||||
this._update();
|
//this._update();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
inputs.inputqueue = [];
|
inputs.inputqueue = [];
|
||||||
@ -1120,6 +1142,7 @@ function ShapeL() {
|
|||||||
this.states = [state1, state2, state3, state4];
|
this.states = [state1, state2, state3, state4];
|
||||||
this.x = 4;
|
this.x = 4;
|
||||||
this.y = -3;
|
this.y = -3;
|
||||||
|
this.originY = -3;
|
||||||
this.flag = 'L';
|
this.flag = 'L';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1150,6 +1173,7 @@ function ShapeLR() {
|
|||||||
this.states = [state1, state2, state3, state4];
|
this.states = [state1, state2, state3, state4];
|
||||||
this.x = 4;
|
this.x = 4;
|
||||||
this.y = -3;
|
this.y = -3;
|
||||||
|
this.originY = -3;
|
||||||
this.flag = 'LR';
|
this.flag = 'LR';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1164,6 +1188,7 @@ function ShapeO() {
|
|||||||
this.states = [state1];
|
this.states = [state1];
|
||||||
this.x = 4;
|
this.x = 4;
|
||||||
this.y = -2;
|
this.y = -2;
|
||||||
|
this.originY = -2;
|
||||||
this.flag = 'O';
|
this.flag = 'O';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1183,6 +1208,7 @@ function ShapeI() {
|
|||||||
|
|
||||||
this.x = 5;
|
this.x = 5;
|
||||||
this.y = -4;
|
this.y = -4;
|
||||||
|
this.originY = -4;
|
||||||
this.flag = 'I';
|
this.flag = 'I';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1212,6 +1238,7 @@ function ShapeT() {
|
|||||||
this.states = [state1, state2, state3, state4];
|
this.states = [state1, state2, state3, state4];
|
||||||
this.x = 4;
|
this.x = 4;
|
||||||
this.y = -2;
|
this.y = -2;
|
||||||
|
this.originY = -2;
|
||||||
this.flag = 'T';
|
this.flag = 'T';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1230,6 +1257,7 @@ function ShapeZ() {
|
|||||||
this.states = [state1, state2];
|
this.states = [state1, state2];
|
||||||
this.x = 4;
|
this.x = 4;
|
||||||
this.y = -2;
|
this.y = -2;
|
||||||
|
this.originY = -2;
|
||||||
this.flag = 'Z';
|
this.flag = 'Z';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1247,7 +1275,8 @@ function ShapeZR() {
|
|||||||
|
|
||||||
this.states = [state1, state2];
|
this.states = [state1, state2];
|
||||||
this.x = 4;
|
this.x = 4;
|
||||||
this.y = -2;
|
this.y = -2
|
||||||
|
this.originY = -2;
|
||||||
this.flag = 'ZR';
|
this.flag = 'ZR';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1463,6 +1492,9 @@ ShapeZR.prototype = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
resetOrigin: function() {
|
||||||
|
this.y = this.originY + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BIN
favicon.ico
Normal file
After Width: | Height: | Size: 15 KiB |
6
media/ico/about.txt
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
This favicon was generated using the following font:
|
||||||
|
|
||||||
|
- Font Title: Ubuntu
|
||||||
|
- Font Author: Copyright 2011 Canonical Ltd. Licensed under the Ubuntu Font Licence 1.0
|
||||||
|
- Font Source: http://fonts.gstatic.com/s/ubuntu/v15/4iCs6KVjbNBYlgo6eAT3v02QFg.ttf
|
||||||
|
- Font License: Ubuntu Font License, 1.0 (http://font.ubuntu.com/ufl/)
|
BIN
media/ico/android-chrome-192x192.png
Normal file
After Width: | Height: | Size: 5.5 KiB |
BIN
media/ico/android-chrome-512x512.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
media/ico/apple-touch-icon.png
Normal file
After Width: | Height: | Size: 4.8 KiB |
BIN
media/ico/favicon-16x16.png
Normal file
After Width: | Height: | Size: 337 B |
BIN
media/ico/favicon-32x32.png
Normal file
After Width: | Height: | Size: 748 B |
BIN
media/ico/favicon.ico
Normal file
After Width: | Height: | Size: 15 KiB |
1
media/ico/site.webmanifest
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
|
@ -157,7 +157,7 @@ var tetrisCanvas = {
|
|||||||
if (value === 1){
|
if (value === 1){
|
||||||
var x = gsize *(shape.x + j);
|
var x = gsize *(shape.x + j);
|
||||||
var y = gsize *(bottomY + i); //(shape.y + i);
|
var y = gsize *(bottomY + i); //(shape.y + i);
|
||||||
drawBox(this.sceneContext,shape.color,x,y,gsize);
|
drawBox(this.sceneContext,"rgba(255, 255, 255, 0.4)",x,y,gsize);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
133
src/input.js
@ -10,24 +10,16 @@ var UserInputs = {
|
|||||||
updateGamepad() {
|
updateGamepad() {
|
||||||
this.gpButtons = gamepad.update();
|
this.gpButtons = gamepad.update();
|
||||||
},
|
},
|
||||||
|
|
||||||
incFrame() {
|
|
||||||
this.frames++;
|
|
||||||
this.nframe++;
|
|
||||||
},
|
|
||||||
incDeciframes() {
|
incDeciframes() {
|
||||||
this.nDeciframes++;
|
this.nDeciframes++;
|
||||||
this.nDeciframesKey++;
|
this.nDeciframesKey++;
|
||||||
|
this.keyboardButtonsDeciframes++;
|
||||||
|
this.keyboardDirectionArrowsDeciframes++;
|
||||||
|
this.gamepadButtonsDeciFrames++;
|
||||||
|
this.gamepadDirectionPadDeciFrames++;
|
||||||
},
|
},
|
||||||
processGamepadInput() {
|
processGamepadInput() {
|
||||||
|
|
||||||
this.gamepadDown("DPad-Left");
|
|
||||||
this.gamepadDown("DPad-Right");
|
|
||||||
this.gamepadDown("DPad-Down");
|
|
||||||
|
|
||||||
return;
|
|
||||||
},
|
|
||||||
processButtons() {
|
|
||||||
this.gamepadButtonsDown("RB");
|
this.gamepadButtonsDown("RB");
|
||||||
this.gamepadButtonsDown("LB");
|
this.gamepadButtonsDown("LB");
|
||||||
this.gamepadButtonsDown("A");
|
this.gamepadButtonsDown("A");
|
||||||
@ -35,13 +27,24 @@ var UserInputs = {
|
|||||||
this.gamepadButtonsDown("DPad-Up");
|
this.gamepadButtonsDown("DPad-Up");
|
||||||
//this.gamepadButtonsDown("X");
|
//this.gamepadButtonsDown("X");
|
||||||
//this.gamepadButtonsDown("Y");
|
//this.gamepadButtonsDown("Y");
|
||||||
|
|
||||||
|
this.gamepadDPadDown("DPad-Left");
|
||||||
|
this.gamepadDPadDown("DPad-Right");
|
||||||
|
this.gamepadDPadDown("DPad-Down");
|
||||||
|
|
||||||
return;
|
return;
|
||||||
},
|
},
|
||||||
|
/*
|
||||||
|
processButtons() {
|
||||||
|
|
||||||
|
return;
|
||||||
|
},
|
||||||
|
*/
|
||||||
|
|
||||||
// X, Y, A, B , RB, LB Buttons
|
// X, Y, A, B , RB, LB Buttons
|
||||||
gamepadButtonsDown(finds) {
|
gamepadButtonsDown(finds) {
|
||||||
var deciDAS = 50;
|
var deciDAS = 50.0;
|
||||||
var deciARR = 10;
|
var deciARR = 10.0;
|
||||||
var isContained = this.gpButtons.includes(finds);
|
var isContained = this.gpButtons.includes(finds);
|
||||||
var isPrevContained = this.prevGpButtons.includes(finds);
|
var isPrevContained = this.prevGpButtons.includes(finds);
|
||||||
|
|
||||||
@ -51,25 +54,26 @@ var UserInputs = {
|
|||||||
if(isContained)
|
if(isContained)
|
||||||
this.gamepadQueue.push(finds);
|
this.gamepadQueue.push(finds);
|
||||||
}
|
}
|
||||||
|
var gamepadDASFrames = this.gamepadButtonsDeciFrames / 1.0;
|
||||||
|
|
||||||
if (!this.isGamepadButtonDown) {
|
if (!this.isGamepadButtonDown) {
|
||||||
|
|
||||||
if (this.nDeciframes >= deciDAS) {
|
if (gamepadDASFrames >= deciDAS) {
|
||||||
this.nDeciframes = 0;
|
this.gamepadButtonsDeciFrames = 0;
|
||||||
this.isGamepadButtonDown = true;
|
this.isGamepadButtonDown = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (this.nDeciframes >= deciARR && isContained) {
|
if (gamepadDASFrames >= deciARR && isContained) {
|
||||||
this.gamepadQueue.push(finds);
|
this.gamepadQueue.push(finds);
|
||||||
this.nDeciframes = 0;
|
this.gamepadButtonsDeciFrames = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// Direction Pad
|
// Direction Pad
|
||||||
gamepadDown(finds) {
|
gamepadDPadDown(finds) {
|
||||||
var DAS = 7;
|
var DAS = 7;
|
||||||
var ARR = 3;
|
var ARR = 3;
|
||||||
var isContained = this.gpButtons.includes(finds);
|
var isContained = this.gpButtons.includes(finds);
|
||||||
@ -101,59 +105,68 @@ var UserInputs = {
|
|||||||
this.processKeyDown(88); // X
|
this.processKeyDown(88); // X
|
||||||
this.processKeyDown(90); // Z
|
this.processKeyDown(90); // Z
|
||||||
},
|
},
|
||||||
processKeyShift() {
|
|
||||||
this.processInput(39); // right
|
|
||||||
this.processInput(37); // left
|
|
||||||
this.processInput(40); // down
|
|
||||||
},
|
|
||||||
// keyboard keys z,x,space
|
// keyboard keys z,x,space
|
||||||
processKeyDown(key)
|
processKeyDown(key)
|
||||||
{
|
{
|
||||||
var deciDAS = 10;
|
var deciDAS = 10;
|
||||||
var deciARR = 9;
|
var deciARR = 15
|
||||||
|
|
||||||
|
|
||||||
|
if(this.prevKeyboardKeys[key] != this.keyboardKeys[key]) {
|
||||||
|
this.isKeyboardKeyDown = false;
|
||||||
|
if(this.keyboardKeys[key] == true)
|
||||||
|
this.inputqueue.push(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
var keyboardDASFrames = this.keyboardButtonsDeciframes;
|
||||||
|
|
||||||
if(this.prevKeyboardKeys[key] != this.keyboardKeys[key]) {
|
if (!this.isKeyboardKeyDown) {
|
||||||
this.isKeyDown = false;
|
if (keyboardDASFrames >= deciDAS) {
|
||||||
if(this.keyboardKeys[key] == true)
|
this.keyboardButtonsDeciframes = 0;
|
||||||
this.inputqueue.push(key);
|
this.isKeyboardKeyDown = true;
|
||||||
}
|
|
||||||
|
|
||||||
if (!this.isKeyDown) {
|
|
||||||
if (this.nDeciframesKey >= deciDAS) {
|
|
||||||
this.nDeciframesKey = 0;
|
|
||||||
this.isKeyDown = true;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (this.nDeciframesKey >= deciARR && this.keyboardKeys[key] == true) {
|
if (keyboardDASFrames >= deciARR && this.keyboardKeys[key] == true) {
|
||||||
this.inputqueue.push(key);
|
this.inputqueue.push(key);
|
||||||
this.nDeciframesKey = 0;
|
this.keyboardButtonsDeciframes = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
processKeyShift() {
|
||||||
|
this.processKeyboardArrowKeys(39); // right
|
||||||
|
this.processKeyboardArrowKeys(37); // left
|
||||||
|
this.processKeyboardArrowKeys(40); // down
|
||||||
},
|
},
|
||||||
// Direction arrows
|
// Direction arrows
|
||||||
processInput(key) {
|
processKeyboardArrowKeys(key) {
|
||||||
var DAS = 13;
|
var DAS = 13;
|
||||||
var ARR = 5;
|
var ARR = 3.0;
|
||||||
|
|
||||||
|
/* do once?
|
||||||
if(this.prevKeyboardKeys[key] != this.keyboardKeys[key]) {
|
if(this.prevKeyboardKeys[key] != this.keyboardKeys[key]) {
|
||||||
this.held = false;
|
this.isDirectionArrowDown = false;
|
||||||
if(this.keyboardKeys[key] == true)
|
if(this.keyboardKeys[key] == true)
|
||||||
this.inputqueue.push(key);
|
this.inputqueue.push(key);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
if (!this.held) {
|
//console.log(key + " " + this.held
|
||||||
if (this.frames >= DAS) {
|
var keyboardDASFrames = this.keyboardDirectionArrowsDeciframes / 1.0; // why isnt this 10?
|
||||||
this.frames = 0;
|
//console.log(keyboardDASFrames + " " + this.held);
|
||||||
this.held = true;
|
if (!this.isDirectionArrowDown) {
|
||||||
|
|
||||||
|
if (keyboardDASFrames >= DAS) {
|
||||||
|
this.keyboardDirectionArrowsDeciframes = 0;
|
||||||
|
this.isDirectionArrowDown = true;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (this.frames >= ARR && this.keyboardKeys[key] == true) {
|
if (keyboardDASFrames >= ARR && this.keyboardKeys[key] == true) {
|
||||||
this.inputqueue.push(key);
|
this.inputqueue.push(key);
|
||||||
this.frames = 0;
|
this.keyboardDirectionArrowsDeciframes = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//}
|
//}
|
||||||
@ -162,13 +175,11 @@ var UserInputs = {
|
|||||||
this.keyboardKeys[event.keyCode] = true;
|
this.keyboardKeys[event.keyCode] = true;
|
||||||
},
|
},
|
||||||
keyUp(event) {
|
keyUp(event) {
|
||||||
this.nDeciframesKey = 0;
|
|
||||||
this.isKeyDown = false;
|
this.isKeyDown = false;
|
||||||
this.keyboardKeys[event.keyCode] = false;
|
this.keyboardKeys[event.keyCode] = false;
|
||||||
},
|
},
|
||||||
gamepadButtonClear() {
|
gamepadButtonClear() {
|
||||||
gpButtons = [];
|
gpButtons = [];
|
||||||
nDeciframes = 0;
|
|
||||||
isGamepadDown = false;
|
isGamepadDown = false;
|
||||||
isGamepadButtonDown = false;
|
isGamepadButtonDown = false;
|
||||||
gamepadQueue = [];
|
gamepadQueue = [];
|
||||||
@ -179,20 +190,26 @@ var UserInputs = {
|
|||||||
saveKeyboardKeys() {
|
saveKeyboardKeys() {
|
||||||
this.prevKeyboardKeys = {...this.keyboardKeys};
|
this.prevKeyboardKeys = {...this.keyboardKeys};
|
||||||
},
|
},
|
||||||
isDown: false,
|
// button states
|
||||||
isKeyDown: false,
|
isDirectionArrowDown: false,
|
||||||
|
isKeyboardKeyDown: false,
|
||||||
isGamepadDown: false,
|
isGamepadDown: false,
|
||||||
isGamepadButtonDown: false,
|
isGamepadButtonDown: false,
|
||||||
held: false,
|
|
||||||
nframe: 0,
|
// das frame counters
|
||||||
frames: 0,
|
keyboardButtonsDeciframes: 0, // DAS controlled frames/10 for non-shifted keys
|
||||||
nDeciframes: 0,
|
keyboardDirectionArrowsDeciframes: 0, // DAS controlled frames/10 for mino shifting keys
|
||||||
nDeciframesKey: 0,
|
gamepadButtonsDeciFrames: 0, // DAS controlled frames/10 for non-shifted keys
|
||||||
|
gamepadDirectionPadDeciFrames: 0, // DAS controlled frames/10 for mino shifting keys
|
||||||
|
|
||||||
|
// buttons state contatiners
|
||||||
gpButtons: [],
|
gpButtons: [],
|
||||||
prevGpButtons:[],
|
prevGpButtons:[],
|
||||||
keyboardKeys: [],
|
keyboardKeys: [],
|
||||||
prevKeyboardKeys: [],
|
prevKeyboardKeys: [],
|
||||||
inputqueue: [],
|
|
||||||
|
// button pressed containers
|
||||||
|
inputqueue: [],
|
||||||
gamepadQueue: []
|
gamepadQueue: []
|
||||||
};
|
};
|
||||||
|
|
||||||
|
29
src/main.js
@ -193,6 +193,7 @@ Tetris.prototype = {
|
|||||||
this.holdQueue.push(this.shape);
|
this.holdQueue.push(this.shape);
|
||||||
this.shape = this.shapeQueue.shift();
|
this.shape = this.shapeQueue.shift();
|
||||||
this.canPullFromHoldQueue = false;
|
this.canPullFromHoldQueue = false;
|
||||||
|
this.shape.resetOrigin();
|
||||||
//canvas.drawHoldShape(this.holdQueue);
|
//canvas.drawHoldShape(this.holdQueue);
|
||||||
this._draw(); // update?
|
this._draw(); // update?
|
||||||
}
|
}
|
||||||
@ -201,10 +202,10 @@ Tetris.prototype = {
|
|||||||
{
|
{
|
||||||
if(this.holdQueue.length >= 1 && this.canPullFromHoldQueue)
|
if(this.holdQueue.length >= 1 && this.canPullFromHoldQueue)
|
||||||
{
|
{
|
||||||
|
|
||||||
this.canPullFromHoldQueue = false;
|
this.canPullFromHoldQueue = false;
|
||||||
this.shapeQueue.unshift(this.shape);
|
this.shapeQueue.unshift(this.shape);
|
||||||
this.shape = this.holdQueue.pop();
|
this.shape = this.holdQueue.pop();
|
||||||
|
this.shape.resetOrigin();
|
||||||
//canvas.drawHoldShape(this.holdQueue);
|
//canvas.drawHoldShape(this.holdQueue);
|
||||||
this._draw();
|
this._draw();
|
||||||
}
|
}
|
||||||
@ -311,21 +312,25 @@ Tetris.prototype = {
|
|||||||
}
|
}
|
||||||
this.currentTime = new Date().getTime();
|
this.currentTime = new Date().getTime();
|
||||||
var deltaTime = this.currentTime - this.prevTime;
|
var deltaTime = this.currentTime - this.prevTime;
|
||||||
|
|
||||||
|
/*
|
||||||
if(deltaTime >= 10)
|
if(deltaTime >= 10)
|
||||||
{
|
{
|
||||||
inputs.incFrame();
|
inputs.incFrame();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
if(deltaTime >= 1) { // 600hz
|
if(deltaTime >= 1) { // 600hz
|
||||||
inputs.incDeciframes();
|
inputs.incDeciframes();
|
||||||
inputs.updateGamepad();
|
|
||||||
inputs.processButtons();
|
|
||||||
inputs.processGamepadInput();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(deltaTime >= 1) {
|
||||||
|
inputs.updateGamepad();
|
||||||
|
//inputs.processButtons();
|
||||||
|
inputs.processGamepadInput();
|
||||||
|
}
|
||||||
|
|
||||||
// drain gamepad queue
|
// drain gamepad queue
|
||||||
if(deltaTime > 5)
|
if(deltaTime > 5)
|
||||||
{
|
{
|
||||||
@ -405,14 +410,14 @@ Tetris.prototype = {
|
|||||||
this._update();
|
this._update();
|
||||||
}
|
}
|
||||||
if(curkey == 16) {
|
if(curkey == 16) {
|
||||||
//holdQueue.push(this.shape);
|
this.pullHoldQueue();
|
||||||
|
|
||||||
this._update();
|
//this._update();
|
||||||
}
|
}
|
||||||
if(curkey == 16) {
|
if(curkey == 16) {
|
||||||
//holdQueue.pop(this.shape);
|
this.pushHoldQueue();
|
||||||
|
|
||||||
this._update();
|
//this._update();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
inputs.inputqueue = [];
|
inputs.inputqueue = [];
|
||||||
|
@ -34,6 +34,7 @@ function ShapeL() {
|
|||||||
this.states = [state1, state2, state3, state4];
|
this.states = [state1, state2, state3, state4];
|
||||||
this.x = 4;
|
this.x = 4;
|
||||||
this.y = -3;
|
this.y = -3;
|
||||||
|
this.originY = -3;
|
||||||
this.flag = 'L';
|
this.flag = 'L';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,6 +65,7 @@ function ShapeLR() {
|
|||||||
this.states = [state1, state2, state3, state4];
|
this.states = [state1, state2, state3, state4];
|
||||||
this.x = 4;
|
this.x = 4;
|
||||||
this.y = -3;
|
this.y = -3;
|
||||||
|
this.originY = -3;
|
||||||
this.flag = 'LR';
|
this.flag = 'LR';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -78,6 +80,7 @@ function ShapeO() {
|
|||||||
this.states = [state1];
|
this.states = [state1];
|
||||||
this.x = 4;
|
this.x = 4;
|
||||||
this.y = -2;
|
this.y = -2;
|
||||||
|
this.originY = -2;
|
||||||
this.flag = 'O';
|
this.flag = 'O';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -97,6 +100,7 @@ function ShapeI() {
|
|||||||
|
|
||||||
this.x = 5;
|
this.x = 5;
|
||||||
this.y = -4;
|
this.y = -4;
|
||||||
|
this.originY = -4;
|
||||||
this.flag = 'I';
|
this.flag = 'I';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -126,6 +130,7 @@ function ShapeT() {
|
|||||||
this.states = [state1, state2, state3, state4];
|
this.states = [state1, state2, state3, state4];
|
||||||
this.x = 4;
|
this.x = 4;
|
||||||
this.y = -2;
|
this.y = -2;
|
||||||
|
this.originY = -2;
|
||||||
this.flag = 'T';
|
this.flag = 'T';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -144,6 +149,7 @@ function ShapeZ() {
|
|||||||
this.states = [state1, state2];
|
this.states = [state1, state2];
|
||||||
this.x = 4;
|
this.x = 4;
|
||||||
this.y = -2;
|
this.y = -2;
|
||||||
|
this.originY = -2;
|
||||||
this.flag = 'Z';
|
this.flag = 'Z';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -161,7 +167,8 @@ function ShapeZR() {
|
|||||||
|
|
||||||
this.states = [state1, state2];
|
this.states = [state1, state2];
|
||||||
this.x = 4;
|
this.x = 4;
|
||||||
this.y = -2;
|
this.y = -2
|
||||||
|
this.originY = -2;
|
||||||
this.flag = 'ZR';
|
this.flag = 'ZR';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -377,6 +384,9 @@ ShapeZR.prototype = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
resetOrigin: function() {
|
||||||
|
this.y = this.originY + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|