So I haven’t been spending much time programing lately. But I have been thinking quite a bit about all aspects of Decrypt from technical, to game play, to story.
I have finally come up with how the mission system will work. It should be very flexible. And Over the last 2 or 3 days I implemented the way in which applications and thus the game world, will be affected by missions. There are any number of ways to go about doing this, I opted for an event system.
Each application, when it registers it’s self with the operating system has the option of registering a default event handler. Then an active mission can then register event handlers for any application it wishes to affect, and these ‘over riding’ event handlers get pushed onto the handler stack. The stack has fall through, so if a certain event is not handled in a certain event handler, then that event falls through to the next handler and so on.
The missions will be quite simple. They will be described in an XML file by sequence points. Each stage of a mission will describe the game world by specifying a list of handlers for different applications. When a player completes a task that requires anything in the game world to change, they will change sequence points which will remove the old sequence point handlers by popping them off the handler stack, then pushing the new sequence point’s handlers on.
I think you could provide additional flexibility by allowing for sub-sequence points, so can change small parts of the world while retaining the majority of handlers. Then when u change the main sequence point you would change all the handlers.
Anyway, with the event system in place, and the Email client now working off of the event system, and the email client the only component absolutely required for the most basic mission. I’m going to implement the mission system now and create an ultra basic mission!