Skip to content

Stonesense Immersive Mode (Design Doc, don't close) #193

Open
@realSquidCoder

Description

@realSquidCoder

Stonesense Immersive Mode

Background info (Why am I doing this?)

First and foremost, because it's really impressive and a lot of people would find it fascinating. I originally started making this to fix up the old Overlay mode that got scrapped in the v50 move, but it has evolved into something new entirely. While I don't truly foresee anyone but myself regularly using this mode, it is certainly a very nice thing to fire up and play around with from time to time.

Who is this for?

Honestly, I don't know who the target audience for this will be, but I know that there is interest in seeing it happen, for the sake of seeing something cool.

Goals

So what are my goals? Well, I want to be able to play as much DF is possible solely thru Stonesense.

A so-called Stage 1 would mostly include the things in the main bottom bar, and the info at the top of the screen.


The immersive interface

The immersive interface should be a simplistic option menu that reacts to the current game state and whatever key-mods (ctrl shift alt) are being pressed. The user presses the number matching the option they want to choose and the game state and interface are updated. The options should be highlighted to denote things that are selected or enabled (such as blueprint mode being on or which digging mode is chosen) as this helps users at a glance know what's going on.

Image
Shown here is an example of this highlighting, denoting that I am digging a channel using Rectangle Select mode.

It is perhaps debatable whether to keep the same choices on the same buttons even when that would leave gaps between the options. I am personally in favor as I feel it aid in developing muscle memory. It would also line up with DF having the same hotkeys for the same options, regardless of menu.

I am debating the option of having an info panel on the side of Stonesense for various things, very much like pre-v5X DF (see https://dwarffortresswiki.org/index.php/DF2014:Menu for visual examples) One such bit of info is the announcements. Those could be shown then without having to cover the main Stonesense render. Depending on the complexity we may have multiple info tabs in the main info panel

Here's what it might look like:
Image
Image
Image


General info

There should be general info shown about things at the cursor. Info about the tile, the building, zones, traffic, etc. It should be similar to how DF show the player info about the tile. An info parser/beautifier may be of use here to clean up the info before it is shown.

Indicators

There should perhaps be a few more indicators for things like traffic levels. I imagine it would work very similar to how engravings work in Stonesense but for traffic levels. Civzone indicators should only appear when interacting with zones, much like traffic.

Image
The engravings, for reference. I imagine using tinted number glyphs for the traffic indicators, though it needs to be tested. It may, however, be easier to simply tint the tiles that aren't normal traffic.


Selecting things

There are 2 cursors, one for the start point of a selection, and one for wherever the mouse cursor currently is. if the user is in rectangle select mode, we need to draw the selection rectangle between the 2 points much like DF does so it is more clear what will be selected. An exception to this would be minecart tracks, which draws a sort of curved line between them. More info is needed for that. It would also be nice to have the DFHack ruler tooltip or our own mock up telling users the dimensions of their selection.

Edit: I got a basic ruler tooltip working:
Image

Edit: I got a selection wireframe working:
Image

It may also be beneficial to occlude parts of the cursor if it is obscured by tiles closer to the camera to better show the depth of the cursor. We have a sprite that is just the top of the cursor that could be used for faking the obscurity


Quickfort parser

To handle things like Build Mode, stockpile and zone management, and safer designations, it will be necessary to use Quickfort's API. I am still currently learning how to properly create and read basic Quickfort blueprints, enough so that one could realistically create anything they could in vanilla. To that end, I have begun making a private external parser for Quickfort blueprints.

Currently read in basic blueprints like the built-in aquifer-tap and embark ones. I will not need to write much meta parsing since these blueprints will only be used internally to relay data to Quickfort.


Roadmap:

Stage 1 (Proof of Concept):

Stage 2 (Better Quickfort Parsing):

  • Managing stockpiles
    • Creation
    • Deletion
    • Editing size
    • Editing settings
  • Managing zones
    • Creation
    • Deletion
    • Editing size
    • Editing settings

Stage 3 (Final Touches):

  • Population info
  • Stocks numbers

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions