text: /**
   * Load Skin for Bounce.
   */
  // tiles: A 250x200 set of 20 map images.
  // goal: A 20x34 goal image.
  // background: Number of 400x400 background images. Randomly select one if
  // specified, otherwise, use background.png.
  // graph: Colour of optional grid lines, or false.
  
  var skinsBase = require('../skins');
  
  var CONFIGS = {
  
    bounce: {
      nonDisappearingPegmanHittingObstacle: true,
      ballYOffset: 10
    }
  
  };
  
  exports.load = function (assetUrl, id) {
    var skin = skinsBase.load(assetUrl, id);
    var config = CONFIGS[skin.id];
  
    skin.retro = {
      background: skin.assetUrl('retro_background.png'),
      tiles: skin.assetUrl('retro_tiles_wall.png'),
      goalTiles: skin.assetUrl('retro_tiles_goal.png'),
      paddle: skin.assetUrl('retro_paddle.png'),
      ball: skin.assetUrl('retro_ball.png')
    };
  
    // Images
    skin.tiles = skin.assetUrl('tiles_wall.png');
    skin.goalTiles = skin.assetUrl('tiles_goal.png');
    skin.goal = skin.assetUrl('goal.png');
    skin.goalSuccess = skin.assetUrl('goal_success.png');
    skin.ball = skin.assetUrl('ball.png');
    skin.paddle = skin.assetUrl('paddle.png');
    skin.obstacle = skin.assetUrl('obstacle.png');
    if (config.nonDisappearingPegmanHittingObstacle) {
      skin.nonDisappearingPegmanHittingObstacle = true;
    } else {
      skin.nonDisappearingPegmanHittingObstacle = false;
    }
    skin.obstacleScale = config.obstacleScale || 1.0;
    skin.largerObstacleAnimationTiles =
        skin.assetUrl(config.largerObstacleAnimationTiles);
    skin.hittingWallAnimation =
        skin.assetUrl(config.hittingWallAnimation);
    skin.approachingGoalAnimation =
        skin.assetUrl(config.approachingGoalAnimation);
    // Sounds
    skin.rubberSound = [skin.assetUrl('wall.mp3'), skin.assetUrl('wall.ogg')];
    skin.flagSound = [skin.assetUrl('win_goal.mp3'),
                      skin.assetUrl('win_goal.ogg')];
    skin.crunchSound = [skin.assetUrl('wall0.mp3'), skin.assetUrl('wall0.ogg')];
    skin.ballStartSound = [skin.assetUrl('ball_start.mp3'),
                           skin.assetUrl('ball_start.ogg')];
    skin.winPointSound = [skin.assetUrl('1_we_win.mp3'),
                          skin.assetUrl('1_we_win.ogg')];
    skin.winPoint2Sound = [skin.assetUrl('2_we_win.mp3'),
                           skin.assetUrl('2_we_win.ogg')];
    skin.losePointSound = [skin.assetUrl('1_we_lose.mp3'),
                           skin.assetUrl('1_we_lose.ogg')];
    skin.losePoint2Sound = [skin.assetUrl('2_we_lose.mp3'),
                            skin.assetUrl('2_we_lose.ogg')];
    skin.goal1Sound = [skin.assetUrl('1_goal.mp3'), skin.assetUrl('1_goal.ogg')];
    skin.goal2Sound = [skin.assetUrl('2_goal.mp3'), skin.assetUrl('2_goal.ogg')];
    skin.woodSound = [skin.assetUrl('1_paddle_bounce.mp3'),
                      skin.assetUrl('1_paddle_bounce.ogg')];
    skin.retroSound = [skin.assetUrl('2_paddle_bounce.mp3'),
                       skin.assetUrl('2_paddle_bounce.ogg')];
    skin.slapSound = [skin.assetUrl('1_wall_bounce.mp3'),
                      skin.assetUrl('1_wall_bounce.ogg')];
    skin.hitSound = [skin.assetUrl('2_wall_bounce.mp3'),
                     skin.assetUrl('2_wall_bounce.ogg')];
  
    // Settings
    if (config.background !== undefined) {
      var index = Math.floor(Math.random() * config.background);
      skin.background = skin.assetUrl('background' + index + '.png');
    } else {
      skin.background = skin.assetUrl('background.png');
    }
    skin.pegmanHeight = config.pegmanHeight || 52;
    skin.pegmanWidth = config.pegmanWidth || 49;
    skin.ballYOffset = config.ballYOffset || 0;
    skin.paddleYOffset = config.paddleYOffset || 0;
    return skin;
  };
  