protected void updateOffScreen(Game game) {
        GameMap map = game.getMap();
        
        if ((getJob() == null || !getJob().isActivated()) && !isOnScreen()) {
            
            Point entrance = map.getWorkerEntrance();
            if (map.get(entrance.x, entrance.y-1).getKind() ==
                    Tile.Kind.FLOOR) {
                pos = new Point(entrance.x, entrance.y);
                moveTo(map, entrance.x, entrance.y-1);
            }
            
            if (getJob() != null) {
                targetPos = getJob().requiredPosition();
            } else {
                List<Point> floorTiles = new ArrayList<Point>(
                        map.getWidth()*map.getHeight());
                for (int x = 0; x < map.getWidth(); ++x)
                for (int y = 0; y < map.getHeight(); ++y) {
                    if (map.get(x,y).isWalkable())
                        floorTiles.add(new Point(x,y));
                }
                if (floorTiles.size() != 0) {
                    targetPos = floorTiles.get(
                            new Random().nextInt(floorTiles.size()));
                }
            }
        }
    }