Outerworlds Toolbar

New in 3.5 is the ability to use a custom toolbar layout, along with customized toolbar graphics. This feature is primarily designed for use by universe administrators who can now design a custom toolbar prior to distributing the software.

The new toolbar can have many commands available in addition to those traditionally used on the toolbar. For example, a button could be added to open the World Features dialog, or to exit the application. The buttons may be used in any order and may be grouped in any manner using spacers. If the toolbar is wider than the available space, then a dropdown menu button will automatically be added to allow access to the remaining buttons.

Toolbar Images

A toolbar image is a grid of button images stored as a windows bitmap (BMP) in the /default/toolbars directory. Different toolbar images can be used to change the look of the toolbar buttons. Toolbar images are interchangeable (even those of different sizes) as long as the images convey the same meaning, and are arranged in the same order.

The toolbar image itself is divided into five rows, and any number of columns. The first column is always used for the dropdown menu button graphic. Each column represents a single button, and each row represents a different version of the button as follows:

Row 1: Image of button in its normal, unpressed state.

Row 2: Image of button pressed

Row 3: Image of button in its normal, unpressed state with mouseover.

Row 4: Image of button pressed, with mouseover

Row 5: Image of disabled button.

Here is an example toolbar image:

The buttons may be any size, but they must be square. The browser determines the button size by dividing the height of the toolbar by 5. The image above is 160 pixels height, so the browser will determine the button size to be 32 x 32. The width of the image is then divided by this number to determine the number of columns. The image above is 192 pixels wide, which tells the browser that there are a total of six columns available. These columns are numbered left-to-right, starting with zero for the first (the drop-down menu button image) column.

Toolbar Configuration

The toolbar layout is stored in the toolbar.cfg file in the /toolbars directory. This file tells what commands are available on the toolbar, and what images those commands should use. Each line in the file represents one button. The line should contain the command the button performs, followed by the column number of the toolbar image to use for that button, followed (optionally) by the message number from the message set to be used as a tooltip. For a complete list of available commands see below.

Here is an example toolbar file.

back 3
forward 2
none 0
look_up 8
look_level 10
look_down 9
none 0
first_person 11
third_person 12
none 0
camera_front 51
camera_chase 50
none 0
mouse_move 61
afk 60

Any button which is not not associated with a valid command will act as a spacer. A spacer will only use the image from row zero (Unpressed) and will not respond to user input.

Toolbar Commands

Each button can be assigned one of the following commands:

   exit        
   forward     
   back        
   home        
   teleport_set_home   
   remember            
   look_up             
   look_down           
   look_level          
   first_person        
   third_person        
   world_features  
   world_rights    
   world_ejections 
   show_downloads  
   show_tabs       
   show_gestures   
   show_web        
   show_whisper    
   show_cell_grid  
   login_citizen   
   login_tourist   
   privileges       
   web_back         
   web_forward      
   web_stop         
   web_refresh      
   help             
   about       
   options_controls 
   camera_locked    
   camera_chase     
   camera_front     
   contacts_tab     
   worlds_tab       
   users_tab        
   telegrams_tab    
   teleports_tab    
   help_tab         
   search_tab       
   afk     
   mouse_move 
   sdk_event 

The command "sdk_event" is a special command which requires further elaboration. In the toolbar config, you may assign any number of buttons to this action in the following format:

sdk_event <image_number> <message_number> <id_number>

As with other commands, image_number and message_number specify what toolbar button image and message set entry to use for the button. For sdk_event, all fields must be specified, even message number. Additionally, an sdk_event button must be assigned a message id. This can be any number between 0 and 32767. When the user presses this button, a message is sent to the world server along with the given id, which is in turn sent to all bots with caretaker status. In this way a bot can be written than can react to toolbar buttons to perform various game-type functions such as "attack" or "show inventory". This provides another way for the user to interact with game-style worlds.

Note that this command is meaningless unless used with a world configured to handle these special commands. This feature requires the 3.5 versions of the world server and SDK.