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-split.png</key>
|
||||||
<key type="filename">sprites/buildings/wire-turn.png</key>
|
<key type="filename">sprites/buildings/wire-turn.png</key>
|
||||||
<key type="filename">sprites/buildings/wire.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">
|
<struct type="IndividualSpriteSettings">
|
||||||
<key>pivotPoint</key>
|
<key>pivotPoint</key>
|
||||||
<point_f>0.5,0.5</point_f>
|
<point_f>0.5,0.5</point_f>
|
||||||
@ -382,6 +394,11 @@
|
|||||||
<false/>
|
<false/>
|
||||||
</struct>
|
</struct>
|
||||||
<key type="filename">sprites/blueprints/constant_signal.png</key>
|
<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/logic_gate.png</key>
|
||||||
<key type="filename">sprites/blueprints/miner-chainable.png</key>
|
<key type="filename">sprites/blueprints/miner-chainable.png</key>
|
||||||
<key type="filename">sprites/blueprints/miner.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_entry.png</key>
|
||||||
<key type="filename">sprites/blueprints/underground_belt_exit-tier2.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/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/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/logic_gate.png</key>
|
||||||
<key type="filename">sprites/buildings/miner-chainable.png</key>
|
<key type="filename">sprites/buildings/miner-chainable.png</key>
|
||||||
<key type="filename">sprites/buildings/rotater-ccw.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_entry.png</key>
|
||||||
<key type="filename">sprites/buildings/underground_belt_exit-tier2.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/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">
|
<struct type="IndividualSpriteSettings">
|
||||||
<key>pivotPoint</key>
|
<key>pivotPoint</key>
|
||||||
<point_f>0.5,0.5</point_f>
|
<point_f>0.5,0.5</point_f>
|
||||||
@ -439,11 +464,13 @@
|
|||||||
<false/>
|
<false/>
|
||||||
</struct>
|
</struct>
|
||||||
<key type="filename">sprites/blueprints/cutter.png</key>
|
<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/mixer.png</key>
|
||||||
<key type="filename">sprites/blueprints/painter-mirrored.png</key>
|
<key type="filename">sprites/blueprints/painter-mirrored.png</key>
|
||||||
<key type="filename">sprites/blueprints/painter.png</key>
|
<key type="filename">sprites/blueprints/painter.png</key>
|
||||||
<key type="filename">sprites/blueprints/splitter.png</key>
|
<key type="filename">sprites/blueprints/splitter.png</key>
|
||||||
<key type="filename">sprites/blueprints/stacker.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>
|
<key type="filename">sprites/buildings/painter-mirrored.png</key>
|
||||||
<struct type="IndividualSpriteSettings">
|
<struct type="IndividualSpriteSettings">
|
||||||
<key>pivotPoint</key>
|
<key>pivotPoint</key>
|
||||||
|
@ -24,7 +24,7 @@ const logger = createLogger("wires");
|
|||||||
|
|
||||||
let networkUidCounter = 0;
|
let networkUidCounter = 0;
|
||||||
|
|
||||||
const VERBOSE_WIRES = false;
|
const VERBOSE_WIRES = G_IS_DEV && false;
|
||||||
|
|
||||||
export class WireNetwork {
|
export class WireNetwork {
|
||||||
constructor() {
|
constructor() {
|
||||||
@ -319,11 +319,15 @@ export class WireSystem extends GameSystemWithFilter {
|
|||||||
VERBOSE_WIRES &&
|
VERBOSE_WIRES &&
|
||||||
logger.log(" Searching for new targets at", tile.toString(), "and d=", directions);
|
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) {
|
for (let i = 0; i < directions.length; ++i) {
|
||||||
const direction = directions[i];
|
const direction = directions[i];
|
||||||
const offset = enumDirectionToVector[direction];
|
const offset = enumDirectionToVector[direction];
|
||||||
const searchTile = tile.add(offset);
|
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);
|
const contents = this.root.map.getLayersContentsMultipleXY(searchTile.x, searchTile.y);
|
||||||
for (let k = 0; k < contents.length; ++k) {
|
for (let k = 0; k < contents.length; ++k) {
|
||||||
const entity = contents[k];
|
const entity = contents[k];
|
||||||
@ -359,19 +363,32 @@ export class WireSystem extends GameSystemWithFilter {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!slot.linkedNetwork) {
|
||||||
result.push({
|
result.push({
|
||||||
entity,
|
entity,
|
||||||
slot,
|
slot,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Check if its a tunnel, if so, go to the forwarded item
|
// Check if its a tunnel, if so, go to the forwarded item
|
||||||
if (entity.components.WireTunnel) {
|
if (entity.components.WireTunnel) {
|
||||||
const forwardedTile = searchTile.add(offset);
|
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(
|
contents.push(
|
||||||
...this.root.map.getLayersContentsMultipleXY(forwardedTile.x, forwardedTile.y)
|
...this.root.map.getLayersContentsMultipleXY(forwardedTile.x, forwardedTile.y)
|
||||||
);
|
);
|
||||||
|
visitedTunnels.add(entity.uid);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -605,8 +622,6 @@ export class WireSystem extends GameSystemWithFilter {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.log("Updating surrounding wire placement");
|
|
||||||
|
|
||||||
const metaWire = gMetaBuildingRegistry.findByClass(MetaWireBuilding);
|
const metaWire = gMetaBuildingRegistry.findByClass(MetaWireBuilding);
|
||||||
|
|
||||||
// Compute affected area
|
// Compute affected area
|
||||||
|
Loading…
Reference in New Issue
Block a user