/// <summary>
        /// Wird ausgeführt, sobald ein KeyBindingListener erstellt wird und danach,
        /// wenn sich die Tastenbelegung geändert hat.
        /// </summary>
        public static void ReadKeyAssignments()
        {
            // Drehe die Zuordnung um; von (Taste -> Aktion) zu (Aktion -> Taste)
            Dictionary <PlayerAction, Keys> defaultReversed = DefaultKeyAssignment.ReverseDictionary();

            // Leere die aktuelle Zuordnung
            CurrentKeyAssignment.Clear();

            // Fülle die aktuelle Zuordnung mit aus der Einstellungsdatei gelesenen werten.
            // Iteriere dazu über alle gültigen PlayerActions...
            foreach (PlayerAction action in PlayerAction.Values)
            {
                string actionName = action.Name;
                if (defaultReversed.ContainsKey(action))
                {
                    // Erstelle eine Option...
                    KeyOption option = new KeyOption(
                        section: "controls",
                        name: actionName,
                        defaultValue: defaultReversed [action],
                        configFile: Config.Default
                        )
                    {
                        Verbose = false
                    };
                    // und lese den Wert aus und speichere ihn in der Zuordnung.
                    CurrentKeyAssignment [option.Value] = action;
                }
            }
            CurrentKeyAssignmentReversed = CurrentKeyAssignment.ReverseDictionary();
        }
 public static PlayerAction LookupAction(Keys key)
 {
     if (CurrentKeyAssignment.ContainsKey(key))
     {
         return(CurrentKeyAssignment [key]);
     }
     else
     {
         throw new InvalidOperationException("There is no key -> action binding for key: " + key);
     }
 }
 public static bool ContainsKey(Keys key)
 {
     return(CurrentKeyAssignment.ContainsKey(key));
 }