diff --git a/README.md b/README.md index 1ab1e40..ea64d41 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,15 @@ Das Ziel dieses Projektes ist es ein auf Javascript und HTML5 basierten "clon" v - Eröffnen von neuen Fabriken - Reisen auf Planeten um dort mit neuen Rohstoffen zu arbeiten +## Hotkeys +Hotkey | Action +--|-- +1 | Build +2 | Move +3 | Rotate +4 | Delete +i | Toggle Item Render (to Prevent Lags) + ## [Link zur Aktuellen live Version][f6f130bf] diff --git a/index.html b/index.html index b8a4632..97495f4 100644 --- a/index.html +++ b/index.html @@ -17,6 +17,7 @@ + diff --git a/js/game.js b/js/game.js index 4f43b48..2d47b85 100644 --- a/js/game.js +++ b/js/game.js @@ -20,6 +20,8 @@ var lang = {} var mode = "none" +var renderItems = true + $(document).ready(function() { loadGameData() loadItems() @@ -40,6 +42,11 @@ function loadItems() { itemRequest.send(null) var json = JSON.parse(itemRequest.responseText) items = json.items + for (var i = 0; i < items.length; i++) { + var image = new Image + image.src = "images/items/" + items[i].name + ".png" + items[i].img = image + } } function loadLang() { @@ -111,12 +118,13 @@ function render() { } } //RENDER Items - for (var i = 0; i < factorys[currentFactory].items.length; i++) { - var item = factorys[currentFactory].items[i] - var img = new Image - img.src = "images/items/" + getItemFormId(item.id).name + ".png" - ctx.drawImage(img, item.x, item.y, 48, 48) - } + if (renderItems) + for (var i = 0; i < factorys[currentFactory].items.length; i++) { + var item = factorys[currentFactory].items[i] + // var img = new Image + // img.src = "images/items/" + getItemFormId(item.id).name + ".png" + ctx.drawImage(items[item.id].img, item.x, item.y, 48, 48) + } //RENDER TILE-LAYER1 for (var i = 0; i < tilesToRender.length; i++) { var tile = tilesToRender[i] @@ -148,11 +156,34 @@ function render() { ctx.globalAlpha = 1 } else { ctx.globalAlpha = 0.4 - if (mode == "delete") + if (mode == "delete") { ctx.fillStyle = "#FF0000"; - else + if (deleteFromX != -1) { + var lowerX = 0 + var deltaX = 0 + if (deleteFromX < cursorScreenX) { + lowerX = deleteFromX + deltaX = cursorScreenX - deleteFromX + 1 + } else { + lowerX = cursorScreenX + deltaX = deleteFromX - cursorScreenX + 1 + } + var lowerY = 0 + var deltaY = 0 + if (deleteFromY < cursorScreenY) { + lowerY = deleteFromY + deltaY = cursorScreenY - deleteFromY + 1 + } else { + lowerY = cursorScreenY + deltaY = deleteFromY - cursorScreenY + 1 + } + ctx.fillRect(lowerX * 48, lowerY * 48, deltaX * 48, deltaY * 48) + } + } else { ctx.fillStyle = "black"; - ctx.fillRect(cursorScreenX * 48, cursorScreenY * 48, 48, 48) + } + if (deleteFromX == -1) + ctx.fillRect(cursorScreenX * 48, cursorScreenY * 48, 48, 48) ctx.globalAlpha = 1 } } diff --git a/js/hotkeys.js b/js/hotkeys.js new file mode 100644 index 0000000..dbbc1de --- /dev/null +++ b/js/hotkeys.js @@ -0,0 +1,43 @@ +$(document).ready(function() { + $(document).keypress(function(e) { + console.log(e.originalEvent) + switch (e.originalEvent.key) { + case "1": + //BUILD + if (mode == "none") { + $('#buildselect').fadeIn(200) + mode = "selectbuilding" + } else { + closeUi() + } + break + case "2": + //MOVE + if (mode == "none") { + mode = "move" + } else { + closeUi() + } + break + case "3": + //ROTATE + if (mode == "none") { + mode = "rotate" + } else { + closeUi() + } + break + case "4": + //ROTATE + if (mode == "none") { + mode = "delete" + } else { + closeUi() + } + break + case "i": + renderItems = !renderItems + break + } + }) +}) diff --git a/js/userinterface.js b/js/userinterface.js index bba826c..5f9dc5e 100644 --- a/js/userinterface.js +++ b/js/userinterface.js @@ -233,8 +233,10 @@ function setTooltip() { var itemId = [] var itemCount = [] +var deleteFromX = -1 +var deleteFromY = -1 -function options(){ +function options() { $('#options').empty() for (var i = 0; i < selectedTile.options.length; i++) { if (selectedTile.options[i].type == "item") { @@ -277,11 +279,6 @@ function buildEvents() { factorys[currentFactory].tiles[cursorScreenX][cursorScreenY].rotate() } } - if (mode == "delete") { - if (factorys[currentFactory].tiles[cursorScreenX][cursorScreenY] != 0) { - factorys[currentFactory].tiles[cursorScreenX][cursorScreenY] = 0 - } - } if (mode == "move") { if (isCursorInScreen) { if (factorys[currentFactory].tiles[cursorScreenX][cursorScreenY] != 0) { @@ -353,9 +350,42 @@ function buildEvents() { moveFromY = cursorScreenY } } + if (mode == "delete") { + deleteFromX = cursorScreenX + deleteFromY = cursorScreenY + } }) $('body').mouseup(function(e) { + if (mode == "delete") { + var minX = 0 + var maxX = 0 + var minY = 0 + var maxY = 0 + if (deleteFromX <= cursorScreenX) { + minX = deleteFromX + maxX = cursorScreenX + } else { + maxX = deleteFromX + minX = cursorScreenX + } + if (deleteFromY <= cursorScreenY) { + minY = deleteFromY + maxY = cursorScreenY + } else { + maxY = deleteFromY + minY = cursorScreenY + } + for (var x = minX; x <= maxX; x++) { + for (var y = minY; y <= maxY; y++) { + if (factorys[currentFactory].tiles[x][y] != 0) { + factorys[currentFactory].tiles[x][y] = 0 + } + } + } + deleteFromX = -1 + deleteFromY = -1 + } if (e.which == 1) mousedown = false if (mode == "move") {