This update adds doors to the map. It may not seem like much, but it required me to flesh out the concept of cells with State (in this case, open or closed) and to deal with it in the persisted data. I also refactored the Cell/CellBase/CellType classes to avoid some redundancies (e.g. Cell.Type and CellBase.Type were not both necessary).

Here’s open and closed, showing visibility determination:

Updated executable:

Source code: