diff --git a/AndorsTrailEdit/AndorsTrailEditor.js b/AndorsTrailEdit/AndorsTrailEditor.js deleted file mode 100644 index 7845325ae..000000000 --- a/AndorsTrailEdit/AndorsTrailEditor.js +++ /dev/null @@ -1,336 +0,0 @@ -var model; -var imageSelector; -var tabs; -var questlogDialog; -var onHitConditionsDialog; -var equipConditionsDialog; -var droplistItemDialog; -var phraseRewardDialog; - -require([ - "FieldList", - "DataStore", - "ImageSelector", - "EditorTabs", - "EditorFunctions", - "ImportExport", - "Editor_ActorCondition", - "Editor_Quest", - "Editor_Item", - "Editor_Droplist", - "Editor_Conversation", - "Editor_Monster", - "inc/jquery.dynatree.min", - "inc/mustache", - ], function() { - - function loadResourceFile(filename, onSuccess) { - var url = document.location.href; - url = url.substring(0, url.lastIndexOf('/')); - url = url.substring(0, url.lastIndexOf('/')); - url += "/AndorsTrail/res/" + filename; - //var url = "http://andors-trail.googlecode.com/git/AndorsTrail/res/" + filename; - $.get(url, function(data) { - onSuccess(data); - }, 'text') - .error(function() { alert("Error loading " + url); }); - } - - function openTabForObject(obj, dataStore) { - tabs.openTabForObject(obj, dataStore.objectTypename, obj[dataStore.nameField]); - } - - function bindObjectsToItemList(itemListDiv, dataStore) { - itemListDiv.children().remove(); - var createListItem = function(obj) { - var item = $( Mustache.to_html( $('#listitem').html(), { name: obj[dataStore.nameField] } ) ); - if (dataStore.iconField) { - var elem = $( 'img', item ); - imageSelector.setImage( elem , obj[dataStore.iconField] , 0.7); - } - return item; - }; - var addToList = function(obj) { - var item = createListItem(obj); - item.click(function() { openTabForObject(obj, dataStore); }); - itemListDiv.append(item); - item.hide().fadeIn('slow'); - }; - dataStore.items.forEach(addToList); - dataStore.onAdded = addToList; - dataStore.onDeserialized = function() { - bindObjectsToItemList(itemListDiv, dataStore); - // TODO: Should also close all tabs. - }; - dataStore.onPropertyChanged = function(obj, propertyName, value) { - var listItem = $("li:eq(" + dataStore.items.indexOf(obj) + ")", itemListDiv); - listItem.html( createListItem(obj).html() ); - if (propertyName == dataStore.nameField) { - //TODO: Should this really be in the same function? - // (splitting the left part from the tab controls would reduce coupling, which would be a good thing.) - tabs.renameTabForObject(obj, value); - } - }; - } - - function bindEditorType(dataStore, div, createObjectEditor, newObjectCreator) { - tabs.registerEditorType(dataStore.objectTypename, createObjectEditor); - - bindObjectsToItemList( $( "ul", div ), dataStore ); - - $( "#add", div ) - .button() - .click(function() { - var obj = newObjectCreator(); - dataStore.add(obj); - openTabForObject( obj, dataStore ); - }); - - $( "#clear", div ) - .button() - .click(function() { - if (confirm("Are you sure?")) { - dataStore.clear(); - } - }); - } - - function addExampleModelItems(model) { - model.actorConditions.add({id: "bless", name: "Bless", isPositive: true, iconID: "actorconditions_1:38", category: 0, hasAbilityEffect: 1, attackChance: 15, blockChance: 5}); - model.actorConditions.add({id: "poison_weak", name: "Weak Poison", iconID: "actorconditions_1:60", category: 3, hasRoundEffect: 1, round_visualEffectID: 2, round_boostHP_Min: -1, round_boostHP_Max: -1}); - - model.quests.add({id: "testQuest", name: "Test quest", stages: [ { progress: 10, logText: "Stage 10"} , { progress: 20, logText: "Stage 20", finishesQuest: 1 } ] }); - - model.items.add({id: "item0", iconID: "items_weapons:0", name: "Longsword", category: 'lsword', baseMarketCost: 51, hasEquipEffect: 1, equip_attackChance: 10, equip_attackDamage_Min: 2, equip_attackDamage_Max: 4, equip_attackCost: 4}); - model.items.add({id: "dmg_ring1", iconID: "items_jewelry:0", name: "Ring of damage +1", category: 'ring', baseMarketCost: 62, hasEquipEffect: 1, equip_attackDamage_Min: 1, equip_attackDamage_Max: 1}); - - model.droplists.add({id: "merchant1", items: [ { itemID: 'dmg_ring1', quantity_Min: 4, quantity_Max: 5, chance: 100 } , { itemID: 'item0', quantity_Min: 1, quantity_Max: 1, chance: 100 } ] } ); - - model.dialogue.add({id: "mikhail_default", message: 'Anything else I can help you with?', replies: [ { text: 'Do you have any tasks for me?', nextPhraseID: 'mikhail_tasks' }, { text: 'Is there anything else you can tell me about Andor?', nextPhraseID: 'mikhail_andor1' } ]}); - model.dialogue.add({id: 'mikhail_andor1', message: 'As I said, Andor went out yesterday and hasn\'t been back since. I\'m starting to worry about him. Please go look for your brother, he said he would only be out a short while.'}); - model.dialogue.add({id: 'mikhail_tasks', message: 'Oh yes, there were some things I need help with, bread and rats. Which one would you like to talk about?'}); - - model.monsters.add({id: "small_ant", name: "Small ant", iconID: "monsters_insects:2", maxHP: 30, size: '1x1'}); - model.monsters.add({id: "red_ant", name: "Red ant", iconID: "monsters_insects:3", maxHP: 20, size: '1x1'}); - model.monsters.add({id: "wasp", name: "Wasp", iconID: "monsters_insects:1", maxHP: 10, size: '1x1'}); - } - - $(document).ready(function() { - - model = { - actorConditions: new DataStore({ - objectTypename: 'actorcondition' - ,fieldList: new FieldList("[id|name|iconID|category|isStacking|isPositive|" - + "hasRoundEffect|round_visualEffectID|round_boostHP_Min|round_boostHP_Max|round_boostAP_Min|round_boostAP_Max|" - + "hasFullRoundEffect|fullround_visualEffectID|fullround_boostHP_Min|fullround_boostHP_Max|fullround_boostAP_Min|fullround_boostAP_Max|" - + "hasAbilityEffect|boostMaxHP|boostMaxAP|moveCostPenalty|attackCost|attackChance|criticalChance|criticalMultiplier|attackDamage_Min|attackDamage_Max|blockChance|damageResistance|" - + "];" - ) - ,idField: 'id' - ,nameField: 'name' - ,iconField: 'iconID' - }) - ,quests: new DataStore({ - objectTypename: 'quest' - ,fieldList: new FieldList("[id|name|showInLog|stages[progress|logText|rewardExperience|finishesQuest|]|];") - ,idField: 'id' - ,nameField: 'name' - }) - ,items: new DataStore({ - objectTypename: 'item' - ,fieldList: new FieldList("[id|iconID|name|category|displaytype|hasManualPrice|baseMarketCost|" - + "hasEquipEffect|equip_boostMaxHP|equip_boostMaxAP|equip_moveCostPenalty|equip_attackCost|equip_attackChance|equip_criticalChance|equip_criticalMultiplier|equip_attackDamage_Min|equip_attackDamage_Max|equip_blockChance|equip_damageResistance|equip_conditions[condition|magnitude|]|" - + "hasUseEffect|use_boostHP_Min|use_boostHP_Max|use_boostAP_Min|use_boostAP_Max|use_conditionsSource[condition|magnitude|duration|chance|]|" - + "hasHitEffect|hit_boostHP_Min|hit_boostHP_Max|hit_boostAP_Min|hit_boostAP_Max|hit_conditionsSource[condition|magnitude|duration|chance|]|hit_conditionsTarget[condition|magnitude|duration|chance|]|" - + "hasKillEffect|kill_boostHP_Min|kill_boostHP_Max|kill_boostAP_Min|kill_boostAP_Max|kill_conditionsSource[condition|magnitude|duration|chance|]|" - + "];" - ) - ,idField: 'id' - ,nameField: 'name' - ,iconField: 'iconID' - }) - ,droplists: new DataStore({ - objectTypename: 'droplist' - ,fieldList: new FieldList("[id|items[itemID|quantity_Min|quantity_Max|chance|]|];") - ,idField: 'id' - ,nameField: 'id' - }) - ,dialogue: new DataStore({ - objectTypename: 'dialogue' - ,fieldList: new FieldList("[id|message|rewards[rewardType|rewardID|value|]|replies[text|nextPhraseID|requires_Progress|requires_itemID|requires_Quantity|requires_Type|]|];") - ,idField: 'id' - ,nameField: 'id' - }) - ,monsters: new DataStore({ - objectTypename: 'monster' - ,fieldList: new FieldList("[id|iconID|name|tags|size|monsterClass|unique|faction|maxHP|maxAP|moveCost|attackCost|attackChance|criticalChance|criticalMultiplier|attackDamage_Min|attackDamage_Max|blockChance|damageResistance|droplistID|phraseID|" - + "hasHitEffect|onHit_boostHP_Min|onHit_boostHP_Max|onHit_boostAP_Min|onHit_boostAP_Max|onHit_conditionsSource[condition|magnitude|duration|chance|]|onHit_conditionsTarget[condition|magnitude|duration|chance|]|" - + "];" - ) - ,idField: 'id' - ,nameField: 'name' - ,iconField: 'iconID' - }) - ,itemCategories: new DataStore({ - objectTypename: 'itemcategory' - ,fieldList: new FieldList("[id|name|actionType|inventorySlot|size|];") - ,idField: 'id' - ,nameField: 'name' - }) - }; - - addExampleModelItems(model); - - - - - imageSelector = new ImageSelector("../AndorsTrail/res/drawable/", $( "#dialog-images" ) ); - imageSelector.add(new TilesetImage("actorconditions_1", {x:14, y:8}, undefined, [ 'conditions' ] )); - imageSelector.add(new TilesetImage("actorconditions_2", {x:3, y:1}, undefined, [ 'conditions' ] )); - imageSelector.add(new TilesetImage("items_armours", {x:14, y:3}, undefined, [ 'items' ] )); - imageSelector.add(new TilesetImage("items_armours_3", {x:10, y:4}, undefined, [ 'items' ] )); - imageSelector.add(new TilesetImage("items_armours_2", {x:7, y:1}, undefined, [ 'items' ] )); - imageSelector.add(new TilesetImage("items_weapons", {x:14, y:6}, undefined, [ 'items' ] )); - imageSelector.add(new TilesetImage("items_weapons_3", {x:13, y:5}, undefined, [ 'items' ] )); - imageSelector.add(new TilesetImage("items_weapons_2", {x:7, y:1}, undefined, [ 'items' ] )); - imageSelector.add(new TilesetImage("items_jewelry", {x:14, y:1}, undefined, [ 'items' ] )); - imageSelector.add(new TilesetImage("items_rings_1", {x:10, y:3}, undefined, [ 'items' ] )); - imageSelector.add(new TilesetImage("items_necklaces_1", {x:10, y:3}, undefined, [ 'items' ] )); - imageSelector.add(new TilesetImage("items_consumables", {x:14, y:5}, undefined, [ 'items' ] )); - imageSelector.add(new TilesetImage("items_books", {x:11, y:1}, undefined, [ 'items' ] )); - imageSelector.add(new TilesetImage("items_misc", {x:14, y:4}, undefined, [ 'items' ] )); - imageSelector.add(new TilesetImage("items_misc_2", {x:20, y:12}, undefined, [ 'items' ] )); - imageSelector.add(new TilesetImage("items_misc_3", {x:20, y:12}, undefined, [ 'items' ] )); - imageSelector.add(new TilesetImage("items_misc_4", {x:20, y:4}, undefined, [ 'items' ] )); - imageSelector.add(new TilesetImage("monsters_armor1", {x: 1, y:1}, undefined, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_demon1", {x: 1, y:1}, {x:64, y:64}, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_dogs", {x: 7, y:1}, undefined, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_eye1", {x: 1, y:1}, undefined, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_eye2", {x: 1, y:1}, undefined, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_eye3", {x: 1, y:1}, undefined, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_eye4", {x: 1, y:1}, undefined, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_ghost1", {x: 1, y:1}, undefined, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_hydra1", {x: 1, y:1}, undefined, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_insects", {x: 6, y:1}, undefined, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_liches", {x: 4, y:1}, undefined, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_mage", {x: 1, y:1}, undefined, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_mage2", {x: 1, y:1}, undefined, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_man1", {x: 1, y:1}, undefined, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_men", {x: 9, y:1}, undefined, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_men2", {x: 10, y:1}, undefined, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_misc", {x: 12, y:1}, undefined, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_rats", {x: 5, y:1}, undefined, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_rogue1", {x: 1, y:1}, undefined, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_skeleton1", {x: 1, y:1}, undefined, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_skeleton2", {x: 1, y:1}, undefined, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_snakes", {x: 6, y:1}, undefined, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_cyclops", {x: 1, y:1}, {x:64, y:96}, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_warrior1", {x: 1, y:1}, undefined, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_wraiths", {x: 3, y:1}, undefined, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_zombie1", {x: 1, y:1}, undefined, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_zombie2", {x: 1, y:1}, undefined, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_karvis1", {x: 2, y:1}, undefined, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_karvis2", {x: 9, y:1}, undefined, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_rltiles1", {x:20, y:8}, undefined, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_rltiles2", {x:20, y:9}, undefined, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_rltiles3", {x:10, y:3}, undefined, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_redshrike1", {x:6, y:1}, undefined, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_ld1", {x:20, y:12}, undefined, [ 'monsters' ] )); - imageSelector.add(new TilesetImage("monsters_ld2", {x:20, y:12}, undefined, [ 'monsters' ] )); - - - - $( "#left #tools" ).accordion({ fillSpace: true }); - - tabs = new EditorTabs( $( "#center #tabs" ) ); - - - bindEditorType(model.actorConditions, $( "#tools #actorconditionlist" ), createActorConditionEditor, function() { - return {name: "New Condition", id: 'new_condition' }; - }); - bindEditorType(model.quests, $( "#tools #questlist" ), createQuestEditor, function() { - return {name: "New Quest", id: 'new_quest' }; - }); - bindEditorType(model.items, $( "#tools #itemlist" ), createItemEditor, function() { - return {name: "New Item", id: "new_item", category: 'other' }; - }); - bindEditorType(model.droplists, $( "#tools #droplist" ), createDroplistEditor, function() { - return {id: "new_droplist" }; - }); - bindEditorType(model.dialogue, $( "#tools #conversationlist" ), createConversationEditor, function() { - return {id: "new_conversation" }; - }); - bindEditorType(model.monsters, $( "#tools #monsterlist" ), createMonsterEditor, function() { - return {id: "new_monster", name: "New Monster", maxAP: 10, attackCost: 5, moveCost: 5 }; - }); - - - - $( "#buttons #import" ).button().click( showImportDialog ); - $( "#buttons #export" ).button().click( showExportDialog ); - - - var defaultButtons = { - Close: function() { $( this ).dialog( "close" ); } - }; - - prepareImportExportDialogs(defaultButtons); - - questlogDialog = $( "#templates #dialog-questlog" ) - .dialog({ - title: "Quest log item", - modal: true, - autoOpen: false, - width: 450, - buttons: defaultButtons - }); - - onHitConditionsDialog = $( "#templates #dialog-onHitConditions" ) - .dialog({ - title: "Actor status conditon", - modal: true, - autoOpen: false, - width: 350, - buttons: defaultButtons - }); - - equipConditionsDialog = $( "#templates #dialog-equipConditions" ) - .dialog({ - title: "Actor status conditon", - modal: true, - autoOpen: false, - width: 350, - buttons: defaultButtons - }); - - droplistItemDialog = $( "#templates #dialog-droplistItem" ) - .dialog({ - title: "Droplist item", - modal: true, - autoOpen: false, - width: 350, - buttons: defaultButtons - }); - - phraseRewardDialog = $( "#templates #dialog-phrasereward" ) - .dialog({ - title: "Phrase reward", - modal: true, - autoOpen: false, - width: 350, - buttons: defaultButtons - }); - - loadResourceFile( 'values/content_itemcategories.xml', function(data) { - var allContent = ''; - $( data ).find("string").each(function() { - allContent = allContent + $(this).text(); - }); - model.itemCategories.deserialize(allContent); - model.itemCategories.items.forEach(function(c) { - $("#editItem select#category").append( $("