dxx-rebirth/similar/main
Kp d97afc2ad5 Retain directory structure in New Game dialog
User jcotton42 suggested copying a D2X-XL feature: preserving the
directory structure of the user's missions area when showing a New Game
dialog.  This was substantially more trouble than it should have been,
but the result is good.

Previously, the dialog presented all missions at any depth below the
starting point, and sorted them as if they were all in the root
directory.

Now:
- Empty directories are hidden entirely.  There is nothing for the user
  to do in them, so there is no point showing them.
- A directory with exactly one entry has that entry promoted into the
  parent, since there is no ambiguity about what the user would want.
  If the parent in turn has only that one promoted element when the scan
  of the parent finishes, then the element can be promoted up again.
  This continues until the root is reached or until a level has more
  than one entry.  For this purpose, both missions and directories count
  as entries.
- Directory entries are decorated to inform the user how many
  immediate subdirectories are present, how many missions are present
  immediately in the directory, and how many missions total are present,
  counting all subdirectories.  If there are zero immediate
  subdirectories, then the directory count is not shown.  For this
  purpose, directories that were hidden due to a lack of missions are
  not counted.
- Sub-dialog boxes for inner directories use a title that reminds the
  user of the path so far, and recaps the directory/mission statistics.
- On entry to the New Game dialog, if the last played mission is in a
  sub-dialog, appropriate sub-dialogs are opened so that the last played
  mission can be pre-selected.

Currently, there is no in-game override to return to the prior rollup
rules.

Requested-by: jcotton42 <https://github.com/dxx-rebirth/dxx-rebirth/issues/392>
2018-07-03 05:59:40 +00:00
..
ai.cpp Eliminate some uses of valptridx::operator-> 2018-06-24 05:06:15 +00:00
aipath.cpp Eliminate some uses of valptridx::operator-> 2018-06-24 05:06:15 +00:00
automap.cpp Eliminate some uses of valptridx::operator-> 2018-06-24 05:06:15 +00:00
bm.cpp Replace useless printf with puts 2017-12-05 05:29:55 +00:00
cntrlcen.cpp Eliminate some uses of valptridx::operator-> 2018-06-24 05:06:15 +00:00
collide.cpp Eliminate some uses of valptridx::operator-> 2018-06-24 05:06:15 +00:00
config.cpp
console.cpp Pass font to various drawing functions 2018-05-19 23:21:42 +00:00
controls.cpp Pass object& to read_flying_controls 2018-06-24 05:06:15 +00:00
credits.cpp Pass font to various drawing functions 2018-05-19 23:21:42 +00:00
digiobj.cpp Eliminate some uses of valptridx::operator-> 2018-06-24 05:06:15 +00:00
dumpmine.cpp Move valptridx factory iterator out to be generally available 2018-06-06 04:53:45 +00:00
effects.cpp Always qualify valptridx type/factory 2017-06-10 03:31:02 +00:00
endlevel.cpp Eliminate some uses of valptridx::operator-> 2018-06-24 05:06:15 +00:00
fireball.cpp Eliminate some uses of valptridx::operator-> 2018-06-24 05:06:15 +00:00
fuelcen.cpp Eliminate some uses of valptridx::operator-> 2018-06-24 05:06:15 +00:00
fvi.cpp Eliminate some uses of valptridx::operator-> 2018-06-24 05:06:15 +00:00
game.cpp Eliminate some uses of valptridx::operator-> 2018-06-24 05:06:15 +00:00
gamecntl.cpp Eliminate some uses of valptridx::operator-> 2018-06-24 05:06:15 +00:00
gamefont.cpp Enforce separation of font X/Y scaling 2018-06-08 04:04:05 +00:00
gamemine.cpp Pass context arrays to WALL_IS_DOORWAY 2018-06-24 05:06:15 +00:00
gamerend.cpp Pass font to various drawing functions 2018-05-19 23:21:42 +00:00
gamesave.cpp Eliminate some uses of valptridx::operator-> 2018-06-24 05:06:15 +00:00
gameseg.cpp Eliminate some uses of valptridx::operator-> 2018-06-24 05:06:15 +00:00
gameseq.cpp Eliminate some uses of valptridx::operator-> 2018-06-24 05:06:15 +00:00
gauges.cpp Fix SDL-only build of gauges.cpp 2018-06-30 21:53:55 +00:00
generate-kconfig-udlr.py Adapt to Python 3 strict bytes vs str rules 2018-04-30 05:31:16 +00:00
hostage.cpp Always qualify valptridx type/factory 2017-06-10 03:31:02 +00:00
hud.cpp Pass font to various drawing functions 2018-05-19 23:21:42 +00:00
iff.cpp Simplify test for corrupt IFF file 2018-04-03 03:20:08 +00:00
inferno.cpp Add screenshot=none to disable screenshot support 2018-06-16 04:13:37 +00:00
kconfig.cpp Pass font to various drawing functions 2018-05-19 23:21:42 +00:00
kconfig.ui-table.cpp Rewrite UI table to use symbolic constants for positioning 2018-02-01 05:38:47 +00:00
kmatrix.cpp Pass font to various drawing functions 2018-05-19 23:21:42 +00:00
laser.cpp Eliminate some uses of valptridx::operator-> 2018-06-24 05:06:15 +00:00
lighting.cpp Switch to shared_segment arguments where possible 2018-06-24 05:06:15 +00:00
menu.cpp Pass font to various drawing functions 2018-05-19 23:21:42 +00:00
mglobal.cpp Use valptridx for Dl_indices 2018-06-06 04:53:45 +00:00
mission.cpp Retain directory structure in New Game dialog 2018-07-03 05:59:40 +00:00
morph.cpp Eliminate some uses of valptridx::operator-> 2018-06-24 05:06:15 +00:00
multi.cpp Eliminate some uses of valptridx::operator-> 2018-06-24 05:06:15 +00:00
multibot.cpp Eliminate some uses of valptridx::operator-> 2018-06-24 05:06:15 +00:00
net_udp.cpp Improve error message on failure to load mission 2018-07-03 05:59:39 +00:00
newdemo.cpp Improve error message on failure to load mission 2018-07-03 05:59:39 +00:00
newmenu.cpp Retain directory structure in New Game dialog 2018-07-03 05:59:40 +00:00
object.cpp Eliminate some uses of valptridx::operator-> 2018-06-24 05:06:15 +00:00
paging.cpp Eliminate some uses of valptridx::operator-> 2018-06-24 05:06:15 +00:00
physics.cpp Eliminate some uses of valptridx::operator-> 2018-06-24 05:06:15 +00:00
piggy.cpp Split side uses based on shared vs unique 2018-06-24 05:06:15 +00:00
player.cpp Drop useless swaps on obsolete player_rw fields 2017-08-02 02:49:12 +00:00
playsave.cpp Warn users about tracker NAT hole punch feature 2018-06-21 03:08:36 +00:00
polyobj.cpp Split g3_start_instance_matrix usage 2017-08-26 19:47:51 +00:00
powerup.cpp Eliminate some uses of valptridx::operator-> 2018-06-24 05:06:15 +00:00
render.cpp Eliminate some uses of valptridx::operator-> 2018-06-24 05:06:15 +00:00
robot.cpp Eliminate some uses of valptridx::operator-> 2018-06-24 05:06:15 +00:00
scores.cpp Fix assertion on close of game over window 2018-06-15 02:58:01 +00:00
segment.cpp Split side uses based on shared vs unique 2018-06-24 05:06:15 +00:00
slew.cpp Always qualify valptridx type/factory 2017-06-10 03:31:02 +00:00
songs.cpp Fix songs_play_file use for sdlmixer=0 2017-11-25 01:56:51 +00:00
state.cpp Improve error message on failure to load mission 2018-07-03 05:59:39 +00:00
switch.cpp Eliminate some uses of valptridx::operator-> 2018-06-24 05:06:15 +00:00
terrain.cpp Move various SDL-only texture mapping functions to !DXX_USE_OGL 2017-11-01 02:01:21 +00:00
texmerge.cpp
text.cpp
titles.cpp Pass font to various drawing functions 2018-05-19 23:21:42 +00:00
vclip.cpp Fix proximity bomb failure-to-spin 2017-12-02 04:31:26 +00:00
vers_id.cpp
wall.cpp Pass context arrays to WALL_IS_DOORWAY 2018-06-24 05:06:15 +00:00
weapon.cpp Eliminate some uses of valptridx::operator-> 2018-06-24 05:06:15 +00:00