1
0
mirror of https://github.com/tobspr/shapez.io.git synced 2024-10-27 20:34:29 +00:00
tobspr_shapez.io/src/js/game/items/negative_energy_item.js

67 lines
1.8 KiB
JavaScript
Raw Normal View History

2020-06-28 17:34:10 +00:00
import { globalConfig } from "../../core/config";
import { smoothenDpi } from "../../core/dpi_manager";
import { DrawParameters } from "../../core/draw_parameters";
import { types } from "../../savegame/serialization";
import { BaseItem, enumItemType } from "../base_item";
export class NegativeEnergyItem extends BaseItem {
static getId() {
return "negative_energy";
}
static getSchema() {
return types.uint;
}
serialize() {
return 0;
}
deserialize(data) {}
getItemType() {
return enumItemType.negativeEnergy;
}
constructor() {
super();
this.bufferGenerator = null;
}
/**
* @param {number} x
* @param {number} y
* @param {number} size
* @param {DrawParameters} parameters
*/
draw(x, y, parameters, size = 12) {
if (!this.bufferGenerator) {
this.bufferGenerator = this.internalGenerateBuffer.bind(this);
}
const dpi = smoothenDpi(globalConfig.shapesSharpness * parameters.zoomLevel);
const key = "pos:" + size + "/" + dpi;
2020-06-28 17:34:10 +00:00
const canvas = parameters.root.buffers.getForKey(key, "", size, size, dpi, this.bufferGenerator);
parameters.context.drawImage(canvas, x - size / 2, y - size / 2, size, size);
}
/**
* @param {HTMLCanvasElement} canvas
* @param {CanvasRenderingContext2D} context
* @param {number} w
* @param {number} h
* @param {number} dpi
*/
internalGenerateBuffer(canvas, context, w, h, dpi) {
context.translate((w * dpi) / 2, (h * dpi) / 2);
context.scale((dpi * w) / 12, (dpi * h) / 12);
context.strokeStyle = "#eee";
context.lineWidth = 2;
context.beginCircle(0, 0, 4);
2020-06-28 17:34:10 +00:00
context.stroke();
}
}
export const NEGATIVE_ENERGY_ITEM_SINGLETON = new NegativeEnergyItem();