Writing mapview schedules

The Basics

A mapview schedule file should always be placed into the script/schedules/mapviews directory in the game hierarchy. It should consist of a single class, named like the module itself. A schedule is attached to a mapview by using the mapview::set_schedule () method. See it's documentation for more details. You should be particularly careful that the argument list given to mapview::set_schedule () has to be a Python tuple containing ONLY Python strings or integers.

Arguments passed to __init__ ()

When you call mapview::set_schedule (), the first argument passed to the class constructor is a reference to the mapview that called this method. This parameter should be saved as it will most likely be used during the run () method to control the mapcharacter. Then follows the arguments stored in the Python tuple that has (optionally) been passed to mapview::set_schedule ().

Arguments passed to run ()

No arguments are passed to the run () method.

Structure of a mapview schedule file

Here is what a mapcharacter schedule file should ideally look like:
#
#  (C) Copyright <year> <your name>
#  Part of the Adonthell Project http://adonthell.linuxgames.com
#
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License.
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY.
#
#  See the COPYING file for more details
#

#
#  <description of the schedule>
#

<do your imports here>

class myschedule:
    
    # Parameters:
    # Description of myparameter1
    # Description of myparameter2
    def __init__ (self, mapviewinstance, myparameter1, myparameter2):
        self.myself = mapviewinstance
        <do you other initialisation here>

    def run (self):
        <mapcharacter control>

    def __del__ (self)
        <eventual cleanup>

Storing variables

It is unsafe to use class variables different from those that are passed to the __init__ method. When a mapview's schedule is state-saved, only the schedule filename and it's initialisation arguments (the Python tuple passed to mapview::set_schedule ()) are saved. So, if you create class variables inside the object, do not expect them to survive game saving/loading. However, mapview schedules usually don't need persistant variables.

Generated on Thu Jun 26 02:07:58 2008 for Adonthell by  doxygen 1.5.6