Frontend for viewing Dungeon Defender layouts
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.html 3.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Dungeon Defenders Viewer</title>
  5. <script src="res/js/jquery-1.7.1.min.js" type="text/javascript"></script>
  6. <script src="res/js/jquery-ui-1.8.17.custom.min.js" type="text/javascript"></script>
  7. <script src="res/data/levels.js" type="text/javascript"></script>
  8. <script src="res/data/towers.js" type="text/javascript"></script>
  9. <script src="res/data/layout.js" type="text/javascript"></script>
  10. <script type="text/javascript">
  11. $(function() {
  12. var activeTower, thisLevel;
  13. $.fn.rotate = function(rot) {
  14. return this.css('-webkit-transform', 'rotate(' + rot + 'deg)')
  15. .css('-moz-transform', 'rotate(' + rot + 'deg');
  16. };
  17. $.fn.offsetFrom = function(el) {
  18. var offset = this.offset();
  19. var otherOffset = $(el).offset();
  20. return {top: offset.top - otherOffset.top, left: offset.left - otherOffset.left};
  21. }
  22. function createBaseElForTower(key) {
  23. var type = towers[key];
  24. return $('<img>')
  25. .attr('src', type.image)
  26. .attr('alt', type.name)
  27. .data('type', key)
  28. .addClass('tower');
  29. }
  30. function createElForTower(tower) {
  31. return createBaseElForTower(tower.type)
  32. .data('tower', tower)
  33. .draggable()
  34. .css('position', 'absolute')
  35. .offset(adjustMapOffset(tower.position, thisLevel))
  36. .rotate(tower.rotation);
  37. }
  38. function adjustMapOffset(towerOffset, level, reverse) {
  39. var res = $.extend({}, towerOffset);
  40. if (level.offsets && !reverse) {
  41. res.left += level.offsets.left;
  42. res.top += level.offsets.top;
  43. }
  44. if (level.scale) {
  45. if (reverse) {
  46. res.left /= level.scale.left;
  47. res.top /= level.scale.top;
  48. } else {
  49. res.left *= level.scale.left;
  50. res.top *= level.scale.top;
  51. }
  52. }
  53. if (level.offsets && reverse) {
  54. res.left -= level.offsets.left;
  55. res.top -= level.offsets.top;
  56. }
  57. return res;
  58. }
  59. $.each(towers, function(key) {
  60. createBaseElForTower(key, this).appendTo($('#palette'));
  61. });
  62. $('.tower,.core').draggable({
  63. helper: 'clone',
  64. containment: 'window',
  65. stop: function(evt, ui) {
  66. var tower = {
  67. type: $(this).data('type'),
  68. rotation: 0,
  69. position: adjustMapOffset(ui.helper.offsetFrom('#mapcontainer'), thisLevel, 1)
  70. };
  71. layout.towers.push(tower);
  72. createElForTower(tower).appendTo($('#mapcontainer'));
  73. }
  74. });
  75. thisLevel = levels[layout.level - 1];
  76. $('#mapcontainer').css('background-image', 'url("' + thisLevel.minimap + '")');
  77. $.each(layout.towers, function() {
  78. createElForTower(this).appendTo($('#mapcontainer'));
  79. });
  80. });
  81. </script>
  82. <style type="text/css">
  83. #mapcontainer { position: relative; width: 1024px; height: 1024px; }
  84. .tower, .core { width: 40px; height: 40px; }
  85. </style>
  86. </head>
  87. <body>
  88. <div id="mapcontainer"></div>
  89. <img src="res/images/coreIcon.png" alt="core" class="core">
  90. <div id="palette">
  91. </div>
  92. </body>
  93. </html>