var tileClasses = [] //Hier sind alle im Tiles welche im Spiel präsent sind class Conveyorbelt extends Tile { constructor(x, y, factory) { super(x, y, factory) this.name = "conveyorbelt" this.hasNoInventory = true this.i = 0 this.cost = [{ "id": 0, "count": 20 }] this.texture = { "0": ["conveyorbelt00", "conveyorbelt01", "conveyorbelt02", "conveyorbelt03", "conveyorbelt04", "conveyorbelt05", "conveyorbelt06"], "1": [] } this.loadImages() } } class Treefarm extends Tile { constructor(x, y, factory) { super(x, y, factory) this.maxwork = 96 * 5 this.currentwork = 0 this.name = "treefarm" this.i = 1 this.hasNoInventory = true this.cost = [{ "id": 0, "count": 30 }] this.texture = { "0": [], "1": ["treefarm10", "treefarm10", "treefarm10", "treefarm11", "treefarm11", "treefarm11", "treefarm12", "treefarm12", "treefarm12", "treefarm13", "treefarm13", "treefarm13", "treefarm14", "treefarm14", "treefarm14", "treefarm15", "treefarm15", "treefarm15"] } this.loadImages() } work() { this.currentwork = ((this.currentwork + 1) % this.maxwork) if (this.currentwork == 0) { var item = new Item(1, this.x * 48, this.y * 48) this.factory.items.push(item) item.setDFromDirection(this.direction) } } } class Saw extends Tile { constructor(x, y, factory) { super(x, y, factory) this.maxwork = 48 this.currentwork = 0 this.name = "saw" this.i = 2 this.cost = [{ "id": 0, "count": 750 }, { "id": 1, "count": 50 } ] this.texture = { "0": [], "1": ["saw10", "saw10", "saw10", "saw10", "saw11", "saw11", "saw11", "saw11", "saw12", "saw12", "saw12", "saw12", "saw13", "saw13", "saw13", "saw13"] } this.loadImages() } work() { //Items für ein Pank var requieredCount = 5 if (this.input.countOf(1) >= requieredCount || this.input.countOf(2) >= 1) { if (this.currentwork == this.maxwork) { if (this.input.countOf(1) >= requieredCount) { this.input.take(1, requieredCount, this.factory) for (var i = 0; i < 4; i++) { var item = new Item(2, this.x * 48, this.y * 48) this.factory.items.push(item) item.setDFromDirection(this.direction) } } else { this.input.take(2, 1, this.factory) var item = new Item(5, this.x * 48, this.y * 48) this.factory.items.push(item) item.setDFromDirection(this.direction) } this.currentwork = 0 } else { this.currentwork++ } } else { this.currentwork = 0 } } } class Weaver extends Tile { constructor(x, y, factory) { super(x, y, factory) this.maxwork = 48 * 3 this.currentwork = 0 this.name = "weaver" this.i = 10 this.cost = [{ "id": 2, "count": 200 }, { "id": 3, "count": 100 }, { "id": 0, "count": 25000 } ] this.texture = { "0": [], "1": ["weaver10"] } this.loadImages() } work() { //Items für ein Pank var requieredCount = 5 if (this.input.countOf(2) >= requieredCount) { if (this.currentwork == this.maxwork) { this.currentwork = 0 this.input.take(2, requieredCount, this.factory) var item = new Item(9, this.x * 48, this.y * 48) this.factory.items.push(item) item.setDFromDirection(this.direction) } else { this.currentwork++ } } else if (this.input.countOf(9) >= 1 && this.input.countOf(7) >= 1) { if (this.currentwork == this.maxwork) { this.currentwork = 0 this.input.take(9, 1, this.factory) this.input.take(7, 1, this.factory) var item = new Item(10, this.x * 48, this.y * 48) this.factory.items.push(item) item.setDFromDirection(this.direction) } else { this.currentwork++ } } else { this.currentwork = 0 } } } class Papermanufactory extends Tile { constructor(x, y, factory) { super(x, y, factory) this.maxwork = 48 * 10 this.currentwork = 0 this.name = "papermanufactory" this.i = 11 this.cost = [{ "id": 2, "count": 200 }, { "id": 3, "count": 500 }, { "id": 0, "count": 10000 } ] this.texture = { "0": [], "1": ["papermanufactory10"] } this.loadImages() } work() { //Items für ein Pank var requieredCount = 5 if (this.input.countOf(9) >= 10 && this.input.countOf(5) >= 100) { if (this.currentwork == this.maxwork) { this.input.take(9, 10, this.factory) this.input.take(5, 100, this.factory) this.currentwork = 0 for (var i = 0; i < 10; i++) { var item = new Item(7, this.x * 48, this.y * 48) this.factory.items.push(item) item.setDFromDirection(this.direction) } } else { this.currentwork++ } } else { this.currentwork = 0 } } } class Charcoalmeiler extends Tile { constructor(x, y, factory) { super(x, y, factory) this.maxwork = 96 * 10 this.currentwork = 0 this.name = "charcoalmeiler" this.i = 3 this.cost = [{ "id": 0, "count": 1000 }, { "id": 3, "count": 30 } ] this.texture = { "0": [], "1": ["charcoalmeiler10", "charcoalmeiler10", "charcoalmeiler10", "charcoalmeiler11", "charcoalmeiler11", "charcoalmeiler11", "charcoalmeiler12", "charcoalmeiler12", "charcoalmeiler12", "charcoalmeiler13", "charcoalmeiler13", "charcoalmeiler13", "charcoalmeiler14", "charcoalmeiler14", "charcoalmeiler14", "charcoalmeiler15", "charcoalmeiler15", "charcoalmeiler15", "charcoalmeiler16", "charcoalmeiler16", "charcoalmeiler16", "charcoalmeiler17", "charcoalmeiler17", "charcoalmeiler17", "charcoalmeiler18", "charcoalmeiler18", "charcoalmeiler18", "charcoalmeiler19", "charcoalmeiler19", "charcoalmeiler19", "charcoalmeiler110", "charcoalmeiler111", "charcoalmeiler110", "charcoalmeiler111", "charcoalmeiler110", "charcoalmeiler111", "charcoalmeiler110", "charcoalmeiler111", "charcoalmeiler110", "charcoalmeiler111", "charcoalmeiler110", "charcoalmeiler111", "charcoalmeiler110", "charcoalmeiler111", "charcoalmeiler112", "charcoalmeiler112", "charcoalmeiler112", "charcoalmeiler112", "charcoalmeiler112", "charcoalmeiler113", "charcoalmeiler113", "charcoalmeiler113", "charcoalmeiler113", "charcoalmeiler113", "charcoalmeiler114", "charcoalmeiler114", "charcoalmeiler114", "charcoalmeiler114", "charcoalmeiler114"] } this.loadImages() } getImage(fulltime, layer) { fulltime = Math.round(fulltime / 4) if (this.images[layer].length == 0) return "0" return this.images[layer][(fulltime % this.images[layer].length)] } work() { //Items für ein Pank var requieredCount = 10 if (this.input.countOf(2) >= requieredCount) { if (this.currentwork == this.maxwork) { this.input.take(2, requieredCount, this.factory) for (var i = 0; i < 5; i++) { var item = new Item(4, this.x * 48, this.y * 48) this.factory.items.push(item) item.setDFromDirection(this.direction) } this.currentwork = 0 } else { this.currentwork++ } } else { this.currentwork = 0 } } } class AdvancedCharcoalmeiler extends Tile { constructor(x, y, factory) { super(x, y, factory) this.maxwork = 96 * 10 this.currentwork = 0 this.name = "advancedcharcoalmeiler" this.i = 12 this.dust = 0 this.cost = [{ "id": 0, "count": 50000 }, { "id": 3, "count": 1000 }, { "id": 10, "count": 200 } ] this.texture = { "0": [], "1": ["advancedcharcoalmeiler10", "advancedcharcoalmeiler10", "advancedcharcoalmeiler10", "advancedcharcoalmeiler11", "advancedcharcoalmeiler11", "advancedcharcoalmeiler11", "advancedcharcoalmeiler12", "advancedcharcoalmeiler12", "advancedcharcoalmeiler12", "advancedcharcoalmeiler13", "advancedcharcoalmeiler13", "advancedcharcoalmeiler13", "advancedcharcoalmeiler14", "advancedcharcoalmeiler14", "advancedcharcoalmeiler14", "advancedcharcoalmeiler15", "advancedcharcoalmeiler15", "advancedcharcoalmeiler15", "advancedcharcoalmeiler16", "advancedcharcoalmeiler16", "advancedcharcoalmeiler16", "advancedcharcoalmeiler17", "advancedcharcoalmeiler17", "advancedcharcoalmeiler17", "advancedcharcoalmeiler18", "advancedcharcoalmeiler18", "advancedcharcoalmeiler18", "advancedcharcoalmeiler19", "advancedcharcoalmeiler19", "advancedcharcoalmeiler19", "advancedcharcoalmeiler110", "advancedcharcoalmeiler111", "advancedcharcoalmeiler110", "advancedcharcoalmeiler111", "advancedcharcoalmeiler110", "advancedcharcoalmeiler111", "advancedcharcoalmeiler110", "advancedcharcoalmeiler111", "advancedcharcoalmeiler110", "advancedcharcoalmeiler111", "advancedcharcoalmeiler110", "advancedcharcoalmeiler111", "advancedcharcoalmeiler110", "advancedcharcoalmeiler111", "advancedcharcoalmeiler112", "advancedcharcoalmeiler112", "advancedcharcoalmeiler112", "advancedcharcoalmeiler112", "advancedcharcoalmeiler112", "advancedcharcoalmeiler113", "advancedcharcoalmeiler113", "advancedcharcoalmeiler113", "advancedcharcoalmeiler113", "advancedcharcoalmeiler113", "advancedcharcoalmeiler114", "advancedcharcoalmeiler114", "advancedcharcoalmeiler114", "advancedcharcoalmeiler114", "advancedcharcoalmeiler114"] } this.loadImages() } getImage(fulltime, layer) { fulltime = Math.round(fulltime / 4) if (this.images[layer].length == 0) return "0" return this.images[layer][(fulltime % this.images[layer].length)] } work() { //Items für ein Pank var requieredCount = 10 if (this.input.countOf(2) >= requieredCount) { if (this.currentwork == this.maxwork) { this.input.take(2, requieredCount, this.factory) for (var i = 0; i < 5; i++) { var item = new Item(4, this.x * 48, this.y * 48) this.factory.items.push(item) item.setDFromDirection(this.direction) } this.dust++ if (this.dust == 4) { var item = new Item(6, this.x * 48, this.y * 48) this.factory.items.push(item) item.setDFromDirection(this.direction) this.dust = 0 } this.currentwork = 0 } else { this.currentwork++ } } else { this.currentwork = 0 } } } class Briquettepress extends Tile { constructor(x, y, factory) { super(x, y, factory) this.maxwork = 96 this.currentwork = 0 this.name = "briquettepress" this.i = 13 this.dust = 0 this.cost = [{ "id": 0, "count": 100000 }] this.texture = { "0": [], "1": ["briquettepress10", "briquettepress11", "briquettepress12", "briquettepress13", "briquettepress14", "briquettepress15", "briquettepress16", "briquettepress17", "briquettepress18", "briquettepress17", "briquettepress16", "briquettepress15", "briquettepress14", "briquettepress13", "briquettepress12", "briquettepress11", "briquettepress10", "briquettepress10", "briquettepress10"] } this.loadImages() } getImage(fulltime, layer) { fulltime = Math.round(fulltime / 4) if (this.images[layer].length == 0) return "0" return this.images[layer][(fulltime % this.images[layer].length)] } work() { //Items für ein Pank var requieredCount = 5 if (this.input.countOf(6) >= requieredCount) { if (this.currentwork == this.maxwork) { this.input.take(6, requieredCount, this.factory) var item = new Item(12, this.x * 48, this.y * 48) this.factory.items.push(item) item.setDFromDirection(this.direction) this.currentwork = 0 } else { this.currentwork++ } } else { this.currentwork = 0 } } } class Cokery extends Tile { constructor(x, y, factory) { super(x, y, factory) this.maxwork = 96 * 10 this.currentwork = 0 this.name = "cokery" this.i = 14 this.dust = 0 this.cost = [{ "id": 0, "count": 60000 }, { "id": 3, "count": 1400 }, { "id": 6, "count": 20 } ] this.texture = { "0": [], "1": ["cokery10", "cokery11", "cokery12", "cokery13"] } this.loadImages() } getImage(fulltime, layer) { fulltime = Math.round(fulltime / 6) if (this.images[layer].length == 0) return "0" return this.images[layer][(fulltime % this.images[layer].length)] } work() { //Items für ein Pank if (this.input.countOf(4) >= 15 && this.input.countOf(12) >= 2) { if (this.currentwork == this.maxwork) { this.input.take(12, 2, this.factory) this.input.take(4, 15, this.factory) for (var i = 0; i < 15; i++) { var item = new Item(11, this.x * 48, this.y * 48) this.factory.items.push(item) item.setDFromDirection(this.direction) } this.currentwork = 0 } else { this.currentwork++ } } else if (this.input.countOf(4) >= 15 && this.input.countOf(11) >= 2) { if (this.currentwork == this.maxwork) { this.input.take(11, 2, this.factory) this.input.take(4, 15, this.factory) for (var i = 0; i < 15; i++) { var item = new Item(11, this.x * 48, this.y * 48) this.factory.items.push(item) item.setDFromDirection(this.direction) } this.currentwork = 0 } else { this.currentwork++ } } else { this.currentwork = 0 } } } class BlastfurnaceLower extends Tile { constructor(x, y, factory) { super(x, y, factory) this.maxwork = 96 * 10 this.currentwork = 0 this.name = "blastfurnacelower" this.i = 16 this.dust = 0 this.cost = [{ "id": 0, "count": 60000 }, { "id": 3, "count": 1400 }, { "id": 6, "count": 20 } ] this.texture = { "0": [], "1": ["blastfurnacelower10"] } this.loadImages() } getImage(fulltime, layer) { fulltime = Math.round(fulltime / 6) if (this.images[layer].length == 0) return "0" return this.images[layer][(fulltime % this.images[layer].length)] } isUpperPartAttached() { switch (this.direction) { case "up": if (this.factory.tiles[this.x - 1][this.y] != undefined && this.factory.tiles[this.x - 1][this.y] != 0) if (this.factory.tiles[this.x - 1][this.y].i == 17) return true; break; case "right": if (this.factory.tiles[this.x][this.y - 1] != undefined && this.factory.tiles[this.x][this.y - 1] != 0) if (this.factory.tiles[this.x][this.y - 1].i == 17) return true; break; case "down": if (this.factory.tiles[this.x + 1][this.y] != undefined && this.factory.tiles[this.x + 1][this.y] != 0) if (this.factory.tiles[this.x + 1][this.y].i = 17) return true; break; case "left": if (this.factory.tiles[this.x][this.y + 1] != undefined && this.factory.tiles[this.x][this.y + 1] != 0) if (this.factory.tiles[this.x][this.y + 1].i == 17) return true; break; default: } } work() { if (this.isUpperPartAttached()) { if (this.input.countOf(16) >= 40 && this.input.countOf(11) >= 10) { if (this.currentwork == this.maxwork) { this.currentwork = 0 this.input.take(16, 40, this.factory) this.input.take(11, 10, this.factory) for (var i = 0; i < 15; i++) { var item = new Item(11, this.x * 48, this.y * 48) this.factory.items.push(item) item.setDFromDirection(this.direction) } } else this.currentwork++ } } } } class BlastfurnaceUpper extends Tile { constructor(x, y, factory) { super(x, y, factory) this.maxwork = 96 * 10 this.currentwork = 0 this.name = "blastfurnaceupper" this.i = 17 this.dust = 0 this.cost = [{ "id": 0, "count": 60000 }, { "id": 3, "count": 1400 }, { "id": 6, "count": 20 } ] this.texture = { "0": [], "1": ["blastfurnaceupper10", "blastfurnaceupper11", "blastfurnaceupper12", "blastfurnaceupper13", "blastfurnaceupper14", "blastfurnaceupper15", "blastfurnaceupper16"] } this.loadImages() } getImage(fulltime, layer) { fulltime = Math.round(fulltime / 6) if (this.images[layer].length == 0) return "0" return this.images[layer][(fulltime % this.images[layer].length)] } work() {} } class Quarry extends Tile { constructor(x, y, factory) { super(x, y, factory) this.maxwork = 96 * 3 this.i = 4 this.currentwork = 0 this.name = "quarry" this.hasNoInventory = true this.cost = [{ "id": 0, "count": 5000 }, { "id": 2, "count": 50 }] this.texture = { "0": [], "1": ["quarry10"] } this.loadImages() } work() { this.currentwork = ((this.currentwork + 1) % this.maxwork) if (this.currentwork == 0) { var item = new Item(3, this.x * 48, this.y * 48) this.factory.items.push(item) item.setDFromDirection(this.direction) } } } class MineralWasher extends Tile { constructor(x, y, factory) { super(x, y, factory) this.maxwork = 48 * 45 this.i = 15 this.currentwork = 0 this.name = "mineralwasher" this.hasNoInventory = true this.lastore = 0 this.cost = [{ "id": 0, "count": 50000 }, { "id": 9, "count": 500 }] this.texture = { "0": [], "1": ["mineralwasher10", "mineralwasher11", "mineralwasher12", "mineralwasher11"] } this.loadImages() } work() { this.currentwork = ((this.currentwork + 1) % this.maxwork) if (this.currentwork == 0) { var goodores = []; for (var i = 0; i < 4; i++) { if (minerals[minerals.nameFromId[this.factory.ores[i]]].depth <= 1) { if (minerals[minerals.nameFromId[this.factory.ores[i]]].oreid != undefined) { goodores.push(minerals[minerals.nameFromId[this.factory.ores[i]]].oreid) } } } if (goodores.length >= 1) { this.lastore = ((this.lastore + 1) % goodores.length) var item = new Item(goodores[this.lastore], this.x * 48, this.y * 48) this.factory.items.push(item) item.setDFromDirection(this.direction) } } } getImage(fulltime, layer) { fulltime = Math.round(fulltime / 6) if (this.images[layer].length == 0) return "0" return this.images[layer][(fulltime % this.images[layer].length)] } } class Collector extends Tile { constructor(x, y, factory) { super(x, y, factory) this.name = "collector" this.hasNoInventory = true this.i = 5 this.cost = [{ "id": 0, "count": 50 }] this.texture = { "0": [], "1": ["collector13", "collector10", "collector11", "collector12", "collector13", "collector13", "collector13"] } this.loadImages() } work() { while (this.input.items.length > 0) { var item = this.input.items.pop() inventory.addItem(item) this.factory.deleteItem(item) } } getImage(fulltime, layer) { fulltime = Math.round(fulltime / 6) if (this.images[layer].length == 0) return "0" return this.images[layer][(fulltime % this.images[layer].length)] } } class Spliter extends Tile { constructor(x, y, factory) { super(x, y, factory) this.name = "spliter" this.hasNoInventory = true this.i = 6 this.odd = true this.cost = [{ "id": 0, "count": 200 }] this.texture = { "0": ["conveyorbelt00", "conveyorbelt01", "conveyorbelt02", "conveyorbelt03", "conveyorbelt04", "conveyorbelt05", "conveyorbelt06"], "1": ["spliter10"] } this.loadImages() } work() { while (this.input.items.length > 0) { var item = this.input.items.pop() var d = "right" if (this.odd) { switch (this.direction) { case "right": d = "down" break; case "down": d = "left" break; case "left": d = "up" break; case "up": d = "right" break; } } else { switch (this.direction) { case "right": d = "up" break; case "down": d = "right" break; case "left": d = "down" break; case "up": d = "left" break; } } item.setDFromDirection(d) this.odd = !this.odd } } } class FilterRight extends Tile { constructor(x, y, factory) { super(x, y, factory) this.name = "filterright" this.hasNoInventory = true this.i = 9 this.filter = 0 this.cost = [{ "id": 0, "count": 50000 }, { "id": 2, "count": 200 }] this.options = [{ "type": "item", "var": "filter" }] this.texture = { "0": ["conveyorbelt00", "conveyorbelt01", "conveyorbelt02", "conveyorbelt03", "conveyorbelt04", "conveyorbelt05", "conveyorbelt06"], "1": ["filterright10"] } this.loadImages() } work() { while (this.input.items.length > 0) { var item = this.input.items.pop() var d = this.direction if (item.id == this.filter) switch (this.direction) { case "right": d = "down" break; case "down": d = "left" break; case "left": d = "up" break; case "up": d = "right" break; } item.setDFromDirection(d) } } } class FilterLeft extends Tile { constructor(x, y, factory) { super(x, y, factory) this.name = "filterleft" this.hasNoInventory = true this.i = 8 this.filter = 0 this.cost = [{ "id": 0, "count": 50000 }, { "id": 2, "count": 200 }] this.options = [{ "type": "item", "var": "filter" }] this.texture = { "0": ["conveyorbelt00", "conveyorbelt01", "conveyorbelt02", "conveyorbelt03", "conveyorbelt04", "conveyorbelt05", "conveyorbelt06"], "1": ["filterleft10"] } this.loadImages() } work() { while (this.input.items.length > 0) { var item = this.input.items.pop() var d = this.direction if (item.id == this.filter) switch (this.direction) { case "right": d = "up" break; case "down": d = "right" break; case "left": d = "down" break; case "up": d = "left" break; } item.setDFromDirection(d) } } } class Warehouse extends Tile { constructor(x, y, factory) { super(x, y, factory) this.name = "warehouse" this.hasNoInventory = true this.maxwork = 48 * 10 this.sellPower = 500 this.i = 7 this.cost = [{ "id": 0, "count": 20000 }] this.pivot = 0 this.toSell = 0 this.options = [{ "type": "item", "var": "toSell" }, { "type": "amount", "var": "pivot" }] this.texture = { "0": [], "1": ["warehouse10"] } this.loadImages() } work() { if (this.toSell != 0) { this.currentwork = ((this.currentwork + 1) % this.maxwork) if (this.currentwork == 0) { var sellAmount = inventory.countOf(this.toSell) - this.pivot if (sellAmount > 0) { sellAmount = Math.min(sellAmount, this.sellPower) if (inventory.take(this.toSell, sellAmount)) money += items[this.toSell].value * sellAmount } } } } } tileClasses.push(Conveyorbelt) //0 tileClasses.push(Treefarm) //1 tileClasses.push(Saw) //2 tileClasses.push(Charcoalmeiler) //3 tileClasses.push(Quarry) //4 tileClasses.push(Collector) //5 tileClasses.push(Spliter) //6 tileClasses.push(Warehouse) //7 tileClasses.push(FilterLeft) //8 tileClasses.push(FilterRight) //9 tileClasses.push(Weaver) //10 tileClasses.push(Papermanufactory) //11 tileClasses.push(AdvancedCharcoalmeiler) //12 tileClasses.push(Briquettepress) //13 tileClasses.push(Cokery) //14 tileClasses.push(MineralWasher) //15 tileClasses.push(BlastfurnaceLower) //16 tileClasses.push(BlastfurnaceUpper) //17