View this PageEdit this Page (locked)Attachments to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide
Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007

Another Group: Milestone 6

Purpose:
The goal was to combine our demonstration engine with our Guide and Avatar, as well as add XML import/export functionality. For the complete specs, see Fall 2003 M6: Add demonstrations to your Guide.

Our Approach:
Our XML functionality was mostly complete at this point. We focused on integrating the Avatar with our DemonstrationEngine and deciding on a script format. In the end, we decided to just store Squeak blocks for each step in a task; the blocks would take one parameter, engine, which would be an instance of the DemonstrationEngine.

Design Notes:
We added some all-in-one methods to the Avatar, due to the sequential nature of the Scheduler. This was a hack at getting our animations to execute in order. We added a few other methods to the Avatar and DemonstrationEngine, but no major changes.

Observations:
Again, our problems for this milestone came from combining the avatar and demonstration animations. We ended up wrapping everything in doInOrder's this time around. That approach would eventually cause some problems with M7's step dependencies; see our Another Group: Milestone 7 page for how we solved this. Other than that, this was a fairly easy milestone. The fact that our XML functionality was mostly complete to begin with gave us a head start. One great feature of our Avatar was that it collapsed windows at the start of a demonstration and hid its speech bubble during demonstrations; that avoided the window clutter other groups seemed to have.

Code Snippets:
To avoid having the user break our scripts, we decided to disable all mouse/keyboard processing during our demonstrations. We wrapped our top-level script executing method in an ifError to re-enable the Sensor if an error ocurred. Of course, save your image before you go off disabling the Sensor:

"To disable if currently enabled"
(Sensor inputProcess) ifNotNil: [Sensor shutDown].

"To enable if currently disabled"
(Sensor inputProcess) ifNil: [Sensor startUp].


Screenshot:
Bunny showing how to use the World menu.

Uploaded Image: m6-image1.gif

Downloads:
M6.zip: code, MDLs, documentation, and XML tasks


Link to this Page