skeleton outline of TileSet object and tileset.py created
This commit is contained in:
114
overviewer_core/tileset.py
Normal file
114
overviewer_core/tileset.py
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
# This file is part of the Minecraft Overviewer.
|
||||||
|
#
|
||||||
|
# Minecraft Overviewer is free software: you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU General Public License as published
|
||||||
|
# by the Free Software Foundation, either version 3 of the License, or (at
|
||||||
|
# your option) any later version.
|
||||||
|
#
|
||||||
|
# Minecraft Overviewer is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||||
|
# Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License along
|
||||||
|
# with the Overviewer. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
tileset.py contains the TileSet class, and in general, routines that manage a
|
||||||
|
set of output tiles corresponding to a requested rendermode for a world. In
|
||||||
|
general, there will be one TileSet object per world per rendermode requested by
|
||||||
|
the user.
|
||||||
|
|
||||||
|
The TileSet class implements the Worker interface. This interface has the
|
||||||
|
following methods:
|
||||||
|
|
||||||
|
do_preprocessing()
|
||||||
|
This method is called before iterate_work_items(). It should do any work
|
||||||
|
that needs to be done prior to iterate_work_items(). It is not called for
|
||||||
|
instances that will not have iterate_work_items() called.
|
||||||
|
|
||||||
|
get_num_phases()
|
||||||
|
This method returns an integer indicating how many phases of work this
|
||||||
|
worker has to perform. Each phase of work is completed serially with the
|
||||||
|
other phases... all work done by one phase is done before the next phase is
|
||||||
|
started.
|
||||||
|
|
||||||
|
iterate_work_items(phase)
|
||||||
|
Takes a phase number (a non-negative integer). This method should return an
|
||||||
|
iterator over work items. The work items can be any pickelable object; they
|
||||||
|
are treated as opaque by the Dispatcher. The work item objects are passed
|
||||||
|
back in to the do_work() method (perhaps in a different, identically
|
||||||
|
configured instance)
|
||||||
|
|
||||||
|
do_work(workobj)
|
||||||
|
Does the work for a given work object. This method is not expected to
|
||||||
|
return anything, so the results of its work should be reflected on the
|
||||||
|
filesystem or by sending signals.
|
||||||
|
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
class TileSet(object):
|
||||||
|
"""The TileSet object manages the work required to produce a set of tiles
|
||||||
|
on disk. It calculates the work that needs to be done and tells the
|
||||||
|
dipatcher (through the Worker interface) this information. The Dispatcher
|
||||||
|
then tells this object when and where to do the work of rendering the tiles.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, regionsetobj, assetmanagerobj, options, outputdir):
|
||||||
|
"""Construct a new TileSet object with the given configuration options
|
||||||
|
dictionary.
|
||||||
|
|
||||||
|
options is a dictionary of configuration parameters (strings mapping to
|
||||||
|
values) that are interpreted by the rendering engine.
|
||||||
|
|
||||||
|
regionsetobj is the RegionSet object that is used to render the tiles.
|
||||||
|
|
||||||
|
assetmanagerobj is the AssetManager object that represents the
|
||||||
|
destination directory where we'll put our tiles.
|
||||||
|
|
||||||
|
outputdir is the absolute path to the tile output directory where the
|
||||||
|
tiles are saved.
|
||||||
|
TODO: This should probably be relative to the asset manager's output
|
||||||
|
directory to avoid redundancy.
|
||||||
|
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
def do_preprocessing(self):
|
||||||
|
"""For the preprocessing step of the Worker interface, this does the
|
||||||
|
chunk scan and stores the resulting tree as a private instance
|
||||||
|
attribute for later use in iterate_work_items()
|
||||||
|
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
def get_num_phases(self):
|
||||||
|
"""Returns the number of levels in the quadtree, which is equal to the
|
||||||
|
number of phases of work that need to be done.
|
||||||
|
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
def iterate_work_items(self, phase):
|
||||||
|
"""Iterates over the dirty tiles in the tree at level depth-phase. So
|
||||||
|
the first phase iterates over the deepest tiles in the tree, and works
|
||||||
|
its way to the root node of the tree.
|
||||||
|
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
def do_work(self, tileobj):
|
||||||
|
"""Renders the given tile.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
def get_persistent_data(self):
|
||||||
|
"""Returns a dictionary representing the persistent data of this
|
||||||
|
TileSet. Typically this is called by AssetManager
|
||||||
|
|
||||||
|
"""
|
||||||
|
pass
|
||||||
Reference in New Issue
Block a user