Ok. So we have finally had enough questions regarding the messages for tables and games.
Here goes.
Protocol Interaction: Join Table and Moderator launches game
Date: Apr-22 11:11 PM
Time | GameManagerGUI | TableManagerGUI | UserManagerGUI | TableManager | GameManager |
join
("george" joins tbl 100 as moderator) |
|||||
join (received) | |||||
joined request broadcast to all connected clients | |||||
joined ("george") received and update to show which table user is on | |||||
joined ("george") received and update to show which table user is on | |||||
join
("alice" joins tbl 100 as player) |
|||||
join (received) | |||||
joined ("alice" request broadcast to all connected clients | |||||
joined ("alice") received and update to show which table user is on | |||||
joined ("alice") received and update to show which table user is on | |||||
start ("george" aims to start table) | |||||
start ("george" received) tableinfo request for the one table broadcast to all clients [note: table is closed] LOCAL started request sent to mbus for local processing |
|||||
All TMGUIs for all connected clients receive tableinfo request and update display accordingly | |||||
started request detected. started request multi-cast to just players on the table |
|||||
started request received (by just "alice" and "george") so they know the game has started and can begin |
What happens when a client decides to leave a game?
Time | GameManagerGUI | TableManagerGUI | UserManagerGUI | MBus | TableManager | GameManager |
detects close-window or whatever and issues leave ("alice") command | ||||||
leave ("alice") command received left request broadcast to all clients |
||||||
leave ("alice") command received and processed. Nothing sent out | ||||||
left request received and GUIs updated | ||||||
left request received. If that table id is the game id we are playing, we must deal. |
So what happens when a client logs out while a game is in progress.
Time | GameManagerGUI | TableManagerGUI | UserManagerGUI | MBus | TableManager | GameManager |
logout or "alice" command | distribute logout to all components that want it server-side | |||||
logout (received). Find originator and treat this command as if it were a leave command. |
So what happens when game completes? For two person game with alice and george
Time | GameManagerGUI | TableManagerGUI | UserManagerGUI | TableManager | GameManager |
finish for "alice" window could close automatically or you can |
|||||
finish for "alice" received. removed from game. Nothing done |
|||||
finish for "george" window could close automatically or you can |
|||||
finish for "george" received. game is now complete. finished request sent LOCALLY to be received by TableManager |
|||||
receive
finished request broadcast tableinfo showing the revised status to all clients |
|||||
All clients receive tableinfo and clear the status for table. |
If other teams have challenges to this protocol arrangement, bring to class on Thursday.