ID:275584
 
I can't find icon cutters, and it would come in really handy. I looked through utilities, and BYONDscape; nowhere to be found. I also did some searching for it but all I got was pages and pages of abandoned icon chatting/trading games. Is Icon Cutters even out there any longer?

Resonating Light
Resonating_Light wrote:
I can't find icon cutters, and it would come in really handy. I looked through utilities, and BYONDscape; nowhere to be found. I also did some searching for it but all I got was pages and pages of abandoned icon chatting/trading games. Is Icon Cutters even out there any longer?

Resonating Light

It's called IconCutter. And yes, it is.

I've worked somewhat on an updated version with a lot more features, and more join types (including the odd 161-state joining and 256-state joining) available. It needs more work, and it's apparently going to need version 340 as well to get around some bugs.

Lummox JR
In response to Lummox JR
Thanks.

One question: What is 161 state joining used for?

Resonating Light
In response to Resonating_Light
Resonating_Light wrote:
Thanks.

One question: What is 161 state joining used for?

I'm glad you asked!

161-state joining is a hybrid I came up with while working on the TurfLayers demo. In this form of joining, you may actually want a corner to be considered "filled" even if both sides aren't. For example, consider the following layout:
..#
S.#
~~~
In this example, say . is the middle elevation, # is a higher elevation, and ~ is lower. S is the stairs. Now assume you're making a railing along the edges of . using autojoining icons, and you want the railing along the south edge to continue straight on into the higher elevation of #. But you also want that railing to stop at a point just before the stairs. So the railing itself, enlarged, looks like this:
...
...
o--
161-state joining does this.

In 161-state joining, you do the usual check for fillings that you would do for 47-state joining. In this case "full" would be anything at at least the same elevation, or stairs, and "empty" would be anything at a lower elevation. To go back to that railing, the higher/same/stair elevations are to the north, northeast, east, west, and northwest. Using the bit flags from 47-state joining that makes a number, 199. In the railing case, you'd take the stairs to the west and also count either side of those (northwest and southwest) as filled, so that 199 becomes 231.

For 161-state joining, a filled corner remains filled if either adjacent corner is filled. (In 47-state joining, it must be both.) Therefore while 47-state joining would do this:
flags &= 85 | ((flags << 1) & ((flags >> 1) | (flags << 7)))
...161-state joining does this:
flags &= 85 | ((flags << 1) | (flags >> 1) | (flags << 7))
There's also a much simpler example.

My first foray into 47-state joining was my first BYOND game attempt, Goop. With 161-state joining, inset corners can look a little too square:
.##
###
##.
The icons in this example would have straight edges where they border the empty (.) tiles, and those straight edges would merge with the rounded, but not rounded enough, corners in the center icon. Because the turning radius for that corner would be quite small, the result would look more like a rounded box.

In 161-state joining, however, the side icons bordering . all look different. The inset corner may only show a little of the curve now, with most of the curve being handled by the adjacent icons. For example to the left:
..#
###
###
Imagine the center icon's north border. It would be flat to the west, but it could sweep up gradually toward the northeast in a very wide arc. The arc would keep going through the inset corner in the next icon, and then would finish on a similar tile to the northeast. 161-state joining makes this possible.

Sounds like it's time for me to write another article.

Lummox JR
In response to Lummox JR
It took reading over that several times, but I got it! It sounds real nice. And as for writing an article, I agree.

Resonating Light