Added greyscale (mostly black) versions of the trait icons (such as the ‘prerequisites missing’ and ‘defaulted’ icons) to the resources so that they’ll be available to sheets. Each is named like the original resource but with a “_bw” appended to the name.
Added some temporary (not saved) properties to the BodyItem object, to help in using the output of the new GetProtectionBodyGraphic() routine (see below) in the Protection box of Unified View (or other possible places). These are Glow, GlowBorderExtension, GlowBorderColor, and GlowBorderMaxTransparency. Setting Glow to True will cause that item to be drawn with a ‘glow’ around the box (if the item is printed). The others set the size of the glow’s extension beyond the border, the base color of the glow, and the maximum level of transparency (max 255).
I have tried to standardize the default sizes of the location boxes across the Protection dialog and the new drawing routines. This will apply to any box which has not had its size set (usually by the user resizing it). As with all sizes, this will then be adjusted by scaling and a minimum usable size for the font being used.
Fixed an improperly colored border section in the header area of the Encumbrance & Move box.
Had to adjust things slightly to allow TraitTypes.None as a valid ItemType. This allows me to better support things like Transforms which include many different types of traits, by setting the value to None, and not getting the Grouping Options set for Advantages or whatever.
* Protection box (Unified View)
This now uses the same drawing routines as is newly available to sheets in GetProtectionBodyGraphic() (see below). This allows for a display with graphical elements like those in the Protection dialog. This also ensures that the image is more likely to be similar when comparing Unified with a printed sheet (if the sheet uses the new function). Be aware that due to font differences and image scaling, it’s nearly impossible to get an exact match.
Should no longer have an odd little bit of space to the left of the Armor list.
Fixed the Copy to Clipboard option on the gear menu.
Added the “Expand Locations to Fit Values” option to the gear menu. This allows the location boxes to extend downward to fit long values (most likely to occur when using Layering). If this option is turned on, the boxes may grow well beyond the height you may have set, and may obscure other boxes or disappear off of the display area.
Both the new “Expand Locations to Fit Values” option and the existing “Do Not Show Locations of DR 0” option are now plugged into the Plugin Options system, so these settings will now persist across GCA sessions.
* For Plugins
NOTE: The existing GetProtectionPaperDoll() function, currently used by any sheets that include the protection graphic, is ‘defective’ in that it only uses the default body image, not the one set in the current Loadout. It was written that way before the ability to change images was included in loadouts, and unfortunately never updated.
I have now created an alternative to the GetProtectionPaperDoll() function for plugins:
GetProtectionBodyGraphic(Settings As ProtectionBodyImageSettings) As Drawing.Bitmap
This returns a bitmap that starts with the body image set in the loadout, and then has body location graphics that more closely match those used in the Protection dialog. I’ve left the old GetProtectionPaperDoll() routine alone so that any existing sheets will continue to function as they already do.
Because creating the graphic often results in a different size image than the one used in Protection, where you may have adjusted the location boxes, GCA will try to scale the boxes to match the scaled image size, so that the boxes should better approximate the sizes and locations that you see in Protection. However, because fonts and font sizing will be very different between the two, you may see very different versions of what fits inside the boxes. GCA also tries to ensure that each box always has at least a couple lines of space for text (title and DR text), so a larger font may result in taller boxes than you’d expect.
This new function uses new Settings object as well. Here are some of the new properties:
Public Property LoadOut As LoadOut = Nothing
The loadout to use. If left as Nothing, GCA will attempt to set it to the character’s currently active loadout, or All Unassigned Items if none.
Public Property ColorSettings As BoxSettingsTraits = Nothing
The color profile to use when drawing the image. Leave it as Nothing to use GCA settings for Character Equipment. The function uses BorderColor and BackColor for the box; Title colors or Header colors for the header area; Trait colors for the DR text; and AltTrait colors for DB text (if printed).
Public Property AlwaysShowDB As Boolean = False
Set this to TRUE to always include the DB line (if the box will be printed anyway). Otherwise DB is only shown if it has a value. Default is FALSE.
Public Property IncludeStackingMessage As Boolean = True
When TRUE, if the character settings are set to allow stacking of DR or DB values, a text message will be printed at the bottom of the image to this effect. Default is TRUE. This makes the image slightly taller to make room at the bottom for the message without any possibility of interfering with the body image or the shield values inset image. If you are a sheet writer, you are encouraged to check for these values yourself and set this property to False; you can then print a message in the appropriate sheet font without it being unnecessarily scaled by the image scaling done to the graphic when it is printed.
Public Property AllowRedForLayersIssues As Boolean = True
When TRUE, any locations that have stacked layers will be drawn with Red borders and header backgrounds. When FALSE, normal colors are always used.
Public Property AllowRedForStackingIssues As Boolean = True
When TRUE, any locations that have stacked Fortify or Deflect (when not allowed) will have the sidebar drawn in light red. When FALSE, the Alt line shading is used (as with DB lines).
Public Property AllowGrowToFit As Boolean = True
Set to TRUE to allow the location boxes to grow (downward) to fully fit their contents. This may well cause overlaps the user didn’t expect, or boxes to extend off-screen.
Public Property NoSpecialEllipses As Boolean = False
When values don’t fit, GCA prints an ellipses in white-on-gray to make it more obvious that there’s more that didn’t fit. Set this to TRUE to prevent that, and just print the ellipses normally.