Iris icon indicating copy to clipboard operation
Iris copied to clipboard

Jigsaw max depth fallback system

Open astrsh opened this issue 5 years ago • 1 comments

This issue relates to both VolmitSoftware/IrisPlugin#49 and VolmitSoftware/IrisPlugin#50 in a sense that it has to do with abrupt stops when connectors are not able to place a piece. In this case, it has to do with pieces reaching the max depth and as such are not able to place anything. This occurs when a branch of jigsaw pieces reaches the configured maxDepth configured in the structure, but could also include the maxDepth of a pool if VolmitSoftware/IrisPlugin#49 were to be implemented.

Either a list of pools could be specified, for which a connector can attempt to place once max depth has been reached (separate from that outlined in VolmitSoftware/IrisPlugin#49), OR it could simply be handled by just one fallback pool.

As an example, it could be configured like so:

    "connectors": [
        {
            "targetName": "*",
            "innerConnector": false,
            "rotateConnector": false,
            "name": "",
            "pools": [
                "stronghold/paths"
            ],
            "maxDepthPools": [
                "stronghold/rooms"
            ],
            "fallbackPools": [
                "stronghold/paths-fallback"
            ],
            "position": {
                "x": -3,
                "y": -5,
                "z": 0
            },
            "direction": "WEST_NEGATIVE_X"
        },

With the example above in mind, here are a couple potential outcomes and how they would be resolved with this:

Connector attempts to place piece but max depth is reached. Connector then attempts to place a piece from maxDepthPools and succeeds. Now instead of there being a clean cut in the structure, there would be a piece from "stronghold/rooms" that would terminate a path, (or start a new path with a different pool if it was a pool max depth and the piece was recursive).

Another scenario:

Connector attempts to place piece but max depth is reached. Connector then attempts to place a piece from maxDepthPools but the piece collides with another. Connector is unable to place anything successfully so it force places a piece from "stronghold/paths-fallback" defined under "fallbackPools", effectively capping off the end of the path.

astrsh avatar Jan 13 '21 16:01 astrsh

image

astrsh avatar Jan 13 '21 16:01 astrsh