Here's the final solution:
@p
- A cutscene class (in lua) that includes some handy methods and mostly automates cutscenes
@p
- Derived classes for each cutscene, or each type of cutscene
@p
- Don't think "cutscene", neccessarily, think "event"
@p
- There is also a cutscene manager that handles adding cutscenes to areas, etc.
@p
This leaves a fairly lightweight footprint for implementing cutscenes. For instance, I have implemented a "cutscene_forgothat" type but this could actually be a generic one that takes three parameters: the place name to trigger, the text to say, and where to walk the player to. Then I can create these in the cutscene manager as much as I want and have the inserted and triggered into the game.
@p
The actual cutscene drone works much like the spellcasting sequences, with an additional tweak for the "event" dialog, which in the end was just a simple thing that pops along the bottom to show the text, with a "more" and "OK" button.
Here is the sequence for forgetting your hat:
Seq = {
@p
"@Something's not quite right.<p>England's bright, orange sun glowers itself hotly upon your brow.<p>...<p>Your hat! How could you have forgotten your hat?<p>It strikes you that it would be foolhardy to attempt serious tourism without your travelling companion. Your hat must be in the car.<p>If you searched the back seat, you might find it.",
@p
drone_wait_event_dlg (drone_faceplayer ()),
@p
drone_moveplayer_to_place ("cutscene_forgothat_backoff_parkade"),
@p
function () self:retrigger () end
@p
}
2009-02-12