This is a wiki for a reason. Anyone can contribute. If you see something that is inaccurate or can be improved, don't ask that it be fixed--just improve it.
[ Disclaimer, Create new user --- Wiki markup help, Install P99 ]

Difference between revisions of "MediaWiki:LocMaps.js"

From Project 1999 Wiki
Jump to: navigation, search
Line 61: Line 61:
 
           fontSize: '2em',
 
           fontSize: '2em',
 
           fontWeight: 'bold',
 
           fontWeight: 'bold',
           left: (zone.zeroX || 0) + x * (zone.modifierX || 1),
+
           left: (zone.zeroX || 0) + x * (zone.modifierX || -1),
 
           position: 'absolute',
 
           position: 'absolute',
           top: (zone.zeroY || 0) + y * (zone.modifierY || 1)
+
           top: (zone.zeroY || 0) + y * (zone.modifierY || -1)
 
         }));
 
         }));
 
};
 
};

Revision as of 16:41, 5 July 2019

(function() {

var zones = {
  'Eastern Wastes': {
      height: 452,
      image: 'Map_eastern_wastes.jpg', 
      modifierX: -.0380,
      modifierY: -.0380,
      test: {
        interval: 1000,
        maxX: 7000,
        maxY: 1000,
        minX: -6000,
        minY: -9000
      },
      width: 550,
      zeroX: 284,
      zeroY: 62
  },
/*  'Misty Thicket':{
    height: 341,
      image: 'Map_mistythicket.jpg', 
      modifier: ?,
      test: {
        maxX: 2000,
        maxY: 1000,
        minX: -3000,
        minY: -1000
      },
      width: 550,
      zeroX: ?,
      zeroY: ?
  },*/
  'Rivervale': { 
    modifierX: -.522,
    modifierY: -.517,
    height: 540,
    image: 'Rivervale.jpg', 
    test: {
      interval: 200,
      maxX: 200,
      maxY: 600,
      minX: -800,
      minY: -400,
    },
    width: 484,
    zeroX: 85,
    zeroY: 287
  }
};


var makeX = function(x, y, zone) {
  $('img[alt="' + zone.image + '"]')
    .parent()
    .css({position: 'absolute'})
    .append(
      $('<div class="x">x</div>')
        .css({
          color: 'red',
          fontSize: '2em',
          fontWeight: 'bold',
          left: (zone.zeroX || 0) + x * (zone.modifierX || -1),
          position: 'absolute',
          top: (zone.zeroY || 0) + y * (zone.modifierY || -1)
        }));
};

var addMap = function($locTd, imageName, width, height) {
  if ($('.map-wrapper').length) return;

  $locTd.append(
    '<div class="map-wrapper" style="position:relative">'+
      '<img alt="' + imageName + '" ' +
           'src="/images/'+ imageName + '" ' +
           'width="' + width + '" ' +
           'height="'+ height + '" ' +
           'class="thumbborder" ' +
           'title="' + imageName + '">' +
    '</div>'
  );
}

var showLocOnMap = function($locTd, zone, x, y) {
  addMap($locTd, zone.image, zone.width, zone.height);
  makeX(x, y, zone);
};

// Define two helper functions for building new zone definitions

// 1) Use this function to find the correct 0,0 point
window.testZeroZero = function(zone) {
  $('.x').remove();
  $('img[alt="' + zone.image + '"]').show()
  showLocOnMap($locTd, zone, 0, 0);
};

// 2) Use this function to generate a grid of alignment of X's (ie. xModifier/yModifier)
window.testGrid = function(zone) {
  $('.x').remove();
  for (var x = zone.test.maxX; x >= zone.test.minX; x -= zone.test.interval) {
    for (var y = zone.test.maxY; y >= zone.test.minY; y -= zone.test.interval) {
      showLocOnMap($locTd, zone, x, y);
    }
  };
}


try {
  var $locTd = $('b:contains("Location:")').parent();
  var match = $locTd.text().match(/\( *(\-?\d+), *(\-?\d+)\)/);
  var y = match[1]
  var x = match[2];
  var $zoneTd = $('b:contains("Zone:")').parent().text();
  var zoneName = $zoneTd.split('Zone:')[1].trim();
  var zone = zones[zoneName];
  if (!zone) return;

  var $link = $(' <a href="#">(Show on Map)</a>');
  $link
    .on('mouseover', function(e) {
      showLocOnMap($locTd, zone, x, y);
    })
    .on('mouseleave', function(e) {
      $('.map-wrapper').remove();
    });
  $locTd.append($link) 
} catch (err) {/* Didn't work, move on */}


})();