mirror of
https://github.com/OMGeeky/andors-trail.git
synced 2026-01-06 19:50:01 +01:00
106 lines
2.7 KiB
JavaScript
106 lines
2.7 KiB
JavaScript
var ATEditor = (function(ATEditor, app, tilesets, $) {
|
|
|
|
// Copied from http://jsfiddle.net/p69aT/
|
|
// -> originally from https://groups.google.com/forum/?fromgroups=#!topic/angular/7XVOebG6z6E
|
|
app.directive('fadey', function() {
|
|
return {
|
|
restrict: 'A',
|
|
link: function(scope, elm, attrs) {
|
|
elm = $(elm);
|
|
elm.hide();
|
|
elm.fadeIn();
|
|
|
|
scope.destroy = function(complete) {
|
|
elm.slideUp(function() {
|
|
if (complete) {
|
|
complete.apply(scope);
|
|
}
|
|
});
|
|
elm.fadeOut();
|
|
};
|
|
}
|
|
};
|
|
});
|
|
|
|
|
|
// Copied from
|
|
// http://www.codeproject.com/Articles/464939/Angular-JS-Using-Directives-to-Create-Custom-Attri
|
|
app.directive('ngDsFade', function () {
|
|
return function(scope, element, attrs) {
|
|
element.css('display', 'none');
|
|
scope.$watch(attrs.ngDsFade, function(value) {
|
|
if (value) {
|
|
element.fadeIn(400);
|
|
} else {
|
|
element.fadeOut(300);
|
|
}
|
|
});
|
|
};
|
|
});
|
|
|
|
|
|
app.directive('ngTileImage', function () {
|
|
return function(scope, element, attrs) {
|
|
var scale = attrs.ngTileImageScale;
|
|
if (!scale) scale = 1;
|
|
|
|
scope.$watch(attrs.ngTileImage, function(value) {
|
|
var img = tilesets.parseImageID(value);
|
|
var tileset = tilesets.getTileset(img.tilesetName);
|
|
var c = tileset.localIDToCoords(img.localID);
|
|
element.css({
|
|
"background-image": "url(" +img.path + img.tilesetName + ".png)",
|
|
"background-position": (-c.x)*scale+"px " + (-c.y)*scale+"px",
|
|
"width": tileset._tileSize.x * scale + "px",
|
|
"height": tileset._tileSize.y * scale + "px",
|
|
"cursor": "pointer"
|
|
});
|
|
if (scale && (scale != 1)) {
|
|
element.css({
|
|
"background-size":
|
|
tileset._tileSize.x * tileset._numTiles.x * scale + "px "
|
|
+ tileset._tileSize.y * tileset._numTiles.y * scale + "px "
|
|
});
|
|
}
|
|
});
|
|
};
|
|
});
|
|
|
|
app.directive('ngSelectImage', function () {
|
|
return {
|
|
link : function(scope, element, attrs) {
|
|
function openDialog() {
|
|
var element = angular.element('#selectIconModal');
|
|
var ctrl = element.controller();
|
|
ctrl.startSelecting(attrs.ngSelectImage, function(iconID) {
|
|
element.modal('hide');
|
|
var s = attrs.ngSelectImageDest || 'iconID';
|
|
eval("scope." + s + "='" + iconID + "'");
|
|
});
|
|
element.modal('show');
|
|
}
|
|
element.bind('click', openDialog);
|
|
}
|
|
}
|
|
});
|
|
|
|
|
|
// http://jsfiddle.net/ag5zC/22/
|
|
app.directive('treenode', function ($compile) {
|
|
var link;
|
|
return {
|
|
restrict: 'E',
|
|
terminal: true,
|
|
scope: { node: '=', onclick: '=' },
|
|
link: function (scope, element, attrs) {
|
|
if(!link) {
|
|
link = $compile(element.html());
|
|
}
|
|
element.replaceWith(link(scope.$new(), function(clone) { }));
|
|
}
|
|
}
|
|
});
|
|
|
|
return ATEditor;
|
|
})(ATEditor, ATEditor.app, ATEditor.tilesets, jQuery);
|