/// <summary> /// Hakee kaikki mäppäykset joihin tämä näppäin on mäpätty /// </summary> /// <param name="trigger">Minkä triggerin mäppäyksiä etitään</param> /// <returns>Listan nimistä joihin tämä näppäin on mäpätty, null jos ei ole mihinkään</returns> public List <String> GetMappingNames(ITrigger trigger) { List <string> names; MappingNames.TryGetValue(trigger.TriggerHash(), out names); return(names); }
/// <summary> /// Mäppää triggerin /// </summary> /// <param name="mappingName"></param> /// <param name="trigger"></param> private void MapTrigger(string mappingName, ITrigger trigger) { List <string> names = GetMappingNames(trigger); if (names == null) { names = new List <string>(); MappingNames[trigger.TriggerHash()] = names; } if (!names.Contains(mappingName)) { names.Add(mappingName); } else { throw new ArgumentException( String.Format("Trying map {0} twice", mappingName) ); } }
/// <summary> /// Poistaa triggerin kaikki mäppäykset /// </summary> /// <param name="trigger">Minkä napin mäppäykset poistetaan</param> /// <returns>True jos poistettiin, false jos ei (ei ole mäppäyksiä)</returns> public bool ClearMappings(ITrigger trigger) { // jos ei ole mitään niin turha yrittää poistaakkaan if (!HasMappings(trigger)) { return(false); } var names = GetMappingNames(trigger); foreach (var name in names) { Mappings[name].Triggers.Remove(trigger); // jos ei ole enää yhtään bindiä niin poistetaan koko mäppäys if (Mappings[name].Triggers.Count == 0) { Mappings.Remove(name); } } // lopuksi poistetaan viittaukset MappingNames.Remove(trigger.TriggerHash()); return(true); }
/// <summary> /// Tarkistaa onko triggeriä mäpätty mihinkään /// </summary> /// <param name="trigger"></param> /// <returns></returns> public bool HasMappings(ITrigger trigger) { return(MappingNames.ContainsKey(trigger.TriggerHash())); }