示例#1
0
 public void RegisterAlias(AlertSoundData sound, string alias)
 {
     try
     {
         sound.AddAlias(alias);
         aliasMap.Add(alias, sound);
     }
     catch (ArgumentException) {
         throw new DuplicateAlertSoundAliasException(alias);
     }
 }
示例#2
0
        public AlertSoundData Get(string filenameOrAlias)
        {
            AlertSoundData sound;

            if (aliasMap.TryGetValue(filenameOrAlias, out sound))
            {
                return(sound);
            }

            // not alias => must be filename

            if (!File.Exists(filenameOrAlias))
            {
                //tts判定
                if (filenameOrAlias.IndexOf("tts ") == 0)
                {
                    return(new AlertTtsData(filenameOrAlias.Substring(4)));
                }

                // try prepending resource path
                string filenameWithResourcePath = String.Format("{0}/{1}", Globals.SoundFilesRoot, filenameOrAlias);
                if (!File.Exists(filenameWithResourcePath))
                {
                    throw new ResourceNotFoundException(filenameOrAlias);
                }

                sound = Get(filenameWithResourcePath);
                // register filepath without the resource path as an alias
                RegisterAlias(sound, filenameOrAlias);
                return(sound);
            }

            sound = new AlertSoundData(filenameOrAlias);
            allAlertSounds.Add(sound);
            return(sound);
        }