Fixed rotated levers not being rendered correctly

This commit is contained in:
tobspr 2020-08-28 22:25:31 +02:00
parent e04fcceecc
commit 5076c03dab
1 changed files with 44 additions and 51 deletions

View File

@ -1,51 +1,44 @@
import { GameSystemWithFilter } from "../game_system_with_filter"; import { GameSystemWithFilter } from "../game_system_with_filter";
import { LeverComponent } from "../components/lever"; import { LeverComponent } from "../components/lever";
import { BOOL_TRUE_SINGLETON, BOOL_FALSE_SINGLETON } from "../items/boolean_item"; import { BOOL_TRUE_SINGLETON, BOOL_FALSE_SINGLETON } from "../items/boolean_item";
import { MapChunkView } from "../map_chunk_view"; import { MapChunkView } from "../map_chunk_view";
import { globalConfig } from "../../core/config"; import { globalConfig } from "../../core/config";
import { Loader } from "../../core/loader"; import { Loader } from "../../core/loader";
export class LeverSystem extends GameSystemWithFilter { export class LeverSystem extends GameSystemWithFilter {
constructor(root) { constructor(root) {
super(root, [LeverComponent]); super(root, [LeverComponent]);
this.spriteOn = Loader.getSprite("sprites/wires/lever_on.png"); this.spriteOn = Loader.getSprite("sprites/wires/lever_on.png");
this.spriteOff = Loader.getSprite("sprites/buildings/lever.png"); this.spriteOff = Loader.getSprite("sprites/buildings/lever.png");
} }
update() { update() {
for (let i = 0; i < this.allEntities.length; ++i) { for (let i = 0; i < this.allEntities.length; ++i) {
const entity = this.allEntities[i]; const entity = this.allEntities[i];
const leverComp = entity.components.Lever; const leverComp = entity.components.Lever;
const pinsComp = entity.components.WiredPins; const pinsComp = entity.components.WiredPins;
// Simply sync the status to the first slot // Simply sync the status to the first slot
pinsComp.slots[0].value = leverComp.toggled ? BOOL_TRUE_SINGLETON : BOOL_FALSE_SINGLETON; pinsComp.slots[0].value = leverComp.toggled ? BOOL_TRUE_SINGLETON : BOOL_FALSE_SINGLETON;
} }
} }
/** /**
* Draws a given chunk * Draws a given chunk
* @param {import("../../core/draw_utils").DrawParameters} parameters * @param {import("../../core/draw_utils").DrawParameters} parameters
* @param {MapChunkView} chunk * @param {MapChunkView} chunk
*/ */
drawChunk(parameters, chunk) { drawChunk(parameters, chunk) {
const contents = chunk.containedEntitiesByLayer.regular; const contents = chunk.containedEntitiesByLayer.regular;
for (let i = 0; i < contents.length; ++i) { for (let i = 0; i < contents.length; ++i) {
const entity = contents[i]; const entity = contents[i];
const leverComp = entity.components.Lever; const leverComp = entity.components.Lever;
if (leverComp) { if (leverComp) {
const sprite = leverComp.toggled ? this.spriteOn : this.spriteOff; const sprite = leverComp.toggled ? this.spriteOn : this.spriteOff;
const origin = entity.components.StaticMapEntity.origin; entity.components.StaticMapEntity.drawSpriteOnBoundsClipped(parameters, sprite);
sprite.drawCached( }
parameters, }
origin.x * globalConfig.tileSize, }
origin.y * globalConfig.tileSize, }
globalConfig.tileSize,
globalConfig.tileSize
);
}
}
}
}