private static void OnExeExecute(ExecutableExecuteEvent e) { var exe = CustomExes.FirstOrDefault(x => x.Value.ExeData == e.ExecutableData); if (!exe.HasValue) { return; } var location = new Rectangle(e.OS.ram.bounds.X, e.OS.ram.bounds.Y + RamModule.contentStartOffset, RamModule.MODULE_WIDTH, (int)OS.EXE_MODULE_HEIGHT); e.OS.addExe((BaseExecutable)Activator.CreateInstance(exe.Value.ExeType, new object[] { location, e.OS, e.Arguments.ToArray() })); e.Result = ExecutionResult.StartupSuccess; }
public static void ExecutableListener(ExecutableExecuteEvent e) { Tuple <Executable.IInterface, string> tuple; if (Executable.Handler.IsFileDataForModExe(e.ExecutableFile.data) && Executable.Handler.ModExecutables.TryGetValue(e.ExecutableFile.data.Split('\n')[0], out tuple)) { int num = e.OS.ram.bounds.Y + RamModule.contentStartOffset; foreach (var exe in e.OS.exes) { num += exe.bounds.Height; } var location = new Rectangle(e.OS.ram.bounds.X, num, RamModule.MODULE_WIDTH, (int)OS.EXE_MODULE_HEIGHT); e.OS.addExe(Executable.Instance.CreateInstance(tuple.Item1, e.ExecutableFile, e.OS, e.Arguments, location)); e.Result = Executable.ExecutionResult.StartupSuccess; } }