mirror of
https://github.com/tobspr/shapez.io.git
synced 2026-03-02 03:39:21 +00:00
Initial take on wires
This commit is contained in:
68
src/js/game/items/negative_energy_item.js
Normal file
68
src/js/game/items/negative_energy_item.js
Normal file
@@ -0,0 +1,68 @@
|
||||
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 = size + "/" + dpi;
|
||||
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.fillStyle = "#1d2725";
|
||||
context.strokeStyle = "#eee";
|
||||
context.lineWidth = 1;
|
||||
context.beginCircle(0, 0, 5);
|
||||
context.fill();
|
||||
context.stroke();
|
||||
}
|
||||
}
|
||||
|
||||
export const POSITIVE_ENERGY_ITEM_SINGLETON = new NegativeEnergyItem();
|
||||
68
src/js/game/items/positive_energy_item.js
Normal file
68
src/js/game/items/positive_energy_item.js
Normal file
@@ -0,0 +1,68 @@
|
||||
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 PositiveEnergyItem extends BaseItem {
|
||||
static getId() {
|
||||
return "positive_energy";
|
||||
}
|
||||
|
||||
static getSchema() {
|
||||
return types.uint;
|
||||
}
|
||||
|
||||
serialize() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
deserialize(data) {}
|
||||
|
||||
getItemType() {
|
||||
return enumItemType.positiveEnergy;
|
||||
}
|
||||
|
||||
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 = size + "/" + dpi;
|
||||
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.fillStyle = "#e84a4a";
|
||||
context.strokeStyle = "#eee";
|
||||
context.lineWidth = 1;
|
||||
context.beginCircle(0, 0, 5);
|
||||
context.fill();
|
||||
context.stroke();
|
||||
}
|
||||
}
|
||||
|
||||
export const POSITIVE_ENERGY_ITEM_SINGLETON = new PositiveEnergyItem();
|
||||
Reference in New Issue
Block a user