/* * 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 NamedVoice extends NamedBase { public NamedVoice(String _internalName, String _filePath) { internalName = _internalName; friendlyName = cleanUpName(internalName); internalFilePath = Paths.get(_filePath); iconName = generateIconName(internalName); } @Override protected String cleanUpName(String nameToClean) { nameToClean = nameToClean.replaceAll("_", " "); nameToClean = Utility.capitalizeString(nameToClean); nameToClean = nameToClean.replaceAll("Announcer", "Announcer:"); nameToClean = nameToClean.replaceAll("Dlc ", ""); nameToClean = nameToClean.replaceAll("Killing Spree", "(Killing Spree)"); nameToClean = handleSpecialCases(nameToClean); return nameToClean; } @Override protected String handleSpecialCases(String nameToClean) { switch(nameToClean) { /*Announcers & Misc*/ case "Announcer:": nameToClean = "Announcer: Default"; break; case "Announcer: (Killing Spree)": nameToClean = "Announcer: Default (Killing Spree)"; break; case "Announcer: Defensegrid": nameToClean = "Announcer: Defense Grid"; break; case "Announcer: Defensegrid (Killing Spree)": nameToClean = "Announcer: Defense Grid (Killing Spree)"; break; case "Announcer: Glados": nameToClean = "Announcer: GLaDOS"; break; case "Announcer: Glados (Killing Spree)": nameToClean = "Announcer: GLaDOS (Killing Spree)"; break; case "Announcer: Kleiner": nameToClean = "Announcer: Dr. Kleiner"; break; case "Announcer: Kleiner (Killing Spree)": nameToClean = "Announcer: Dr. Kleiner (Killing Spree)"; break; case "Announcer: Naturesprophet": nameToClean = "Announcer: Nature's Prophet"; break; case "Announcer: Naturesprophet (Killing Spree)": nameToClean = "Announcer: Nature's Prophet (Killing Spree)"; break; case "Announcer: Pflax": nameToClean = "Announcer: Pyrion Flax"; break; case "Announcer: Pflax (Killing Spree)": nameToClean = "Announcer: Pyrion Flax (Killing Spree)"; break; case "Announcer: Stormspirit": nameToClean = "Announcer: Storm Spirit"; break; case "Announcer: Stormspirit (Killing Spree)": nameToClean = "Announcer: Storm Spirit (Killing Spree)"; break; case "Announcer: Stanleyparable": nameToClean = "Announcer: Stanley Parable"; break; case "Announcer: Stanleyparable (Killing Spree)": nameToClean = "Announcer: Stanley Parable (Killing Spree)"; break; case "Secretshop": nameToClean = "Secret Shop"; break; case "Tut1": nameToClean = "Tutorial 1"; break; /*Heroes*/ case "Antimage": nameToClean = "Anti Mage"; break; case "Batrider": nameToClean = "Bat Rider"; break; case "Centaur": nameToClean = "Centaur Warrunner"; break; case "Crystalmaiden": nameToClean = "Crystal Maiden"; break; case "Doom Bringer": nameToClean = "Doom"; break; case "Drowranger": nameToClean = "Drow Ranger"; break; case "Furion": nameToClean = "Nature's Prophet"; break; case "Life Stealer": nameToClean = "Lifestealer"; break; case "Necrolyte": nameToClean = "Necrophos"; break; case "Magnataur": nameToClean = "Magnus"; break; case "Nightstalker": nameToClean = "Night Stalker"; break; case "Obsidian Destroyer": nameToClean = "Outworld Devourer"; break; case "Queenofpain": nameToClean = "Queen of Pain"; break; case "Rattletrap": nameToClean = "Clockwerk"; break; case "Sandking": nameToClean = "Sand King"; break; case "Nevermore": nameToClean = "Shadow Fiend"; break; case "Shadowshaman": nameToClean = "Shadow Shaman"; break; case "Shredder": nameToClean = "Timbersaw"; break; case "Skeleton King": nameToClean = "Wraith King"; break; case "Stormspirit": nameToClean = "Storm Spirit"; break; case "Treant": nameToClean = "Treant Protector"; break; case "Vengefulspirit": nameToClean = "Vengeful Spirit"; break; case "Windrunner": nameToClean = "Windranger"; break; case "Wisp": nameToClean = "Io"; break; case "Witchdoctor": nameToClean = "Witch Doctor"; break; case "Zuus": nameToClean = "Zeus"; break; } return nameToClean; } @Override protected String generateIconName(String name) { String localIconName = name.toLowerCase(); localIconName = localIconName.replace(" ", "_"); /* For announcers: Remove "_dlc_", Change "killing_spree" to "megakill_" * and move it to the front of the filename, and if Mega Kill announcer, * remove "_announcer_". This gets us most of the announcers for free. */ localIconName = localIconName.replace("_dlc_", "_"); if(localIconName.contains("killing_spree")) { localIconName = localIconName.replace("_killing_spree", ""); localIconName = "megakill_" + localIconName; localIconName = localIconName.replace("_announcer_", "_"); } switch(localIconName) { //TODO: Still need special case handling for: Outworld, Shopkeeper, Warlock Golem, Tutorial (maybe) and all the announcers /*Units*/ case "witchdoctor": localIconName = "witch_doctor"; break; case "doombringer": localIconName = "doom_bringer"; break; case "nightstalker": localIconName = "night_stalker"; break; case "skeletonking": localIconName = "skeleton_king"; break; case "shadowshaman": localIconName = "shadow_shaman"; break; case "crystalmaiden": localIconName = "crystal_maiden"; break; case "drowranger": localIconName = "drow_ranger"; break; case "sandking": localIconName = "sand_king"; break; case "stormspirit": localIconName = "storm_spirit"; break; case "outworld_destroyer": localIconName = "obsidian_destroyer"; break; /*Announcers*/ case "announcer": localIconName = "announcer_icon_default"; break; case "megakill_announcer": localIconName = "announcer_icon_default"; break; case "announcer_defensegrid": localIconName = "announcer_dgrid"; break; case "megakill_defensegrid": localIconName = "megakill_dgrid"; break; case "announcer_diretide_2012": localIconName = "announcer_death_prophet"; break; case "announcer_glados": localIconName = "announcer_portal"; break; case "megakill_glados": localIconName = "megakill_portal"; break; case "announcer_naturesprophet": localIconName = "announcer_furion"; break; case "megakill_naturesprophet": localIconName = "megakill_furion"; break; case "announcer_tusk": localIconName = "announcer_tuskar"; break; case "megakill_workshop_pirate": localIconName = "megakill_announcer_workshop_pirate"; break; } return localIconName; } }