diff --git a/mods/hexagon_test.js b/mods/hexagon_test.js new file mode 100644 index 00000000..600c8307 --- /dev/null +++ b/mods/hexagon_test.js @@ -0,0 +1,45 @@ +function drawHexagon(ctx, color, x, y, scale=1, opacity=1) { + const size = (pixelSize * scale) * 0.63; + const height = Math.sqrt(3) * size; // Height of the hexagon + + if (color) { ctx.fillStyle = color; } + if (ctx.globalAlpha !== opacity) { ctx.globalAlpha = opacity; } + + // Convert canvas coordinates + const centerX = canvasCoord(x); + const centerY = canvasCoord(y); + + ctx.beginPath(); + ctx.moveTo(centerX + size, centerY); + ctx.lineTo(centerX + size / 2, centerY + height / 2); + ctx.lineTo(centerX - size / 2, centerY + height / 2); + ctx.lineTo(centerX - size, centerY); + ctx.lineTo(centerX - size / 2, centerY - height / 2); + ctx.lineTo(centerX + size / 2, centerY - height / 2); + ctx.closePath(); + + ctx.fill(); +} + +// Hexagon view +viewInfo[8] = { + name: "", + effects: true, + colorEffects: true, + pixel: function(pixel, ctx) { + var a = (settings.textures !== 0) ? pixel.alpha : undefined; + const offsetY = ((pixel.x % 2) * 0.5); // Offset for staggered rows + + if (((elements[pixel.element].isGas && elements[pixel.element].glow !== false) || elements[pixel.element].glow || pixel.glow) && pixel.glow !== false) { + drawPlus(ctx, pixel.color, pixel.x, pixel.y + offsetY, undefined, a); + } else { + drawHexagon(ctx, pixel.color, pixel.x, pixel.y + offsetY, undefined, a); + } + + if (pixel.charge && view !== 2) { // Yellow glow on charge + if (!elements[pixel.element].colorOn) { + drawHexagon(ctx, "rgba(255,255,0,0.5)", pixel.x, pixel.y + offsetY); + } + } + } +};