/* * The MIT License * * Copyright 2015 Neil McAlister. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package dotaSoundEditor; import dotaSoundEditor.Helpers.Utility; import java.nio.file.Paths; public final class NamedItem extends NamedBase { private String iconName; public NamedItem() { internalName = "default"; friendlyName = "Default"; iconName = "default"; } public NamedItem(String _internalName, String _filePath) { internalName = _internalName; friendlyName = cleanUpName(internalName); internalFilePath = Paths.get(_filePath); iconName = generateIconName(friendlyName); } public String getIconName() { return this.iconName; } public void setIconName(String _iconName) { this.iconName = _iconName; } @Override protected String cleanUpName(String _nameToClean) { String nameToClean = _nameToClean; /* Newer item sounds break naming conventions established by old sound names. * The new convention is is DOTA_Item.<Name>.<Sound trigger>. * Usually. Sometimes. Maybe? */ if (nameToClean.contains("Midas")) { nameToClean = "Hand of Midas"; } else if (nameToClean.contains("SkullBasher")) { nameToClean = "Skull Basher"; } else if(nameToClean.contains("Butterfly")) { nameToClean = "Butterfly"; } else if(nameToClean.contains("BattleFury")) { nameToClean = "Battle Fury"; } else if(nameToClean.contains("Desolator")) { nameToClean = "Desolator"; } else if(nameToClean.contains("Maim")) { nameToClean = "Sange (and S&Y)"; } else { try { nameToClean = nameToClean.replaceAll("_", ""); int beginIndex = Utility.nthOccurrence(nameToClean, '.', 0); int endIndex = Utility.nthOccurrence(nameToClean, '.', 1); nameToClean = nameToClean.substring(beginIndex + 1, endIndex); nameToClean = Utility.splitCamelCase(nameToClean); nameToClean = nameToClean.replace("Of", "of"); nameToClean = handleSpecialCases(nameToClean); } catch(IndexOutOfBoundsException ex) { ex.printStackTrace(); return _nameToClean; } } return nameToClean; } @Override protected String handleSpecialCases(String nameToClean) { switch (nameToClean) { case "Armlet": nameToClean = "Armlet of Mordiggian"; break; case "Daedelus": nameToClean = "Daedalus"; break; case "Do E": nameToClean = "Drum of Endurance"; break; case "Cyclone": nameToClean = "Eul's Scepter of Divinity"; break; case "Heavens Halberd": nameToClean = "Heaven's Halberd"; break; case "Hot D": nameToClean = "Helm of the Dominator"; break; case "Linkens Sphere": nameToClean = "Linken's Sphere"; break; case "Manta": nameToClean = "Manta Style"; break; case "MKB": nameToClean = "Monkey King Bar"; break; case "Orchid": nameToClean = "Orchid Malevolence"; break; case "Pipe": nameToClean = "Pipe of Insight"; break; case "Refresher": nameToClean = "Refresher Orb"; break; case "Invisibility Sword": nameToClean = "Shadow Blade"; break; case "Sheepstick": nameToClean = "Scythe of Vyse"; break; case "Shivas Guard": nameToClean = "Shiva's Guard"; break; case "Veilof Discord": nameToClean = "Veil of Discord"; break; } return nameToClean; } @Override protected String generateIconName(String friendlyName) { String localIconName = ""; localIconName = friendlyName.toLowerCase(); localIconName = localIconName.replaceAll(" ", "_"); switch (localIconName) { case "clarity_potion": localIconName = "clarity"; break; case "healing_salve": localIconName = "flask"; break; case "dust_of_appearance": localIconName = "dust"; break; case "sentry_ward": localIconName = "ward_sentry"; break; case "observer_ward": localIconName = "ward_observer"; break; case "blink_dagger": localIconName = "blink"; break; case "pipe_of_insight": localIconName = "pipe"; break; case "orchid_malevolence": localIconName = "orchid"; break; case "eul's_scepter_of_divinity": localIconName = "cyclone"; break; case "refresher_orb": localIconName = "refresher"; break; case "shiva's_guard": localIconName = "shivas_guard"; break; case "manta_style": localIconName = "manta"; break; case "shadow_blade": localIconName = "invis_sword"; break; case "linken's_sphere": localIconName = "sphere"; break; case "heaven's_halberd": localIconName = "heavens_halberd"; break; case "drum_of_endurance": localIconName = "ancient_janggo"; break; case "armlet_of_mordiggian": localIconName = "armlet_active"; break; case "scythe_of_vyse": localIconName = "sheepstick"; break; case "skull_basher": localIconName = "basher"; break; case "daedalus": localIconName = "greater_crit"; break; case "battle_fury": localIconName = "bfury"; break; case "sange_(and_s&y)": localIconName = "sange"; } return localIconName; } }