Bridge belt implementation added.
This commit is contained in:
parent
1c239be7d1
commit
e1c006da3f
60
game.js
60
game.js
@ -137,6 +137,8 @@ var BOT_PREVX = BOT_X
|
|||||||
var BOT_PREVY = BOT_Y
|
var BOT_PREVY = BOT_Y
|
||||||
var LASTPOSITIONUPDATE = 0
|
var LASTPOSITIONUPDATE = 0
|
||||||
|
|
||||||
|
var BRIDGEDBELT = false
|
||||||
|
|
||||||
var MOBILE = false
|
var MOBILE = false
|
||||||
|
|
||||||
var BELTDOWN = {type:"BELT",direction:DOWN/*,direction2 - defines a secondary direction. For two belts at once.*/}
|
var BELTDOWN = {type:"BELT",direction:DOWN/*,direction2 - defines a secondary direction. For two belts at once.*/}
|
||||||
@ -194,6 +196,7 @@ var KEY_ROTATION_RIGHT = ["D","L","d","l","6","ArrowRight"]
|
|||||||
var KEY_ROTATION_LEFT = ["A","G","a","h","4","ArrowLeft"]
|
var KEY_ROTATION_LEFT = ["A","G","a","h","4","ArrowLeft"]
|
||||||
var KEY_ROTATION_UP = ["W","K","w","k","8","ArrowUp"]
|
var KEY_ROTATION_UP = ["W","K","w","k","8","ArrowUp"]
|
||||||
var KEY_ROTATION_DOWN = ["S","J","s","j","2","ArrowDown"]
|
var KEY_ROTATION_DOWN = ["S","J","s","j","2","ArrowDown"]
|
||||||
|
var KEY_BRIDGED_BELT = ["Shift"]
|
||||||
|
|
||||||
var CONVEYOR_BUILD_BUTTON = {img:ID_CONVEYOR,x:-1,y:-1,w:-1,h:-1,lastselected:DEF_CONVEYOR}
|
var CONVEYOR_BUILD_BUTTON = {img:ID_CONVEYOR,x:-1,y:-1,w:-1,h:-1,lastselected:DEF_CONVEYOR}
|
||||||
var BRANCH_BUILD_BUTTON = {img:ID_BRANCH,x:-1,y:-1,w:-1,h:-1,submenu_buttons:[DEF_BRANCHUP_RB,DEF_BRANCHUP_BR,DEF_BRANCHUP_GY,DEF_BRANCHUP_YG,DEF_BRANCHUP_PPI,DEF_BRANCHUP_PIP,DEF_BRANCHUP_BLGR,DEF_BRANCHUP_GRBL],lastselected:undefined,default:DEF_BRANCHUP_RB}
|
var BRANCH_BUILD_BUTTON = {img:ID_BRANCH,x:-1,y:-1,w:-1,h:-1,submenu_buttons:[DEF_BRANCHUP_RB,DEF_BRANCHUP_BR,DEF_BRANCHUP_GY,DEF_BRANCHUP_YG,DEF_BRANCHUP_PPI,DEF_BRANCHUP_PIP,DEF_BRANCHUP_BLGR,DEF_BRANCHUP_GRBL],lastselected:undefined,default:DEF_BRANCHUP_RB}
|
||||||
@ -228,6 +231,7 @@ function saveLevelData() {
|
|||||||
function goHome() {
|
function goHome() {
|
||||||
saveLevelData()
|
saveLevelData()
|
||||||
MENU.visible=false
|
MENU.visible=false
|
||||||
|
BRIDGEDBELT=false
|
||||||
ITEM_SELECTED=undefined
|
ITEM_SELECTED=undefined
|
||||||
for (var button of MENU.buttons) {
|
for (var button of MENU.buttons) {
|
||||||
if (button.submenu_buttons) {
|
if (button.submenu_buttons) {
|
||||||
@ -664,28 +668,28 @@ function runBot(testing) {
|
|||||||
case UP:{
|
case UP:{
|
||||||
nextSquare = setNextSquare(0,-1)
|
nextSquare = setNextSquare(0,-1)
|
||||||
if (nextSquare!==undefined) {
|
if (nextSquare!==undefined) {
|
||||||
BOT_DIR=(nextSquare.direction2 &&
|
BOT_DIR=(nextSquare.direction2!==undefined &&
|
||||||
(nextSquare.direction2===UP||nextSquare.direction2===DOWN))?nextSquare.direction2:nextSquare.direction
|
(nextSquare.direction2===UP||nextSquare.direction2===DOWN))?nextSquare.direction2:nextSquare.direction
|
||||||
}
|
}
|
||||||
}break;
|
}break;
|
||||||
case LEFT:{
|
case LEFT:{
|
||||||
nextSquare = setNextSquare(-1,0)
|
nextSquare = setNextSquare(-1,0)
|
||||||
if (nextSquare!==undefined) {
|
if (nextSquare!==undefined) {
|
||||||
BOT_DIR=(nextSquare.direction2 &&
|
BOT_DIR=(nextSquare.direction2!==undefined &&
|
||||||
(nextSquare.direction2===RIGHT||nextSquare.direction2===LEFT))?nextSquare.direction2:nextSquare.direction
|
(nextSquare.direction2===RIGHT||nextSquare.direction2===LEFT))?nextSquare.direction2:nextSquare.direction
|
||||||
}
|
}
|
||||||
}break;
|
}break;
|
||||||
case RIGHT:{
|
case RIGHT:{
|
||||||
nextSquare = setNextSquare(1,0);
|
nextSquare = setNextSquare(1,0);
|
||||||
if (nextSquare!==undefined) {
|
if (nextSquare!==undefined) {
|
||||||
BOT_DIR=(nextSquare.direction2 &&
|
BOT_DIR=(nextSquare.direction2!==undefined &&
|
||||||
(nextSquare.direction2===RIGHT||nextSquare.direction2===LEFT))?nextSquare.direction2:nextSquare.direction
|
(nextSquare.direction2===RIGHT||nextSquare.direction2===LEFT))?nextSquare.direction2:nextSquare.direction
|
||||||
}
|
}
|
||||||
}break;
|
}break;
|
||||||
case DOWN:{
|
case DOWN:{
|
||||||
nextSquare = setNextSquare(0,1)
|
nextSquare = setNextSquare(0,1)
|
||||||
if (nextSquare!==undefined) {
|
if (nextSquare!==undefined) {
|
||||||
BOT_DIR=(nextSquare.direction2 &&
|
BOT_DIR=(nextSquare.direction2!==undefined &&
|
||||||
(nextSquare.direction2===UP||nextSquare.direction2===DOWN))?nextSquare.direction2:nextSquare.direction
|
(nextSquare.direction2===UP||nextSquare.direction2===DOWN))?nextSquare.direction2:nextSquare.direction
|
||||||
}
|
}
|
||||||
}break;
|
}break;
|
||||||
@ -755,6 +759,7 @@ function setupGame() {
|
|||||||
canvas.addEventListener("touchstart",clickEvent)
|
canvas.addEventListener("touchstart",clickEvent)
|
||||||
canvas.addEventListener("touchend",releaseEvent)
|
canvas.addEventListener("touchend",releaseEvent)
|
||||||
document.addEventListener("keydown",keydownEvent)
|
document.addEventListener("keydown",keydownEvent)
|
||||||
|
document.addEventListener("keyup",keyupEvent)
|
||||||
try {
|
try {
|
||||||
completedStages = JSON.parse(localStorage.getItem("game"))
|
completedStages = JSON.parse(localStorage.getItem("game"))
|
||||||
if (!completedStages) {
|
if (!completedStages) {
|
||||||
@ -795,6 +800,15 @@ function keydownEvent(e) {
|
|||||||
if (CheckKeys(e,KEY_ROTATION_DOWN)) {
|
if (CheckKeys(e,KEY_ROTATION_DOWN)) {
|
||||||
ITEM_DIRECTION=DOWN
|
ITEM_DIRECTION=DOWN
|
||||||
}
|
}
|
||||||
|
if (CheckKeys(e,KEY_BRIDGED_BELT)) {
|
||||||
|
BRIDGEDBELT=true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function keyupEvent(e) {
|
||||||
|
if (CheckKeys(e,KEY_BRIDGED_BELT)) {
|
||||||
|
BRIDGEDBELT=false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function mouseOverButton(canvas,e,button) {
|
function mouseOverButton(canvas,e,button) {
|
||||||
@ -897,8 +911,13 @@ function deleteObject(coords,def) {
|
|||||||
}
|
}
|
||||||
function placeObject(coords,def) {
|
function placeObject(coords,def) {
|
||||||
if (notAForbiddenObject(coords)) {
|
if (notAForbiddenObject(coords)) {
|
||||||
var newObj={...def,direction:ITEM_DIRECTION}
|
if (gameGrid[coords.y][coords.x].direction!==undefined&&gameGrid[coords.y][coords.x].type&&gameGrid[coords.y][coords.x].type==="BELT"&&BRIDGEDBELT) {
|
||||||
gameGrid[coords.y][coords.x]=newObj
|
gameGrid[coords.y][coords.x]={...gameGrid[coords.y][coords.x],direction2:ITEM_DIRECTION}
|
||||||
|
console.log(gameGrid)
|
||||||
|
} else {
|
||||||
|
var newObj={...def,direction:ITEM_DIRECTION}
|
||||||
|
gameGrid[coords.y][coords.x]=newObj
|
||||||
|
}
|
||||||
gameState=WAITING
|
gameState=WAITING
|
||||||
endARound()
|
endARound()
|
||||||
}
|
}
|
||||||
@ -1476,10 +1495,16 @@ function createHorizontalGradient(x,y,right,ctx,scale) {
|
|||||||
return gradient
|
return gradient
|
||||||
}
|
}
|
||||||
|
|
||||||
function DrawSingleConveyor(x,y,dir,ctx,scale) {
|
function DrawSingleConveyor(x,y,dir,ctx,scale,ghost=false) {
|
||||||
ctx.lineWidth = 16*scale;
|
ctx.lineWidth = 16*scale;
|
||||||
ctx.lineCap = "square"
|
ctx.lineCap = "square"
|
||||||
ctx.strokeStyle="rgb(124,162,157)"
|
if (ghost) {
|
||||||
|
ctx.globalAlpha=0.6
|
||||||
|
ctx.strokeStyle="rgb(0,255,0)"
|
||||||
|
} else {
|
||||||
|
ctx.globalAlpha=1
|
||||||
|
ctx.strokeStyle="rgb(124,162,157)"
|
||||||
|
}
|
||||||
ctx.setLineDash([])
|
ctx.setLineDash([])
|
||||||
if (dir===LEFT||dir===RIGHT) {
|
if (dir===LEFT||dir===RIGHT) {
|
||||||
ctx.beginPath()
|
ctx.beginPath()
|
||||||
@ -1509,6 +1534,7 @@ function DrawSingleConveyor(x,y,dir,ctx,scale) {
|
|||||||
ctx.lineTo(x+16*scale,y+30*scale)
|
ctx.lineTo(x+16*scale,y+30*scale)
|
||||||
ctx.stroke()
|
ctx.stroke()
|
||||||
}
|
}
|
||||||
|
ctx.globalAlpha=1
|
||||||
}
|
}
|
||||||
|
|
||||||
function GetOppositeDirection(dir) {
|
function GetOppositeDirection(dir) {
|
||||||
@ -1605,9 +1631,12 @@ function DrawConnectedConveyor(x,y,ctx,connections,dir,scale,pass=0) {
|
|||||||
|
|
||||||
function HasRelativeConnection(x,y,dir) {
|
function HasRelativeConnection(x,y,dir) {
|
||||||
return (gameGrid[y][x].direction===dir ||
|
return (gameGrid[y][x].direction===dir ||
|
||||||
|
(gameGrid[y][x].direction2!==undefined&&gameGrid[y][x].direction2===dir) ||
|
||||||
(
|
(
|
||||||
gameGrid[y][x].type==="BRANCH" &&
|
gameGrid[y][x].type==="BRANCH" &&
|
||||||
(gameGrid[y][x].direction===getClockwiseDirection(dir) || gameGrid[y][x].direction===getCounterClockwiseDirection(dir))
|
(gameGrid[y][x].direction===getClockwiseDirection(dir) || gameGrid[y][x].direction===getCounterClockwiseDirection(dir) ||
|
||||||
|
(gameGrid[y][x].direction2!==undefined&&gameGrid[y][x].direction2===getClockwiseDirection(dir)) ||
|
||||||
|
(gameGrid[y][x].direction2!==undefined&&gameGrid[y][x].direction2===getCounterClockwiseDirection(dir)))
|
||||||
) ||
|
) ||
|
||||||
(
|
(
|
||||||
x===gameStage.start.x&&y===gameStage.start.y
|
x===gameStage.start.x&&y===gameStage.start.y
|
||||||
@ -1617,8 +1646,19 @@ function HasRelativeConnection(x,y,dir) {
|
|||||||
|
|
||||||
function RenderConveyor(x,y,ctx,icon_definition,dir=0,background=undefined,grid=undefined,scale) {
|
function RenderConveyor(x,y,ctx,icon_definition,dir=0,background=undefined,grid=undefined,scale) {
|
||||||
if (grid===undefined) {
|
if (grid===undefined) {
|
||||||
|
//This is the button version.
|
||||||
|
if (BRIDGEDBELT) {
|
||||||
|
DrawSingleConveyor(x,y,dir+1,ctx,scale,true)
|
||||||
|
DrawSingleConveyor(x,y,dir,ctx,scale)
|
||||||
|
} else {
|
||||||
|
DrawSingleConveyor(x,y,dir,ctx,scale)
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
if (gameGrid[grid.y][grid.x].direction2!==undefined) {
|
||||||
DrawSingleConveyor(x,y,dir,ctx,scale)
|
DrawSingleConveyor(x,y,dir,ctx,scale)
|
||||||
} else {
|
DrawSingleConveyor(x,y,gameGrid[grid.y][grid.x].direction2,ctx,scale)
|
||||||
|
} else
|
||||||
|
{
|
||||||
var connections = {}
|
var connections = {}
|
||||||
if (grid.x>0) {if (HasRelativeConnection(grid.x-1,grid.y+0,RIGHT)){connections[LEFT]=true}}
|
if (grid.x>0) {if (HasRelativeConnection(grid.x-1,grid.y+0,RIGHT)){connections[LEFT]=true}}
|
||||||
if (grid.x<gameGrid[grid.y].length-1) {if (HasRelativeConnection(grid.x+1,grid.y+0,LEFT)){connections[RIGHT]=true}}
|
if (grid.x<gameGrid[grid.y].length-1) {if (HasRelativeConnection(grid.x+1,grid.y+0,LEFT)){connections[RIGHT]=true}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user