StratosVX wrote:The plan was to use Qt5 and use vector graphics as much as possible. Heroscribe uses three files for every icon, which is too many files to keep track of so we wanted to reduce that and keeping everything in vector format means no loss in quality when scaling so the one image could be replicated at different sizes without issue. We had a list of improvements to make too, but I'm not sure where I put that file.
Color me interested in the project.
I understand HeroScribe 1 originally had a Python (2, probably) version without a GUI. It might be worthwhile to recreate that in Python 3, since that allows you to get the core functions of what the new HeroScribe will DO down pat before you start coding the UI to control it. But it's not what I'd do, if I'm honest.
What I'd do first (because I don't know how to do it off the top of my head, and I immediately see that it's a desirable feature to save me a LOT of work) would be to grab a single color, single path SVG icon and determine how to draw it in any color, ideally by styling its element id. If that can be done without MASSIVE headaches.
Half an hour researching mid-post: I conceptually know how using rsvg now: rsvg_handle_set_stylesheet will apply an external stylesheet string to an existing rsvg_handle object. Well okay then, and its designed to be able to connect to cairo which can render to a raster surface (and wx frame), PDF, etc. Neat. Libraries needed is insane, but both rsvg and cairo are Gnome projects so that's no shocker. Similar deal with Qt5, except all those libs are built out of the same mammoth source tree. They tell me many small DSOs allow the OS to reclaim memory when any part of the monster framework becomes unused. We sandbox apps more and more now, no shared memory even for libc, their argument is invalid.

Okay, so that greatly reduces the number of vector resources needed and the complexity for managing them. It also suggests something of the UI for doing it that's different from classic HeroScribe and raises the notion that old Quests if saved will no longer be compatible with the old version. Import a translator that understands old format quests with all the lookup tables for for old-to-new mapping.
(Speaking of color…am I the only one who basically assigns Gauntlet colors in my head to the heroes? Red barbarian, Green elf, Yellow dwarf, and Blue wizard? Also, aren't those basically Mario colors?

From there I'd get a canvas up, just a set of grid squares, and I'd get it zooming in/out/normal and panning when the window was smaller than the canvas, throw a bunch of icon objects into it, and make sure I could pick up and move pieces. The important bit of a device independent UI managed. Right sidebar… object list. Let me drag to reorder these to change draw order. It's not very relevant that there be a draw order yet, but … yeah. And maybe if I click one of these on the right, it selects the icon?
Show/hide object list sidebar.
Left sidebar … Object lists. Can boards be objects? I've got a reason for asking that, but I'll come back to it.
Having boards (which has kinda been the point of a HQ Quest BOARD maker) creates the problem of minis outside of a board, but other than for the sake of where to put them on the grid I've been drawing in this mental exercise, I hadn't actually confined anything to a "valid play area" yet. Nor had I considered what happens if you stack icons. All I've considered up to this point is snap to grid space, and maybe we're about to want snap to half-grid space?
Object properties … "Board objects" have an origin position that isn't the upper left of the board SVG. Boards have a position in the canvas that might snap to the origin to the top left of a square, but I was thinking that you should be able to add more than one for crazy adventures like The Dark Company or find a secret door in a corridor that leads into some AHQ tiles or anything else we add support for. HeroScribe had several options for boards.
This adds another object property: Scale. Classic HQ is 22mm, modern will be 25mm, AHQ was 22mm (I think someone said?) to match HQ. WHQ was 25mm because it was better.

D&D board games, Chessex and most other grid mats are 25mm, the 28x22 extended HQ board is usually 25 or 30mm, etc.
I don't have solutions for this yet, but I have it in mind. My gut reaction is I don't want to deal with this. But if you want to use OG HQ furniture in a very larger scale dungeon with 30mm squares, there's a question of where do you want to put it and how much space does it actually take. Might be good to actually include a grid size property and allow people to create an alias at a different scale. (I might not even add that to the UI, just something you can do by editing metadata) so that there are both 22 and 25mm HQ sets available, and someone who's made their own could add a 30mm if they want to. Make it possible to add 30mm if you've got a massive sized 3D board.
I'd make it possible to drop an icon on a space outside a board. (HeroScribe doesn't allow this and if you change boards, it won't let you if a piece would be outside the board.) I'd simply mark them with a
/!\ icon and warn at save/export/load that the Quest has minis that are off the board.
Oh, show/hide for left sidebar.
What's next?
Quest notes. Heroscribe 1 doesn't seem to have the ability to edit those that I've discovered yet, but the sample quests have them. Should have that.
NO IDEA how you print that out as a PDF or whatever if you have like crazy multi-board monsters with quest notes, but hey.
Thinking out loud. Anything above that doesn't make sense is the result of multiple edits to a stream of consciousness.
<InSpectreRetro> All hail Zargon!!! Morcar only has 1BP.