diff --git a/MLEM/Misc/TextInputWrapper.cs b/MLEM/Misc/TextInputWrapper.cs
index e3fb4a8..d3905b8 100644
--- a/MLEM/Misc/TextInputWrapper.cs
+++ b/MLEM/Misc/TextInputWrapper.cs
@@ -64,8 +64,8 @@ namespace MLEM.Misc {
///
public class DesktopGl : TextInputWrapper {
- private MemberInfo key;
- private MemberInfo character;
+ private FieldInfo key;
+ private FieldInfo character;
private readonly Action> addListener;
///
@@ -84,33 +84,14 @@ namespace MLEM.Misc {
///
public override void AddListener(GameWindow window, TextInputCallback callback) {
this.addListener(window, (sender, args) => {
- // the old versions of DesktopGL use a property here, while the
- // core version uses a field. So much for "no breaking changes"
if (this.key == null)
- this.key = GetMember(args, "Key");
+ this.key = args.GetType().GetField("Key");
if (this.character == null)
- this.character = GetMember(args, "Character");
- callback.Invoke(sender, GetValue(this.key, args), GetValue(this.character, args));
+ this.character = args.GetType().GetField("Character");
+ callback.Invoke(sender, (Keys) this.key.GetValue(args), (char) this.character.GetValue(args));
});
}
- private static MemberInfo GetMember(object args, string name) {
- var ret = args.GetType().GetProperty(name);
- if (ret != null)
- return ret;
- return args.GetType().GetField(name);
- }
-
- private static U GetValue(MemberInfo member, object args) {
- switch (member) {
- case PropertyInfo p:
- return (U) p.GetValue(args);
- case FieldInfo f:
- return (U) f.GetValue(args);
- }
- throw new ArgumentException();
- }
-
}
///