routine的加载

时间:2019-09-13
本文章向大家介绍routine的加载,主要包括routine的加载使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
// Hearthbuddy.Windows.MainWindow
// Token: 0x06000245 RID: 581 RVA: 0x0008C318 File Offset: 0x0008A518
[CompilerGenerated]
private void method_27()
{
    List<IRoutine> routines = RoutineManager.Routines;
    this.comboBox_1.ItemsSource = routines;
    if (CommandLine.Arguments.Exists("routine"))
    {
        MainWindow.Class28 @class = new MainWindow.Class28();
        @class.string_0 = CommandLine.Arguments.Single("routine");
        IRoutine routine = routines.FirstOrDefault(new Func<IRoutine, bool>(@class.method_0));
        if (routine != null)
        {
            this.comboBox_1.SelectedItem = routine;
        }
    }
    else if (!string.IsNullOrEmpty(MainSettings.Instance.LastRoutine))
    {
        MainWindow.Class29 class2 = new MainWindow.Class29();
        class2.string_0 = MainSettings.Instance.LastRoutine;
        IRoutine routine2 = routines.FirstOrDefault(new Func<IRoutine, bool>(class2.method_0));
        if (routine2 != null)
        {
            this.comboBox_1.SelectedItem = routine2;
        }
    }
    if (this.comboBox_1.SelectedItem == null)
    {
        this.comboBox_1.SelectedItem = routines.FirstOrDefault<IRoutine>();
    }
    this.method_14();
}
// Triton.Bot.RoutineManager
// Token: 0x060011D3 RID: 4563 RVA: 0x000B7424 File Offset: 0x000B5624
public static bool Load()
{
    try
    {
        string routinesPath = RoutineManager.RoutinesPath;
        if (RoutineManager.Routines != null)
        {
            RoutineManager.ilog_0.ErrorFormat("[Load] This function can only be called once.", Array.Empty<object>());
            return false;
        }
        if (!Directory.Exists(routinesPath))
        {
            Directory.CreateDirectory(routinesPath);
        }
        AssemblyLoader<IRoutine> assemblyLoader = new AssemblyLoader<IRoutine>(routinesPath, false);
        RoutineManager.Routines = new List<IRoutine>();
        foreach (IRoutine routine in assemblyLoader.Instances.AsReadOnly())
        {
            try
            {
                Utility.smethod_0(routine);
                routine.Initialize();
                RoutineManager.Routines.Add(routine);
            }
            catch (Exception exception)
            {
                RoutineManager.ilog_0.Debug("[Load] Exception thrown when initializing " + routine.Name + ". Routine will not be loaded.", exception);
                Utility.smethod_1(routine);
                routine.Deinitialize();
            }
        }
        return true;
    }
    catch (Exception arg)
    {
        RoutineManager.ilog_0.ErrorFormat("[Load] An exception occurred: {0}.", arg);
    }
    return false;
}

原文地址:https://www.cnblogs.com/chucklu/p/11516785.html