Module Developers - please help us test new Chatter!

I’m happy to report that the new Chatter is moving down the track for possible inclusion in Vassal Proper! In that vein could I please enlist some of you folks to give a “Test Vassal Build” a try? It’s part of the 3.3.1 line, so it may have some of the same problems (e.g. Mac context menus) that are currently being worked on with that, but the point of this is to test the new chatter.

Here’s how to test:

  1. Download and install the appropriate test build below. Be sure to pick “CUSTOM” install so that you can keep your “normal” versions of Vassal. Be sure to probably have it make you a “shortcut” or whatever so that you can launch the new version.
    Windows: http://www.vassalengine.org/~uckelman/tmp/VASSAL-3.3.1-265-g2e4bd1ee-pr34-windows.exe
    Mac: http://www.vassalengine.org/~uckelman/tmp/VASSAL-3.3.1-265-g2e4bd1ee-pr34-macosx.dmg
    Linux: http://www.vassalengine.org/~uckelman/tmp/VASSAL-3.3.1-265-g2e4bd1ee-pr34-linux.tar.bz2
    Other: http://www.vassalengine.org/~uckelman/tmp/VASSAL-3.3.1-265-g2e4bd1ee-pr34-other.zip
  2. Also optionally download this test module:
    https://www.brianreynolds.com/files/PoGChatterTest.vmod
    (it’s a special version of Paths of Glory – don’t use your normal version even if you already have it, because that version has a “custom class” Chatter which will conflict.
  3. Close out of all your other Vassal sessions
  4. Start the “new special version” of Vassal and open the test module up (pick any map, any player side, to start a game)
  5. Optimally, go to preferences, the “Chat” section, and uncheck the bottom checkbox about disabling HTML (the “compatibility” option that allows old modules to ignore all this new stuff)

Demo things to try out:
(1) Roll some dice and check out the display of the numbers!
(2) Drag some armies around on the map – notice the italics!
(3) Drag some of the little blue markers around (near the middle-top of the map). Notice the green text!
(4) Select some armies and hit “Ctrl+A”. Notice the bold text!
(5) There are other colors and things that get displayed e.g. if you gain/lose Victory points, but the above can be tried out without any need to “understand Paths of Glory”.
(6) NOTE - if you aren’t seeing colors/bold/italics, make sure you’re actually running the right test version (it’s easy to end up running your regular version of Vassal 3-2-17 or 3-3-1 by accident, especially if you didn’t fully exit Vassal). You can use the “About Vassal” box on the Help menu to verify you’re running the right version.

If you’d like to try it in your OWN module(s):
(1) If you’re going to do some sample HTML text edits in your module, be sure to back it up first, because if you save a new version of it under this test Vassal, it might not be happy when opened with “normal Vassal” later.
(2) Make sure you disable any earlier custom-chatter class you got from me – it will not play nicely with the new one.
(3) Load your module (probably initially “for Edit”) in the special version of Vassal
(4) Go to Preferences, to the Chat tab, and make sure you have the bottom Checkbox UNCHECKED.
(5) Put some Report traits in your units (or edit the ones you have)
(6) Have the first character be ! to make the text green. First character ? makes almost-red. First character ~ makes bright red. First character ` makes purple. (You can change what the colors actually are on your preferences page)
(7) You can put HTML tags in your report text, like < b >Bold< /b > and < i >Italic< /i > text. Likewise things like < img > tags – you can check the dice rolling bits of the test module if you want to examine that. I’ve put extra spaces before/after the angle brackets so that this site won’t interpret them as HTML, but you’ll of course not want that.

Please give feedback and especially report any problems!

Brian

Windows: http://www.vassalengine.org/~uckelman/tmp/VASSAL-3.3.1-265-g2e4bd1ee-pr34-windows.exe
Mac: http://www.vassalengine.org/~uckelman/tmp/VASSAL-3.3.1-265-g2e4bd1ee-pr34-macosx.dmg
Linux: http://www.vassalengine.org/~uckelman/tmp/VASSAL-3.3.1-265-g2e4bd1ee-pr34-linux.tar.bz2
Other: http://www.vassalengine.org/~uckelman/tmp/VASSAL-3.3.1-265-g2e4bd1ee-pr34-other.zip

I’ll install this sometime this week and give you feedback.

Yay, thanks much! Let us know.

It will still be a day or two before I start testing Chatter but just curious if you’ve implemented some way to force or prevent line breaks

. I’ve had to resort to all sorts of trickery i.e. storing text fragments as Global Properties then concatenating a trainwreck of blank and populated text strings to construct a report that really merits only one line. For instance, if “The German 6th Army is reduced in Stalingrad and replaced by the LXXII Army Corps”, all sorts of gymnastics are required to store the name of the dead unit and its location so I can report it on one line when the new piece is placed, especially because there are scenarios when the unit is not replaced at all (out-of-supply). Then meticulously arrange all the Reports and Triggers so that it never flows out of sequence with other reports, like “You hit!” stupidly occurring AFTER a report about the unit that died as a result of the hit…

You can definitely use
in a report line under the new Chatter (once you’ve turned off the “disable HTML” compatibility mode preference on the Chat preferences of course).

I’m surprised you were having problems with things going to multiple lines in the first place, so it’s possible I’m not fully understanding what you’re doing here. But yes, you can use
, you can use to get whatever fonts you want, you can use

, etc. The HTML parser that’s built into Java is a little primitive, so it’s not modern HTML 5 or anything (more like 3.2 or something), but it will do most of the basic stuff.

Is there a way to prevent the legacy Report Action from inserting a line break at the end of each report? I didn’t think there was.

There is not. Every report action generates a full line (and in the brave new world, its own

!). So yeah if you want to concatenate something together first you have to either do the “Substitute $STUFF$ into your $MESSAGE$” thing, or else manually concatenate a dynamic property together.

I suppose for some future version we could have an alternative ReportString trait that just built a buffer until you “flush” it or something, though I’m not sure that would actually be any more efficient than the workarounds presently available. I guess it could create a convenient work flow in some cases.

it seems to work flawlessly in my own module.

But I think your previous custom class allowed to type HTML in the chat window, while this vassal version don’t (or I don’t know how to do it?).

Cool development. Here is what I found in my initial try-out with the special PoG module; HTML preference setting initially set to disabled (default), then not set (ie enabled). Everything worked as expected when HTML was enabled but when disabled, I got inconsistent results - sometimes HTML code was still interpreted as such. I verified by turning the setting back ON and got the same results.

Is this what you expect… ?

(1) Roll some dice and check out the display of the numbers! : HTML disabled; no images, just the raw html in chat.
(2) Drag some armies around on the map – notice the italics! HTML disabled - still shows italic text
(3) Drag some of the little blue markers around (near the middle-top of the map). Notice the green text! HTML disabled - still shows green text
(4) Select some armies and hit “Ctrl+A”. Notice the bold text! HTML disabled; no bold, just the raw html in chat.

Mark

HI Brian - I am very interested in using this in my work on C&C Napoleonics. Is this PR scheduled for Vassal 3.3.3 ?

I would also like to look at some of the other bells and whistles that you have in the PoG module. Specifically, clocks and the changeable buttons. I am guessing that both of these are custom class-based features? Is there any prospect of them being rolled into Vassal proper?

Mark

Would “reset” button be useful on the Chat Options panel, to reset colors back to their defaults?

You’re correct - we decided that allowing players to send HTML to each other had security/griefing implications that we didn’t want to have to dig through, so we only allow HTML generated directly by the module (i.e. through Report text).

Yes that’s actually all correct, but probably deserves an explanation.

The “disable HTML” checkbox is there to provide (by default) compatibility with modules made with earlier versions of Vassal. Modules where the report text was put in w/o any regard to HTML and whether something would be interpreted as a tag or just text. So for example people freely typed > and < signs in report text. One very important principle in Vassal is we try never to break old modules, so that checkbox provides the backwards compatibility.

However, even when the checkbox is on, any report message that puts one of the activating |, !, ?, ~, ` characters as its very first character is considered to have “manually opted in”, and that turns on HTML processing for that message only.

In a way, the module is a good demonstration that the HTML disabling checkbox works correctly! :smiley:

Brian

Yes! Hopefully! This is targeted for 3.3.3 assuming everything continues to go well.

The clocks are currently a custom class, yes, though I have developed them with an eye toward their being “robust and generalized” so that I am perhaps able to offer them into a future Vassal build. But they’re pretty new and so I am hoping to get folks to test them out. You are certainly welcome to the custom class at any time.

By “changeable buttons” I’m not sure what you’re referring to?

Brian

Interesting. We’ve never had any “reset preferences to defaults” buttons, but some apps do have them. I’ll see if there are thoughts on the team about introducing something like that.

Moving on to trying out the functionality in my own project…

  1. Image stuff is now working great for me. Love the way I can pick up (e.g. die face) images already used in the module and re-size them to suit the chat usage. Using the existing die-result properties in the module and adding some Markers pre-coded with html for each die face it was easy to get the die result outputting via chat. The main time taken was due to my inexperience with getting property indirection to work.

  2. Probably due to my sketchy knowledge of html but I haven’t been able to get encode color into my output. I have tried 2 or 3 ways but none have worked so far (no errors or corrupted output, just no effect); not even one that is already working in Text trait output. In the same test output, bold < b > is working.

  3. One strange thing that I have noticed, relating to that Text trait output. In the two places where I am using html in text traits, both of them have mysteriously shrunk to about half the size that they were before, just in the Chatter Test release.

Mark

Try this:
Your message that you want in 4b grey

It’s hexadecimal RGB so 000000 is black, ffffff is white, ff0000 is red, etc.

Well that’s something interesting and “to keep an eye on” when we get this in a real beta. Possibly whatever’s managing the Text trait either (a) leaves something uninitialized, and/or (b) shares the same Java HTMLToolKit that the Chatter is using, and needs to explicitly declare something that just auto-right before. Potentially a good find.

I mean the clock buttons (dynamically in or out of the control bar and show time changing) - guessing this is part of the custom class.

But also, the dice buttons… which I just realised must be Symbolic Die, which the module I am working on has implemented in a different way.

Yes the Clock buttons are custom class they’re just really just pretty standard JButtons.

And the Dice buttons are completely vanilla Vassal – if you swipe the Vassal definitions from them you’ll have everything. Obviously the HTML is what makes the image actually appear in the chat log, but you’ll see the tags for that in the Symbolic Die definitions.

That was it. I had been using html color names - which works in a Text trait but not in the Chatter html it seems.

Thank you.