UnDo hides a text label that was previously visible on a deck

Vassal v3.6.3

In an upcoming module, I have used Decks to keep a tally of certain blocks. A text label, overlaid across each deck, has been working well as a means of displaying the count:

Each group in this picture, purple counters and the blue, white and red blocks is an individual deck.
The number below the counters and on top of each set of blocks is a count of the form:
<DeckName>_numPieces

All works well, except when a block is removed from one of the “Text Labelled” decks, immediately followed by UnDo. This is the result, using the blue blocks as an example:
image

Removing all blocks from the stack will show the text label (normally blank, but test data shows it is there).

Also, the Text Label for the purple counters is not affected, nor are the other labels if they are re-postioned away from the deck.

This seems to be a bug whereby UnDo does not restore the Text Label to its original position overlaying the deck.

Any thoughts welcome, before I put in the effort to distill a demo module.

As far as I can tell, it is impossible to keep a piece positioned “over” a deck (I tried the same thing for Terraforming Mars, and had to give up and just place the piece with the Text Label counter offset from the deck, instead).

1 Like

Thanks… that has been my experience too, so I was pleasantly surprised to find it working. However, obviously not with UnDo. I think Refresh has a problem with it too. My guess is that these operations make a broad assumption that anything in a deck location is part of the deck. Maybe it has to be that way.

In this case, I can achieve the desired effect using a stack, I think. So I’ll re-work it.

Forgot that Player Hand would separate the stack, so decks would have been easier. Got a stack-based solution working by hiding the actual pieces (invisible layer) and having them stack with the counting piece. (In my design, the pieces are moved to the player mat only for keeping a tally between turns).

If I needed to do this, I would try two things:

  1. Make sure the label piece is not located at exactly the same location as the Deck.
  2. Use Game Piece Layers to ensure the label piece is on a Layer above the Deck.

As far as I could determine when I tried this, there is no way to do number 2–the deck always seem to be in the top layer, so it’s impossible to put anything in a layer above it (only the same layer or below).

Agreeing with @jrwatts; I tried both those things. I’ve found a different solution for my immediate project but if someone feels the need to look into this more deeply, I’d be happy to provide a small demo.