mirror of
https://github.com/tobspr/shapez.io.git
synced 2024-10-27 20:34:29 +00:00
Fix wires tunnel bug
This commit is contained in:
parent
fd7ae79971
commit
f69af63aa3
@ -367,6 +367,18 @@
|
||||
<key type="filename">sprites/buildings/wire-split.png</key>
|
||||
<key type="filename">sprites/buildings/wire-turn.png</key>
|
||||
<key type="filename">sprites/buildings/wire.png</key>
|
||||
<key type="filename">sprites/wires/sets/color-cross.png</key>
|
||||
<key type="filename">sprites/wires/sets/color-split.png</key>
|
||||
<key type="filename">sprites/wires/sets/color-turn.png</key>
|
||||
<key type="filename">sprites/wires/sets/color.png</key>
|
||||
<key type="filename">sprites/wires/sets/conflict-cross.png</key>
|
||||
<key type="filename">sprites/wires/sets/conflict-split.png</key>
|
||||
<key type="filename">sprites/wires/sets/conflict-turn.png</key>
|
||||
<key type="filename">sprites/wires/sets/conflict.png</key>
|
||||
<key type="filename">sprites/wires/sets/shape-cross.png</key>
|
||||
<key type="filename">sprites/wires/sets/shape-split.png</key>
|
||||
<key type="filename">sprites/wires/sets/shape-turn.png</key>
|
||||
<key type="filename">sprites/wires/sets/shape.png</key>
|
||||
<struct type="IndividualSpriteSettings">
|
||||
<key>pivotPoint</key>
|
||||
<point_f>0.5,0.5</point_f>
|
||||
@ -382,6 +394,11 @@
|
||||
<false/>
|
||||
</struct>
|
||||
<key type="filename">sprites/blueprints/constant_signal.png</key>
|
||||
<key type="filename">sprites/blueprints/lever.png</key>
|
||||
<key type="filename">sprites/blueprints/logic_gate-not.png</key>
|
||||
<key type="filename">sprites/blueprints/logic_gate-or.png</key>
|
||||
<key type="filename">sprites/blueprints/logic_gate-transistor.png</key>
|
||||
<key type="filename">sprites/blueprints/logic_gate-xor.png</key>
|
||||
<key type="filename">sprites/blueprints/logic_gate.png</key>
|
||||
<key type="filename">sprites/blueprints/miner-chainable.png</key>
|
||||
<key type="filename">sprites/blueprints/miner.png</key>
|
||||
@ -395,7 +412,13 @@
|
||||
<key type="filename">sprites/blueprints/underground_belt_entry.png</key>
|
||||
<key type="filename">sprites/blueprints/underground_belt_exit-tier2.png</key>
|
||||
<key type="filename">sprites/blueprints/underground_belt_exit.png</key>
|
||||
<key type="filename">sprites/blueprints/wire_tunnel.png</key>
|
||||
<key type="filename">sprites/buildings/constant_signal.png</key>
|
||||
<key type="filename">sprites/buildings/lever.png</key>
|
||||
<key type="filename">sprites/buildings/logic_gate-not.png</key>
|
||||
<key type="filename">sprites/buildings/logic_gate-or.png</key>
|
||||
<key type="filename">sprites/buildings/logic_gate-transistor.png</key>
|
||||
<key type="filename">sprites/buildings/logic_gate-xor.png</key>
|
||||
<key type="filename">sprites/buildings/logic_gate.png</key>
|
||||
<key type="filename">sprites/buildings/miner-chainable.png</key>
|
||||
<key type="filename">sprites/buildings/rotater-ccw.png</key>
|
||||
@ -406,6 +429,8 @@
|
||||
<key type="filename">sprites/buildings/underground_belt_entry.png</key>
|
||||
<key type="filename">sprites/buildings/underground_belt_exit-tier2.png</key>
|
||||
<key type="filename">sprites/buildings/underground_belt_exit.png</key>
|
||||
<key type="filename">sprites/buildings/wire_tunnel.png</key>
|
||||
<key type="filename">sprites/wires/lever_on.png</key>
|
||||
<struct type="IndividualSpriteSettings">
|
||||
<key>pivotPoint</key>
|
||||
<point_f>0.5,0.5</point_f>
|
||||
@ -439,11 +464,13 @@
|
||||
<false/>
|
||||
</struct>
|
||||
<key type="filename">sprites/blueprints/cutter.png</key>
|
||||
<key type="filename">sprites/blueprints/filter.png</key>
|
||||
<key type="filename">sprites/blueprints/mixer.png</key>
|
||||
<key type="filename">sprites/blueprints/painter-mirrored.png</key>
|
||||
<key type="filename">sprites/blueprints/painter.png</key>
|
||||
<key type="filename">sprites/blueprints/splitter.png</key>
|
||||
<key type="filename">sprites/blueprints/stacker.png</key>
|
||||
<key type="filename">sprites/buildings/filter.png</key>
|
||||
<key type="filename">sprites/buildings/painter-mirrored.png</key>
|
||||
<struct type="IndividualSpriteSettings">
|
||||
<key>pivotPoint</key>
|
||||
|
@ -24,7 +24,7 @@ const logger = createLogger("wires");
|
||||
|
||||
let networkUidCounter = 0;
|
||||
|
||||
const VERBOSE_WIRES = false;
|
||||
const VERBOSE_WIRES = G_IS_DEV && false;
|
||||
|
||||
export class WireNetwork {
|
||||
constructor() {
|
||||
@ -319,11 +319,15 @@ export class WireSystem extends GameSystemWithFilter {
|
||||
VERBOSE_WIRES &&
|
||||
logger.log(" Searching for new targets at", tile.toString(), "and d=", directions);
|
||||
|
||||
// Go over all directions we should search for
|
||||
for (let i = 0; i < directions.length; ++i) {
|
||||
const direction = directions[i];
|
||||
const offset = enumDirectionToVector[direction];
|
||||
const searchTile = tile.add(offset);
|
||||
|
||||
// Store which tunnels we already visited to avoid infinite loops
|
||||
const visitedTunnels = new Set();
|
||||
|
||||
const contents = this.root.map.getLayersContentsMultipleXY(searchTile.x, searchTile.y);
|
||||
for (let k = 0; k < contents.length; ++k) {
|
||||
const entity = contents[k];
|
||||
@ -359,19 +363,32 @@ export class WireSystem extends GameSystemWithFilter {
|
||||
continue;
|
||||
}
|
||||
|
||||
result.push({
|
||||
entity,
|
||||
slot,
|
||||
});
|
||||
if (!slot.linkedNetwork) {
|
||||
result.push({
|
||||
entity,
|
||||
slot,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Check if its a tunnel, if so, go to the forwarded item
|
||||
if (entity.components.WireTunnel) {
|
||||
const forwardedTile = searchTile.add(offset);
|
||||
contents.push(
|
||||
...this.root.map.getLayersContentsMultipleXY(forwardedTile.x, forwardedTile.y)
|
||||
);
|
||||
if (!visitedTunnels.has(entity.uid)) {
|
||||
const forwardedTile = entity.components.StaticMapEntity.origin.add(offset);
|
||||
logger.log(
|
||||
" Found tunnel",
|
||||
entity.uid,
|
||||
"at",
|
||||
searchTile,
|
||||
"-> forwarding to",
|
||||
forwardedTile
|
||||
);
|
||||
contents.push(
|
||||
...this.root.map.getLayersContentsMultipleXY(forwardedTile.x, forwardedTile.y)
|
||||
);
|
||||
visitedTunnels.add(entity.uid);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -605,8 +622,6 @@ export class WireSystem extends GameSystemWithFilter {
|
||||
return;
|
||||
}
|
||||
|
||||
logger.log("Updating surrounding wire placement");
|
||||
|
||||
const metaWire = gMetaBuildingRegistry.findByClass(MetaWireBuilding);
|
||||
|
||||
// Compute affected area
|
||||
|
Loading…
Reference in New Issue
Block a user