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