@Override
    public void mouseClicked(MouseEvent me) {
        
    	// right-clicking while holding a tower cancels the tower-holding effect
    	if(_towerHeld != TowerType.NONE && me.getButton() == MouseEvent.BUTTON3) {
            _towerHeld = TowerType.NONE;
            return ;
    	}
    	
        // if a tower is selected and the left mouse button is clicked
        if(_towerHeld != TowerType.NONE && me.getButton() == MouseEvent.BUTTON1) {
        	
        	// modify the network packet to request a tower
        	_handler.setBuyTower(_towerHeld,findBlockX(me.getX()), findBlockY(me.getY()));
        }
        
        // otherwise (if no tower is being held)
        else {
        	
        	// find the block coordinates of the mouse
        	int x = findBlockX(me.getX());
        	int y = findBlockY(me.getY());
        	
        	// if mouse is clicked while hovering over a tower, set  _statusmenu to hold the tower, 
        	// otherwise disassociate _statusmenu with any tower
        	if(_board.isTower(x,y)) {
        		_statusMenu.setTower((Tower) _board.getSquare(x, y));
//        		_statusMenu.repaint();
        	} else {
        		_statusMenu.setTower(null);
//        		_statusMenu.repaint();
        	}
        }
        
        requestFocus(true);
    }