1
0
mirror of https://github.com/tobspr/shapez.io.git synced 2025-06-13 13:04:03 +00:00

Add chainable splitter system mock

This commit is contained in:
isaisstillalive 2020-06-30 00:25:13 +09:00
parent d11388812a
commit eaa46ec914
2 changed files with 39 additions and 0 deletions

View File

@ -13,6 +13,7 @@ import { HubSystem } from "./systems/hub";
import { StaticMapEntitySystem } from "./systems/static_map_entity"; import { StaticMapEntitySystem } from "./systems/static_map_entity";
import { ItemAcceptorSystem } from "./systems/item_acceptor"; import { ItemAcceptorSystem } from "./systems/item_acceptor";
import { StorageSystem } from "./systems/storage"; import { StorageSystem } from "./systems/storage";
import { ChainableSplitterSystem } from "./systems/chainable_splitter";
import { EnergyGeneratorSystem } from "./systems/energy_generator"; import { EnergyGeneratorSystem } from "./systems/energy_generator";
import { WiredPinsSystem } from "./systems/wired_pins"; import { WiredPinsSystem } from "./systems/wired_pins";
@ -58,6 +59,9 @@ export class GameSystemManager {
/** @type {StorageSystem} */ /** @type {StorageSystem} */
storage: null, storage: null,
/** @type {ChainableSplitterSystem} */
chainableSplitter: null,
/** @type {EnergyGeneratorSystem} */ /** @type {EnergyGeneratorSystem} */
energyGenerator: null, energyGenerator: null,
@ -90,6 +94,8 @@ export class GameSystemManager {
add("storage", StorageSystem); add("storage", StorageSystem);
add("chainableSplitter", ChainableSplitterSystem);
add("itemProcessor", ItemProcessorSystem); add("itemProcessor", ItemProcessorSystem);
add("itemEjector", ItemEjectorSystem); add("itemEjector", ItemEjectorSystem);

View File

@ -0,0 +1,33 @@
import { GameSystemWithFilter } from "../game_system_with_filter";
import { ChainableSplitterComponent } from "../components/chainable_splitter";
import { Entity } from "../entity";
import { DrawParameters } from "../../core/draw_parameters";
import { formatBigNumber, lerp } from "../../core/utils";
import { Loader } from "../../core/loader";
import { enumLayer } from "../root";
export class ChainableSplitterSystem extends GameSystemWithFilter {
constructor(root) {
super(root, [ChainableSplitterComponent]);
}
update() {
for (let i = 0; i < this.allEntities.length; ++i) {
const entity = this.allEntities[i];
const splitterComp = entity.components.ChainableSplitter;
if (splitterComp.inputItem === null) {
continue;
}
const ejectorComp = entity.components.ItemEjector;
const nextSlot = ejectorComp.getFirstFreeSlot(enumLayer.regular);
if (nextSlot !== null) {
if (ejectorComp.tryEject(nextSlot, splitterComp.inputItem)) {
splitterComp.inputItem = null;
}
}
}
}
}