DFHack / dfhack

Memory hacking library for Dwarf Fortress and a set of tools that use it
Other
1.86k stars 468 forks source link

[manipulator] rebirth #3256

Open myk002 opened 1 year ago

myk002 commented 1 year ago

our in-game Dwarf Therapist-like interface needs an entirely new UI. Existing functionality (and maybe design elements) might be salvageable from the old plugin.

Integrate with or replace work details?

lethosor commented 1 year ago

My opinion is that it doesn't really need a new UI. Just because a lot of our new-style tools use windows doesn't mean manipulator can't take up the full screen. I think a full-screen manipulator would be more useful than nothing.

That said, the plugin isn't currently built, and I haven't looked into how much effort is required to get it to build.

quietust commented 1 year ago

At the very least, the following things will need to be changed:

myk002 commented 1 year ago

The manipulator code has a surprising amount of mouse support already. I have always been impressed with it, even before I studied its source. I consider it one of DFHack's finest tools.

That being said, the interface doesn't exactly fit in with updated tool UIs. I don't have an issue with it's full-screen nature, but rather the lack of hover reactions, display styling, mouse wheel scrolling, and other common elements of "modern" DFHack UX.

Truthfully, I'm torn on what to recommend. This is such an amazingly useful tool, I'd be willing to sacrifice some UX consistency in order to make it available sooner. However, I'm not keen on spending much time updating the C++ widgets. I view them as an unwarranted maintenance burden in light of the far more flexible, featureful, and accessible Lua widget set.

I'd estimate a Lua port to take 3-4 weeks. I'm not sure how long a minimal C++ update would take. The uicommon.h header is currently uncompilable, though I haven't looked into why.

lethosor commented 1 year ago

I put some work into a Lua port several years ago (that's why screen.penarray was added) but it's not complete. https://github.com/lethosor/dwarf-manipulator

I think using the keyboard is fine, for now, but there is also a chance that some keys formerly used by manipulator are no longer in DF. The point about the view/zoom keys is a good one too. We might have to strip a few things out.

Generally I think usability and self-consistency are more important than consistency with other tools, especially if the latter is the only thing preventing the tool from being included. It's also worth considering that the people looking for this tool generally already know how to use it in its current state. It could be improved, sure.

Also, manipulator largely uses its own rendering system. I pulled in a ListColumn or two for the "batch actions" menu at one point (that's actually in a separate listcolumn.h header now), but other than that, I don't think manipulator uses much from uicommon.h besides the colors and PaintString-type primitives. I suspect those are easy to get working, if they don't already work. I'm not surprised to hear uicommon.h potentially has other build issues, though - good to know.

myk002 commented 5 months ago

ideas from players:

ideas from reddit discussion:

myk002 commented 5 months ago

From Ozzatron in Discord:

For me the main value of manipulator was sorting by arrival and going from the bottom up to perfectly pigeonhole all new migrants into their best labors (or into what I needed laborers in, if they were useless). This means that total count of dwarves assigned to each labor (or perhaps labor category) is helpful. The other thing I used it for was monitoring stress (thankfully now kinda visible in the vanilla interface) and scouring people for combat skills to see who I would draft, even if it was just for my part-time training/therapy squads. So adding that Melee Combat Potential rating would be personally appreciated as well. I would be fine if Manipulator was a full-screen huge tablelike interface with lots of tabs at the top which changed what exactly you saw; there's potential with the new UI to make it simultaneously more functional and less cluttered, but I imagine we could discuss UI with mockups for a whole month before settling on something solid. The other thing I did, which I was angered when it was no longer truly possible, was toggle an unused labor flag (like Alchemist) to indicate which dwarves I had already "processed" and were fully-fledged and initialized fort citizens with assigned rooms and such. Being able to set arbitrary flags or stamps on your dwarves would thus be much appreciated. Like coloring cells in Excel.

frznd commented 4 months ago

From Ozzatron in Discord:

For me the main value of manipulator was sorting by arrival and going from the bottom up to perfectly pigeonhole all new migrants into their best labors (or into what I needed laborers in, if they were useless). This means that total count of dwarves assigned to each labor (or perhaps labor category) is helpful.

The other thing I used it for was monitoring stress (thankfully now kinda visible in the vanilla interface) and scouring people for combat skills to see who I would draft, even if it was just for my part-time training/therapy squads. So adding that Melee Combat Potential rating would be personally appreciated as well.

I would be fine if Manipulator was a full-screen huge tablelike interface with lots of tabs at the top which changed what exactly you saw; there's potential with the new UI to make it simultaneously more functional and less cluttered, but I imagine we could discuss UI with mockups for a whole month before settling on something solid.

The other thing I did, which I was angered when it was no longer truly possible, was toggle an unused labor flag (like Alchemist) to indicate which dwarves I had already "processed" and were fully-fledged and initialized fort citizens with assigned rooms and such. Being able to set arbitrary flags or stamps on your dwarves would thus be much appreciated. Like coloring cells in Excel.