def exit(self, quit=True):
     
     self.end_simulation()
     self.cleanup_rendering_objects()
     self.cleanup_match_state_variables()
     self.reset_GUI_variables()
     self.flush_recording()
     self.initialized = False
     self.exiting = True
     self.exit_indicator = True
     
     wotsrendering.flush()
     
     self.unregister_network_callbacks()
     
     if (versusclient.local_player_is_in_match() or 
     (versusclient.dummies_only() and gamestate.hosting)):
         versusclient.listener.end_match()
         
     else:
         if quit:
             #if you're a spectator go to the main menu
             versusclient.listener.close()
             versusclient.unload()
             gamestate.mode = gamestate.Modes.MAINMENU
     
     self.chatting = False
def unload():
    global loaded
    global exit_button
    global start_match_label
    global ip_address_input
    global player_status_ui_dictionary
    global join_match_button
    global assigned_positions
    global spectate_button
    global local_player_position
    global local_player_container_created
    
    exit_button = None
    loaded = False
    start_match_label = None
    network_message_label = None
    join_match_button = None
    assigned_positions = None
    spectate_button = None
    player_status_ui_dictionary = None
    local_player_position = None
    local_player_container_created = False
    
    if versusclient.connected():
        unregister_network_callbacks()
        
        #clean up any remaining messages to the client
        versusclient.get_network_messages()
        versusclient.listener.Pump()
        
        versusclient.listener.close()
        versusclient.unload()
        print("listener closed")
    
    if gamestate.hosting:
        #clean up any remaining messages to the server
        versusserver.server.Pump()
        
        versusserver.server.close()
        versusserver.server = None
        print("server closed")
        
        versusserver.broadcast.close()
        versusserver.broadcast = None
        print("server broadcasting closed")
        
        gamestate.hosting = False