Client Level 1

-------------------------------
Dataflow component descriptions
-------------------------------


Client
------

2.1 Event Dispatch:

  Coordinates all event handling, internally to the client, and externally to
  and from the server.

  Inputs:
    o server_event sent from the server
    o client_event from the Control Unit which is an event client that 
      the client is notifying
    o agent_move_event generated by the Collision Handler
    o message_action to be sent to the server from Message Handler
    o dynamic_collision_map from Dynamic Object Handler
    o static_collision_map from Static Object Handler
    
  Outputs:
    o collision_notice to the Collision Handler
    o resource_update to the Resources to modify the Static World 
    o message_event to the Message Handler
    o event to the server notifying the client action
    o object_update to the Dynamic Object Handler to modify the local dynamic
      world
    o command to the Control Unit notifying what to display
    o orientation to be used by the Control Unit
    o local_update_notice to the Static Object Handler to modify the local
      static world
  
2.2 	Control Unit:

  Encompasses user-interface and agent AI -- wherever an intelligent decision
  needs to be made.

  Inputs:
    o orientation from the Event Dispatch
    o message_status from the Message Handler notifying what message action
      to display
    o local_dynamic_world to display from the Dynamic Object Handler
    o local_static_world to display from the Static Object Handler
    o inventory_status from Inventory to display the current inventory
    o command from Event Dispatch notifying to display the generated action
      by the client
    o user input from I/O

  Outputs:
    o client_event made from I/O to be sent to EventDispatch
    o message_command made from I/O to the MessageHandler
    o display_status to be displayed to I/O

2.3	Message Handler
  Handles all types of messages (including chatting, shaking hands, inventory 
  modification, etc) between the client and the server

  Inputs:
    o message_command produced by the Control Unit
    o message_event produced by the server
   
  Outputs:
    o message_status to be sent to the Control Unit to be displayed
    o message_action to be sent to the Event Dispatch to be sent to the 
      server  
    o inventory_event to be sent to the Inventory

2.4 Collision Handler
  Calculates new coordinate and state of each of the collided objects

  Inputs: 
    o dynamic_collision_map from Dynamic Object Handler
    o static_collision_map from the Static Object Handler
    o collision_notice produced by the Event Dispatch

  Outputs:
    o agent_move_event to be sent the Event Dispatch
    o dynamic_object_move_event to be sent to Dynamic Object Handler to 
      modify the dynamic object state

2.5 Static Object Handler
  Handles all the updating of the local_static_world

  Inputs:
    o local_update_notice from the server to modify the local_static_world

  Outputs:
    o static_collision_map to be used by Event Dispatch and Collision Handler
    o local_static_world to be used by the Control Unit

2.6 Dynamic Object Handler
  Handles all the updating of the local_dynamic_world
  
  Inputs:
    o inventory_updating from Inventory
    o dynamic_object_move_event from the Collision Handler
    o object_update from the Event Dispatch notifying the updating of the
      dynamic objects

2.7 Dead Reckoner
  This unit stands somewhat alone, and is used to interpolate and extrapolate
  the positions of objects so that they don't jerk about because of hiccups
  in network performance.

  Inputs:
    o local_dynamic_world from the Dynamic Object Handler

  Outputs:
    o dynamic_object_move_event to be sent to the Dynamic Object Handler 
      notifying the changes in the state and the coordinate of the object

2.8 Inventory
  Handles all client inventory stuffs

  Inputs:
    o local_dynamic_world from the Dynamic Object Handler
    o inventory_event from the Message Event notifying the modification 
      notice of the inventory

  Outputs:
    o inventory_updating to the Dynamic Object Handler
    o inventory_status to be sent to be displayed by Dynamic Object Handler