mirror of
https://github.com/tobspr/shapez.io.git
synced 2024-10-27 20:34:29 +00:00
61 lines
2.0 KiB
JavaScript
61 lines
2.0 KiB
JavaScript
import { globalConfig } from "../../core/config";
|
|
import { DrawParameters } from "../../core/draw_parameters";
|
|
import { WiredPinsComponent, enumPinSlotType } from "../components/wired_pins";
|
|
import { Entity } from "../entity";
|
|
import { GameSystemWithFilter } from "../game_system_with_filter";
|
|
import { MapChunkView } from "../map_chunk_view";
|
|
import { Loader } from "../../core/loader";
|
|
|
|
export class WiredPinsSystem extends GameSystemWithFilter {
|
|
constructor(root) {
|
|
super(root, [WiredPinsComponent]);
|
|
|
|
this.pinSprites = {
|
|
[enumPinSlotType.positiveEnergyEjector]: Loader.getSprite("sprites/wires/pin_positive_eject.png"),
|
|
[enumPinSlotType.positiveEnergyAcceptor]: Loader.getSprite(
|
|
"sprites/wires/pin_positive_accept.png"
|
|
),
|
|
[enumPinSlotType.negativeEnergyEjector]: Loader.getSprite("sprites/wires/pin_negative_eject.png"),
|
|
[enumPinSlotType.negativeEnergyAcceptor]: Loader.getSprite(
|
|
"sprites/wires/pin_negative_accept.png"
|
|
),
|
|
};
|
|
}
|
|
|
|
update() {
|
|
// TODO
|
|
}
|
|
|
|
/**
|
|
* Draws the given layer
|
|
* @param {DrawParameters} parameters
|
|
*/
|
|
draw(parameters) {
|
|
this.forEachMatchingEntityOnScreen(parameters, this.drawSingleEntity.bind(this));
|
|
}
|
|
|
|
/**
|
|
* Draws a given chunk
|
|
* @param {DrawParameters} parameters
|
|
* @param {Entity} entity
|
|
*/
|
|
drawSingleEntity(parameters, entity) {
|
|
const staticComp = entity.components.StaticMapEntity;
|
|
const slots = entity.components.WiredPins.slots;
|
|
|
|
for (let i = 0; i < slots.length; ++i) {
|
|
const slot = slots[i];
|
|
const tile = staticComp.localTileToWorld(slot.pos);
|
|
|
|
const worldPos = tile.toWorldSpaceCenterOfTile();
|
|
|
|
this.pinSprites[slot.type].drawCachedCentered(
|
|
parameters,
|
|
worldPos.x,
|
|
worldPos.y,
|
|
globalConfig.tileSize
|
|
);
|
|
}
|
|
}
|
|
}
|