Skip to content
eminence edited this page Dec 5, 2011 · 2 revisions

Roadmap

From some of the tasks in TODO, I have planned out the necessary changes and enumerated them here for my own organization.

Quick-scan roadmap

  1. Factor out overviewer.dat (#555)

    • read in sign data and previous north direction from markers.js and overviewerConfig.js respectively

    • stop writing out overviewer.dat

    • Move the reading and writing of javascript data to its own class, or into the class in googlemap.py

  2. Factor out overviewerConfig.js into a completely generated file, not a template

    • Move the few things that are examples and not json out of overviewerConfig.js

    • Create a new class that knows the defaults and takes configuration and writes out this file.

  3. Put last render time (max of all chunk mtimes) into the generated overviewerConfig.js

  4. Write out at beginning of the render a "render in progress" file, and erase it when the render is done. This is to detect if a render was interrupted.

  5. Create two distinct rendering algorithms, one for when the last render was complete, one for if the last render was incomplete (with options to force one or the other, ignoring the file from step 4)

    • If the last render was complete, then compute the dirty tiles from chunk mtimes and the last render time from step 3. Iterate over the tree in a post traversal order and render all those tiles. No need to mtime stat any tiles on disk, we will assume they haven't been touched..

    • If the last render was not complete, then compute the dirty tiles from chunk mtimes and the tile mtime on disk (same as now), and iterate over all leaf nodes (render tiles) and render them.

      Then for the inner tiles, iterate over the tree on disk using an os.walk-like routine in post-traversal order, and compare mtimes on disk of inner tiles against its 4 children and render as appropriate.

Multi-world roadmap

  1. Do 1 and 2 above.

  2. Modify the configuration code to accept options in the format as shown by the mockup at https://gist.github.com/1428820

  3. Modify the output path for tiles. It needs to include the rendermode, the world name, and the north direction.

    • I suggest having a folder hierarchy: map/worldname/rendermodename/orientation/base.png
  4. For each world, rendermode, and north direction, invoke the appropriate body of code from overviewer.py to render all of that.

  5. Output to overviewerConfig.js the render configuration so the javascript has access to the information it needs to draw an appropriate UI and know how to access the tiles.

  6. Tweak the javascript and UI to accommodate the new worlds and north direction

    • I suggest a drop-down box for world selection and two "turn clockwise/counterclockwise" buttons to change orientation

Other tasks

  • Implement "render-range" option from the mockup, to only render a specific portion of a world
Clone this wiki locally