Text field stuck

So, I’m doing a module that has a dynamic chart that updates as various things change in the game. So it has a second map, with At-Start stacks that just contain pieces with text label traits, and properties to control them. The text labels are all offset from the default 0.0 position to be where they need to be in the chart.

I’ve got well over two dozen text labels where this is working correctly.

I’ve got one piece (brand new, and the last set to do—of course) where not only does the text not appear where it should (by comparing the offsets to all the others), but I can’t get it to move, no matter what offsets I use.

Now, I did recently switch from 3.5.3 to 3.5.4-SNAPSHOT-cbfbe8a9e. However, after that, I created a new piece, and plugged in text labels, adjusted things, etc., just fine. It was the second piece I did that had trouble.

I also went back to 3.5.3 to delete the offending piece and re-do it. Had the exact same problem with it stuck in the exact same place.

Before I try to reproduce it in a sample module (which seems unlikely with all the other perfectly fine traits…), or try to point out just where in a bit complex module writing the trouble is, I first want to know if anything like this has been seen before, and if anyone has an idea of what the trouble is?

Okay, this is even stranger:

This is the chart I was talking about in action. By the coordinates given, there should be a blue ‘3’ in the move column for Zombies. Instead it is overlapping the “2” for Necromancer movement. (Note that most of the blue numbers are part of the image, but not those two; all of the red and black numbers are other text fields.) Nothing I do to the settings of that text field gets it to move anywhere, much less where I want it.

However… there’s really three text fields associated with those two displays (because of three different colors). In the event that something pushes up one necromancer’s movement rate, that “2” becomes a “/”, and separate red and black values turn on. When that happens:

The misplaced field suddenly moves to overlap the formerly invisible/blank black field instead of the middle blue one.

I have zero idea on this behavior. Again, I can provide this module and point to where this all is, but I have no idea how I’d replicate it in a simpler one.

I guess please upload the module and tell us where to look, and we can see if we see anything wrong.

Download here:

To see the problem, start a game, and open the “Charts” window, and you’ll see the overlapping text. If you want to see the rest of the chart populate, advance the turn tracker, but that’s not needed here.

In the editor, go to
Charts → Charts → Abilities → Abilities → Statistics

That last is an At-Start Stack with a list of various pieces that have the text fields. The problem one is “Zombie Move” and the “Base Move” text label is the one that shows at all times. The various other traits are working, and it displays what it’s supposed to when it’s supposed to, it just won’t show it in the correct place.

The similar one, which is where it belongs, and that the first one seems to be ‘locked’ to is “Necromancer Move”, just above it on the list.

There’s two other text traits on them, which have the same trouble, but lets keep the diagnosis to that one (probably all the same problem anyway).

The Text Label pieces that aren’t positioning the way you want are missing a “Does Not Stack” trait – since you are placing all of these with a single “At-Start Stack”, if you don’t put “Does Not Stack” in a particular piece, then VASSAL runs its “create a stack of pieces” logic which ends up repositioning things from where you placed them.

The horizontal location didn’t look “perfect” but the numbers were now appearing on their correct rows and I assume that’s something you can straighten out easily once you have the pieces not “sticking together”.

The other benefit of Does-Not-Stack is of course that it can be used to prevent the players from accidentally dragging the text items around :slight_smile:



In that window, I have “Disable Stacking” checked in the stacking options.

Also, the idea is everything is… ‘stuck together’. Almost everything is in the same at-start stack at 0,0. Then the text labels have offsets that cause them to display where I want them, and since there’s no actual graphics for the pieces, there’s nothing for a user to select and move. This is working for everything except that last piece. Go forward once on the turn tracker, and you’ll see everything else populate on that chart, exactly where it should be, and none of them have Does Not Stack traits.

Testing… indeed, using Does Not Stack does fix the trouble. I’d still like to know why one piece needs it done differently… :confused:

Most of your other pieces already had Does Not Stack properties, which is why it sort of stuck out when I was looking for “what makes these couple of fields work differently”.

Also some other pieces might not be getting grouped into a “stack” because they are far-enough away from each other.

When you use “At-Start Stack” you have to remember it was originally designed for plopping wargame pieces on a board – you’re using it to make a cool chart which is fine, it just requires being sure to turn off some of the legacy things like auto-stacking on pieces.

I suppose At-Start Stack could have been designed to automatically ignore stacking when in a “Disable Stacking” window. Although 5-gets-you-10 the option didn’t exist when it was originally designed :slight_smile:

For that matter if I were designing VASSAL today I probably would have the whole stacking thing default to “off”, and you would add a “DOES Stack” trait to pieces you wanted to have form stacks!

Of course changing some of those things now would almost certainly “break” modules that turn out to already depend on the old behavior, which is the reason we frequently suffer along with “now-unfortunate-seeming” decisions :slight_smile:

Anyway, hopefully that gets you going!


No problems with that!

Okay, yes, the others do have it. I don’t remember putting it in there. :stuck_out_tongue: