
TODO
====


BUG: some Quake maps have clipping issues (invisible barriers)

BUG: switch in cave may end up inaccessible (clear the seed)

BUG: place pickups more carefully in caves (otherwise can be unpickupable)

BUG: liquification of caves at a border can subvert quests

BUG: items occasionally appear on high fences
     - finding small spots ignores sideway extents (thick[])

BUG: corner supports are sometimes off the wall


+  fix monster quantities, which was messed up by cave code.

   Also need some increase over the course of a level
   (like 50% more monsters at end compared to start) and
   vary the quantity (e.g. nothing in a room occasionally).

   For Less or Scarce settings, create smaller room palettes

-  Cave code: give each cave an 'info' field and make it a class
              with various methods, in particular for mapping
              between seed coords and cave cell coords.

+  get small exits working again
   -  rework Build_small_exit to only use a single transform

+  improve the jaggy edge algorithm (support corner triangles)

-  missing stairwells:
     The stairwell problem can be fixed by changing THEME.stairwell
     in rooms.lua to 'THEME.stairwell_walls and THEME.stairwell_floors'.


-  prevent escapes over fences/windows near key pedestals (etc) by
   raising the height of the fences/windows there.

-  some basic lighting objects (torches), esp. Urban/Hell

-  have a 'functions' table for games, engines, mods 
   e.g. setup_func = XXX  -->  functions = { setup = XXX }

-  cmdline option: -k (--keep-seed)


CSG CODE:

+  improve progress bar code to handle Lua part + CSG part
   (especially for Quake)

+  CSG DOOM: temporary file has ".TMP" extension, delete it on error
             kill the temp/ folder  (NB: used by wolf too)

-  replace 'line_kind' and 'sec_kind' with just 'kind' in area_face_c
   (similarly for 'tag', 'args' etc...).
   Put delta_z in there too.

-  make the [wbt]_face field of brushes be like entities and
   store all the fields in a std::map.
   Have a utility function to find / extract a field.

!!  do a proper face-creation pass (merge_face_c list
    in each merge_segment_c ?) and get proper brush
    and area_vert references.

    Hence remove the CSG2_FindXXX rubbish.

!!  DOOM: fix y_offset values
    (when have y_offset and brush side is truncated/extended)

-  CSG DOOM: support entity.light

-  CSG DOOM: fix up extrafloor creation

-  Rail brushes: support fake 3D bridges
                 (create dummy sector from brush's Z2)

q1_nodes:
  -  floor_leaf --> leaf
  ?? move floor/ceiling faces into leaf.faces (instead of leaf.floor)

