1
0
AxibugEmuOnline/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/KeyMapperSetting/KeyMapperSetting.cs

40 lines
1.4 KiB
C#

using AxibugProtobuf;
using System;
using System.Collections.Generic;
namespace AxibugEmuOnline.Client.Settings
{
/// <summary>
/// 管理键位映射设置
/// </summary>
public class KeyMapperSetting
{
Dictionary<RomPlatformType, InternalEmuCoreBinder> m_binders = new Dictionary<RomPlatformType, InternalEmuCoreBinder>();
Dictionary<Type, InternalEmuCoreBinder> m_bindersByType = new Dictionary<Type, InternalEmuCoreBinder>();
public KeyMapperSetting()
{
var baseType = typeof(InternalEmuCoreBinder);
foreach (var t in baseType.Assembly.ExportedTypes)
{
if (t.IsAbstract) continue;
if (!baseType.IsAssignableFrom(t)) continue;
var binderIns = Activator.CreateInstance(t) as InternalEmuCoreBinder;
m_binders.Add(binderIns.Platform, binderIns);
m_bindersByType.Add(binderIns.GetType(), binderIns);
}
}
public T GetBinder<T>() where T : InternalEmuCoreBinder
{
m_bindersByType.TryGetValue(typeof(T), out var binder);
return binder as T;
}
public T GetBinder<T>(RomPlatformType romType) where T : InternalEmuCoreBinder
{
m_binders.TryGetValue(romType, out var binder);
return binder as T;
}
}
}