60 lines
No EOL
1.5 KiB
JavaScript
60 lines
No EOL
1.5 KiB
JavaScript
/*
|
|
Code for element combinations.
|
|
TOOD: clean this up too
|
|
*/
|
|
|
|
function duplicate(event) {
|
|
if (event.type != 'tick') return;
|
|
|
|
let cx = event.data[0];
|
|
let cy = event.data[1];
|
|
let chunks = event.canvas;
|
|
|
|
let maxMass = -1;
|
|
let currBlock = chunks.getBlock(cx, cy);
|
|
let dir = [0,0];
|
|
|
|
for (let x = -1; x < 2; x++) {
|
|
for (let y = 1; y >= -1; y--) {
|
|
let blok = chunks.getBlock(cx + x, cy + y);
|
|
|
|
let mass = (blok != -1 && blok) ? mainTiles.tiles[blok].attributes.mass : 0;
|
|
|
|
if (mass > maxMass && blok != currBlock) {
|
|
dir = [x,y];
|
|
maxMass = mass;
|
|
}
|
|
}
|
|
}
|
|
|
|
let offBlock = chunks.getBlock(cx + dir[0], cy + dir[1]);
|
|
let offTemp = chunks.getBlock(cx + dir[0], cy + dir[1], true);
|
|
|
|
if (currBlock == -1 || offBlock == -1 || offBlock == currBlock) return;
|
|
|
|
for (let x = -1; x < 2; x++) {
|
|
for (let y = 1; y >= -1; y--) {
|
|
|
|
let blok = chunks.getBlock(cx + x, cy + y);
|
|
let oldTemp = chunks.getBlock(cx + x, cy + y, true);
|
|
|
|
if (oldTemp < -300) oldTemp = -300;
|
|
|
|
if (blok == currBlock) continue;
|
|
chunks.setBlock(cx + x, cy + y, offBlock);
|
|
chunks.setBlock(cx + x, cy + y, offTemp + oldTemp * 0.01, true);
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
Tile.prototype.duplicate = function () {
|
|
let that = this;
|
|
|
|
that.interactions.push(function (event) {
|
|
duplicate(event)
|
|
});
|
|
|
|
return this;
|
|
} |