Server Data Flow

Server consists of seven objects:  Event Dispatch, Movement Handler,
Collision Handler, Message Handler, Dynamic Object Database, Inventory,
and Resource Database.  Those seven objects work together to accommodate
all Agents from each client present in the system.



1.1 Event Dispatch:

    Event Dispatch gets a message from the Network about each Agent's 
    action.  Then, it communicates the messages to appropriate places, 
    either Movement Handler, Message Handler, Dynamic Object Database, 
    Inventory, or Resource Database.



1.2 Movement Handler:

    Movement Handler receives messages about Agents' moves.  It then 
    communicates those messages to Collision Handler to make sure that no 
    collision had occurred when the particular Agent moved.



1.3 Collision Handler:

    Collision Handler receives information about Agents' movements in
    the world.  It then requests the information about all of the agents
    from the Dynamic Object Database and checks if collision has occurred
    when the Agent made the move.  If the collision has occurred,
    Collision Handler sends a message back to Event Dispatch to let each
    Agent in the collision know their new states.



1.4 Message Handler:

    Message Handler receives messages from Event Dispatch about Agents'
    actions in the world.  The particular actions which cause a message
    event to be sent if speaking, for example.



1.5 Dynamic Object Database:

    Database of all of the dynamic object information in the system.  The
    information gets updated every time the information changes.  Dynamic
    Object Database gets consulted for information from Event Dispatch,
    Collision Handler, and Inventory.



1.6 Inventory:
    Inventory is a way of keeping track of the Agents which are contained
    by the other Agents.  



1.7 Resource Database:

    Resource Database is the database of the Static World.  Static World
    is not allowed to be changed at client side, so all updates take place
    at the server side.  When the world is updated, it must be 
    transferred to each client upon connection.  The version of the world 
    at client's side will be checked and then upgraded appropriately.