diff --git a/AndorsTrailEdit/controllers.js b/AndorsTrailEdit/controllers.js
index a250492d1..167ebfdb1 100644
--- a/AndorsTrailEdit/controllers.js
+++ b/AndorsTrailEdit/controllers.js
@@ -262,6 +262,25 @@ var ATEditor = (function(ATEditor, model, importExport, exampleData) {
};
};
+ controllers.SelectIconController = function($scope, $routeParams) {
+ var _callback = function() {};
+ $scope.selectedSection = '';
+ $scope.sections = [];
+ _.each([ 'monster', 'item', 'actorcondition' ], function(id) {
+ $scope.sections.push({id: id, imageIDs: ATEditor.tilesets.getIconIDsForSection(id)});
+ });
+
+ this.startSelecting = function(sectionId, callback) {
+ _callback = callback;
+ $scope.selectedSection = sectionId;
+ $scope.$apply();
+ };
+
+ $scope.imageSelected = function(iconID) {
+ if (_callback) { _callback(iconID); }
+ };
+ };
+
ATEditor.controllers = controllers;
return ATEditor;
})(ATEditor, ATEditor.model, ATEditor.importExport, ATEditor.exampleData);
diff --git a/AndorsTrailEdit/directives.js b/AndorsTrailEdit/directives.js
index 3de960180..61b486679 100644
--- a/AndorsTrailEdit/directives.js
+++ b/AndorsTrailEdit/directives.js
@@ -66,5 +66,24 @@ var ATEditor = (function(ATEditor, app, tilesets, $) {
};
});
+ 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 + "'");
+ //scope.$apply();
+ });
+ element.modal('show');
+ }
+ element.bind('click', openDialog);
+ }
+ }
+ });
+
return ATEditor;
})(ATEditor, ATEditor.app, ATEditor.tilesets, jQuery);
diff --git a/AndorsTrailEdit/edit_actorcondition.html b/AndorsTrailEdit/edit_actorcondition.html
index e827bffdf..2c9649bde 100644
--- a/AndorsTrailEdit/edit_actorcondition.html
+++ b/AndorsTrailEdit/edit_actorcondition.html
@@ -4,7 +4,7 @@
diff --git a/AndorsTrailEdit/edit_item.html b/AndorsTrailEdit/edit_item.html
index dacb30dae..89981254e 100644
--- a/AndorsTrailEdit/edit_item.html
+++ b/AndorsTrailEdit/edit_item.html
@@ -4,7 +4,7 @@
diff --git a/AndorsTrailEdit/edit_monster.html b/AndorsTrailEdit/edit_monster.html
index 11f872086..289b0a6c7 100644
--- a/AndorsTrailEdit/edit_monster.html
+++ b/AndorsTrailEdit/edit_monster.html
@@ -4,7 +4,7 @@
diff --git a/AndorsTrailEdit/editor.html b/AndorsTrailEdit/editor.html
index 77289ea6b..8c4ca1f03 100644
--- a/AndorsTrailEdit/editor.html
+++ b/AndorsTrailEdit/editor.html
@@ -76,10 +76,26 @@
+
diff --git a/AndorsTrailEdit/tilesets.js b/AndorsTrailEdit/tilesets.js
index e373e3542..d1c67bd73 100644
--- a/AndorsTrailEdit/tilesets.js
+++ b/AndorsTrailEdit/tilesets.js
@@ -69,63 +69,79 @@ var ATEditor = (function(ATEditor, utils) {
});
}
- add("actorconditions_1", {x:14, y:8}, [ 'conditions' ] );
- add("actorconditions_2", {x:3, y:1}, [ 'conditions' ] );
- add("items_armours", {x:14, y:3}, [ 'items' ] );
- add("items_armours_3", {x:10, y:4}, [ 'items' ] );
- add("items_armours_2", {x:7, y:1}, [ 'items' ] );
- add("items_weapons", {x:14, y:6}, [ 'items' ] );
- add("items_weapons_3", {x:13, y:5}, [ 'items' ] );
- add("items_weapons_2", {x:7, y:1}, [ 'items' ] );
- add("items_jewelry", {x:14, y:1}, [ 'items' ] );
- add("items_rings_1", {x:10, y:3}, [ 'items' ] );
- add("items_necklaces_1", {x:10, y:3}, [ 'items' ] );
- add("items_consumables", {x:14, y:5}, [ 'items' ] );
- add("items_books", {x:11, y:1}, [ 'items' ] );
- add("items_misc", {x:14, y:4}, [ 'items' ] );
- add("items_misc_2", {x:20, y:12}, [ 'items' ] );
- add("items_misc_3", {x:20, y:12}, [ 'items' ] );
- add("items_misc_4", {x:20, y:4}, [ 'items' ] );
- add("monsters_armor1", {x: 1, y:1}, [ 'monsters' ] );
- add("monsters_demon1", {x: 1, y:1}, [ 'monsters' ], {x:64, y:64} );
- add("monsters_dogs", {x: 7, y:1}, [ 'monsters' ] );
- add("monsters_eye1", {x: 1, y:1}, [ 'monsters' ] );
- add("monsters_eye2", {x: 1, y:1}, [ 'monsters' ] );
- add("monsters_eye3", {x: 1, y:1}, [ 'monsters' ] );
- add("monsters_eye4", {x: 1, y:1}, [ 'monsters' ] );
- add("monsters_ghost1", {x: 1, y:1}, [ 'monsters' ] );
- add("monsters_hydra1", {x: 1, y:1}, [ 'monsters' ] );
- add("monsters_insects", {x: 6, y:1}, [ 'monsters' ] );
- add("monsters_liches", {x: 4, y:1}, [ 'monsters' ] );
- add("monsters_mage", {x: 1, y:1}, [ 'monsters' ] );
- add("monsters_mage2", {x: 1, y:1}, [ 'monsters' ] );
- add("monsters_man1", {x: 1, y:1}, [ 'monsters' ] );
- add("monsters_men", {x: 9, y:1}, [ 'monsters' ] );
- add("monsters_men2", {x: 10, y:1}, [ 'monsters' ] );
- add("monsters_misc", {x: 12, y:1}, [ 'monsters' ] );
- add("monsters_rats", {x: 5, y:1}, [ 'monsters' ] );
- add("monsters_rogue1", {x: 1, y:1}, [ 'monsters' ] );
- add("monsters_skeleton1", {x: 1, y:1}, [ 'monsters' ] );
- add("monsters_skeleton2", {x: 1, y:1}, [ 'monsters' ] );
- add("monsters_snakes", {x: 6, y:1}, [ 'monsters' ] );
- add("monsters_cyclops", {x: 1, y:1}, [ 'monsters' ], {x:64, y:96} );
- add("monsters_warrior1", {x: 1, y:1}, [ 'monsters' ] );
- add("monsters_wraiths", {x: 3, y:1}, [ 'monsters' ] );
- add("monsters_zombie1", {x: 1, y:1}, [ 'monsters' ] );
- add("monsters_zombie2", {x: 1, y:1}, [ 'monsters' ] );
- add("monsters_karvis1", {x: 2, y:1}, [ 'monsters' ] );
- add("monsters_karvis2", {x: 9, y:1}, [ 'monsters' ] );
- add("monsters_rltiles1", {x:20, y:8}, [ 'monsters' ] );
- add("monsters_rltiles2", {x:20, y:9}, [ 'monsters' ] );
- add("monsters_rltiles3", {x:10, y:3}, [ 'monsters' ] );
- add("monsters_redshrike1", {x:6, y:1}, [ 'monsters' ] );
- add("monsters_ld1", {x:20, y:12}, [ 'monsters' ] );
- add("monsters_ld2", {x:20, y:12}, [ 'monsters' ] );
+ var getTilesetsForSection = function(section) {
+ return _.filter(_tilesets, function(tileset) {
+ return _.contains(tileset._usedFor, section);
+ });
+ }
+ var getIconIDsForSection = function(section) {
+ var result = [];
+ _.each(getTilesetsForSection(section), function(tileset) {
+ for(var i = 0; i < tileset._numTiles.y * tileset._numTiles.x; i++) {
+ result.push(createImageID(tileset._name, i));
+ }
+ });
+ return result;
+ }
+
+ add("actorconditions_1", {x:14, y:8}, [ 'actorcondition' ] );
+ add("actorconditions_2", {x:3, y:1}, [ 'actorcondition' ] );
+ add("items_armours", {x:14, y:3}, [ 'item' ] );
+ add("items_armours_3", {x:10, y:4}, [ 'item' ] );
+ add("items_armours_2", {x:7, y:1}, [ 'item' ] );
+ add("items_weapons", {x:14, y:6}, [ 'item' ] );
+ add("items_weapons_3", {x:13, y:5}, [ 'item' ] );
+ add("items_weapons_2", {x:7, y:1}, [ 'item' ] );
+ add("items_jewelry", {x:14, y:1}, [ 'item' ] );
+ add("items_rings_1", {x:10, y:3}, [ 'item' ] );
+ add("items_necklaces_1", {x:10, y:3}, [ 'item' ] );
+ add("items_consumables", {x:14, y:5}, [ 'item' ] );
+ add("items_books", {x:11, y:1}, [ 'item' ] );
+ add("items_misc", {x:14, y:4}, [ 'item' ] );
+ add("items_misc_2", {x:20, y:12}, [ 'item' ] );
+ add("items_misc_3", {x:20, y:12}, [ 'item' ] );
+ add("items_misc_4", {x:20, y:4}, [ 'item' ] );
+ add("monsters_armor1", {x: 1, y:1}, [ 'monster' ] );
+ add("monsters_demon1", {x: 1, y:1}, [ 'monster' ], {x:64, y:64} );
+ add("monsters_dogs", {x: 7, y:1}, [ 'monster' ] );
+ add("monsters_eye1", {x: 1, y:1}, [ 'monster' ] );
+ add("monsters_eye2", {x: 1, y:1}, [ 'monster' ] );
+ add("monsters_eye3", {x: 1, y:1}, [ 'monster' ] );
+ add("monsters_eye4", {x: 1, y:1}, [ 'monster' ] );
+ add("monsters_ghost1", {x: 1, y:1}, [ 'monster' ] );
+ add("monsters_hydra1", {x: 1, y:1}, [ 'monster' ], {x:64, y:64} );
+ add("monsters_insects", {x: 6, y:1}, [ 'monster' ] );
+ add("monsters_liches", {x: 4, y:1}, [ 'monster' ] );
+ add("monsters_mage", {x: 1, y:1}, [ 'monster' ] );
+ add("monsters_mage2", {x: 1, y:1}, [ 'monster' ] );
+ add("monsters_man1", {x: 1, y:1}, [ 'monster' ] );
+ add("monsters_men", {x: 9, y:1}, [ 'monster' ] );
+ add("monsters_men2", {x: 10, y:1}, [ 'monster' ] );
+ add("monsters_misc", {x: 12, y:1}, [ 'monster' ] );
+ add("monsters_rats", {x: 5, y:1}, [ 'monster' ] );
+ add("monsters_rogue1", {x: 1, y:1}, [ 'monster' ] );
+ add("monsters_skeleton1", {x: 1, y:1}, [ 'monster' ] );
+ add("monsters_skeleton2", {x: 1, y:1}, [ 'monster' ] );
+ add("monsters_snakes", {x: 6, y:1}, [ 'monster' ] );
+ add("monsters_cyclops", {x: 1, y:1}, [ 'monster' ], {x:64, y:96} );
+ add("monsters_warrior1", {x: 1, y:1}, [ 'monster' ] );
+ add("monsters_wraiths", {x: 3, y:1}, [ 'monster' ] );
+ add("monsters_zombie1", {x: 1, y:1}, [ 'monster' ] );
+ add("monsters_zombie2", {x: 1, y:1}, [ 'monster' ] );
+ add("monsters_karvis1", {x: 2, y:1}, [ 'monster' ] );
+ add("monsters_karvis2", {x: 9, y:1}, [ 'monster' ] );
+ add("monsters_rltiles1", {x:20, y:8}, [ 'monster' ] );
+ add("monsters_rltiles2", {x:20, y:9}, [ 'monster' ] );
+ add("monsters_rltiles3", {x:10, y:3}, [ 'monster' ] );
+ add("monsters_redshrike1", {x:6, y:1}, [ 'monster' ] );
+ add("monsters_ld1", {x:20, y:12}, [ 'monster' ] );
+ add("monsters_ld2", {x:20, y:12}, [ 'monster' ] );
ATEditor.tilesets = {
getTileset: getTileset
,parseImageID: parseImageID
,createImageID: createImageID
+ ,getIconIDsForSection: getIconIDsForSection
};
return ATEditor;
})(ATEditor, ATEditor.utils);