Shannon V. OKeets
From: Honolulu, Hawaii
I was reluctant to start a new thread just for this, so I have placed it here.
This is the MWIF Processing Structure for the redesign of the game engine. I had done several previous versions but this is both more complete and more coherent. All the lines without arrowheads are bi-driectional.
I think of the 'player' as having two roles: Controller and Player. As Controller, he starts the game, sets up for restoring or begining a new game, and also has the option to replay a previous game or run through the tutorials. Note that in all those cases he is not 'playing' the game per se. As a Player, he is moving units and making other decisions according to the WIF rules.
So, the Controller starts MWIF (upper left corner) and then decides what to do using the Controller Interface. Say he chooses to start a new game. He gets to set the mode of play (e.g., solitaire or Internet), scenario, optional rules, and identify the players. He might simply assign major powers to players or decide to go through the bidding process. If bidding, he then becomes a Player and the program reaches out to the other players over the Internet. Once major powers are set, Game Control is in charge and informs the active decision makers (Local Player, Internet Player, PBEM Player, AI Assistant, and AI Opponent) so they can perform any preparatory analysis they want. Simultaneously, the "Player on Move" will be informed that it is his turn to make decisions.
The AIO will perform and store its preparatory analysis while waiting on the human player(s) and the human players can do likewise with "Preplanned Decisions".
There is some minor stuff not shown here, but I believe all the important pieces are identified and in place.
My follow-up task to this one is to restructure the program logic so it matches this process structure.
Perfection is an elusive goal.