public static void PlayMacro(string MacroName) { Macro macro = string.IsNullOrEmpty(MacroName) || !MacroData.Instance.DictMacros.ContainsKey(MacroName) ? MacroData.Instance.DictMacros.FirstOrDefault <KeyValuePair <string, Macro> >().Value : MacroData.Instance.DictMacros[MacroName]; int windowWidth = VMWindow.Instance.Width; int windowHeight = VMWindow.Instance.Height; if (MacroForm.t != null && MacroForm.t.IsAlive) { MacroForm.AbortReroll(); } MacroForm.t = new Thread((ThreadStart)(() => { try { DateTime dateTime = DateTime.Now; switch (macro.RepeatBehaiour) { case RepeatBehaviour.Once: dateTime = DateTime.Now.AddSeconds(2.0); break; case RepeatBehaviour.For5Minutes: dateTime = DateTime.Now.AddMinutes(5.0); break; case RepeatBehaviour.For1hour: dateTime = DateTime.Now.AddHours(1.0); break; case RepeatBehaviour.For8Hour: dateTime = DateTime.Now.AddHours(8.0); break; case RepeatBehaviour.Forever: dateTime = DateTime.Now.AddYears(5); break; } bool flag = true; while (DateTime.Now < dateTime) { if (flag) { flag = (uint)macro.AndroidCommandRepeatMode > 0U; foreach (KeyValuePair <string, SerializableDictionary <string, string> > dictAndroidCommand in (Dictionary <string, SerializableDictionary <string, string> >)macro.DictAndroidCommands) { try { JsonParser jsonParser = new JsonParser(MultiInstanceStrings.VmName); if (dictAndroidCommand.Key.StartsWith("MacroSleep")) { Thread.Sleep(Convert.ToInt32(dictAndroidCommand.Value.Keys.ElementAt <string>(0))); } else if (dictAndroidCommand.Key.Equals("runex") && jsonParser.GetAppInfoFromPackageName(MacroData.Instance.mPackageName) != null) { VmCmdHandler.RunCommand(string.Format("runex {0}/{1}", (object)MacroData.Instance.mPackageName, (object)jsonParser.GetAppInfoFromPackageName(MacroData.Instance.mPackageName).Activity), MultiInstanceStrings.VmName, "bgp"); } else { MacroForm.RunCommand(dictAndroidCommand); } } catch { } } } foreach (KeyValuePair <int, MacroAction> dictMacroAction in (Dictionary <int, MacroAction>)macro.DictMacroActions) { MacroAction macroAction = dictMacroAction.Value; Thread.Sleep((int)macroAction.DelayFromLastAction); switch (macroAction.ActionType) { case ActionType.MouseDown: InputMapper.Instance.HandleMouseDown((object)null, new MouseEventArgs(macroAction.MouseButton, 0, (int)(macroAction.ActionPointX * (double)windowWidth), (int)(macroAction.ActionPointY * (double)windowHeight), 0)); continue; case ActionType.MouseUp: InputMapper.Instance.HandleMouseUp((object)null, new MouseEventArgs(macroAction.MouseButton, 0, (int)(macroAction.ActionPointX * (double)windowWidth), (int)(macroAction.ActionPointY * (double)windowHeight), 0)); continue; default: continue; } } } MacroForm.t = (Thread)null; HTTPUtils.SendRequestToClient("macroCompleted", (Dictionary <string, string>)null, MultiInstanceStrings.VmName, 0, (Dictionary <string, string>)null, false, 1, 0, "bgp"); } catch (ThreadAbortException ex) { Logger.Error("Error running reroll", (object)ex.ToString()); } catch (Exception ex) { Logger.Error("Exception in running reroll. Err : ", (object)ex.ToString()); HTTPUtils.SendRequestToClient("macroCompleted", (Dictionary <string, string>)null, MultiInstanceStrings.VmName, 0, (Dictionary <string, string>)null, false, 1, 0, "bgp"); } })) { IsBackground = true }; MacroForm.t.Start(); }
private void btnSave_Click(object sender, EventArgs e) { MacroForm.mMacro = new Macro(); this.UpdateGrid(); MacroData.Instance.SaveMacroData(); }