public Task Test_HTMLBinding_Stress_Collection_CreateBinding(JavascriptBindingMode imode, TestPerformanceKind context, TestContext ipath = TestContext.Index) { int r = 100; var datacontext = new TwoList(); datacontext.L1.AddRange(Enumerable.Range(0, r).Select(i => new Skill())); var stopWatch = new Stopwatch(); stopWatch.Start(); var test = new TestInContext() { Path = ipath, Bind = (win) => HTML_Binding.Bind(win, datacontext, imode), Test = (mb) => { stopWatch.Stop(); var ts = stopWatch.ElapsedMilliseconds; _Logger.Info($"Perf: {((double) (ts)) / 1000} sec for {r} iterations"); var js = mb.JSRootObject; var col = GetSafe(() => GetCollectionAttribute(js, "L1")); col.GetArrayLength().Should().Be(r); CheckVsExpectation(ts, context); } }; return RunAsync(test); }
private Task Test_HTMLBinding_Stress_Collection_CreateBinding(JavascriptBindingMode imode, TestPerformanceKind context, TestContext ipath = TestContext.Index) { var r = 100; var datacontext = new TwoList(); datacontext.L1.AddRange(Enumerable.Range(0, r).Select(i => new Skill())); var stopWatch = new Stopwatch(); stopWatch.Start(); var test = new TestInContext() { Path = ipath, Bind = (win) => HtmlBinding.Bind(win, datacontext, imode), Test = (mb) => { stopWatch.Stop(); var ts = stopWatch.ElapsedMilliseconds; _Logger.Info($"Perf: {((double)(ts)) / 1000} sec for {r} iterations"); var js = mb.JsRootObject; var col = GetSafe(() => GetCollectionAttribute(js, "L1")); col.GetArrayLength().Should().Be(r); CheckVsExpectation(ts, context); } }; return(RunAsync(test)); }
private void FillAllKeys() { AllKeys = new TwoList <string, string>(); AllKeys.Add("F1", "F1"); AllKeys.Add("F2", "F2"); AllKeys.Add("F3", "F3"); AllKeys.Add("F4", "F4"); AllKeys.Add("F5", "F5"); AllKeys.Add("F6", "F6"); AllKeys.Add("F7", "F7"); AllKeys.Add("F8", "F8"); AllKeys.Add("Tab", "Tab"); AllKeys.Add("D1", "1"); AllKeys.Add("D2", "2"); AllKeys.Add("D3", "3"); AllKeys.Add("D4", "4"); AllKeys.Add("D5", "5"); AllKeys.Add("D6", "6"); AllKeys.Add("D7", "7"); AllKeys.Add("D8", "8"); AllKeys.Add("D9", "9"); AllKeys.Add("NumPad5", "Pet Atk"); AllKeys.Add("NumPad6", "Pet Skill 1"); AllKeys.Add("NumPad7", "Pet Skill 2"); AllKeys.Add("NumPad8", "Pet Skill 3"); AllKeys.Add("NumPad9", "Pet Skill 4"); }
/// <summary> /// Bufea /// </summary> /// <param name="cancelOnFocus">Indica si se debe cancelar el proceso cuando el pj es focuseado</param> /// <param name="keys">listado de Keys-CastTime para los buffs</param> public bool DoBuff(bool cancelOnFocus, TwoList <Keys, int> keys) { foreach (var key in keys) { // disparo el skill this.Client.Manager.KeyPress(key.V1); // espero a que termine de bufear var start = DateTime.Now; do { Thread.Sleep(300); if (cancelOnFocus) { var target = this.Client.Mem.Link.NPC.GetById(this.Client.Mem.Link.PJInfo.Data.TargetId); if (target?.IsMob ?? false) { return(false); } } } while (start.AddMilliseconds(key.V2) > DateTime.Now); } return(true); }
private void FillPartys() { Partys = new TwoList <string, string>(); Partys.Add("NumPad0", "Party 1"); Partys.Add("NumPad1", "Party 2"); Partys.Add("NumPad2", "Party 3"); Partys.Add("NumPad3", "Party 4"); Partys.Add("NumPad4", "Party 5"); }
public async Task Stress_Collection_Update_From_Javascript() { int r = 100; var datacontext = new TwoList(); datacontext.L1.AddRange(Enumerable.Range(0, r).Select(i => new Skill())); var test = new TestInContextAsync() { Path = TestContext.Simple, Bind = (win) => HTML_Binding.Bind(win, datacontext, JavascriptBindingMode.TwoWay), Test = async(mb) => { var js = mb.JSRootObject; var col1 = GetCollectionAttribute(js, "L1"); col1.GetArrayLength().Should().Be(r); var col2 = GetCollectionAttribute(js, "L2"); col2.GetArrayLength().Should().Be(0); var l2c = GetAttribute(js, "L2"); l2c.Should().NotBeNull(); var javascript = "window.app = function(value,coll){var args = []; args.push(0); args.push(0); for (var i = 0; i < value.length; i++) { args.push(value[i]);} coll.splice.apply(coll, args); console.log(value.length); console.log(coll.length);};"; IJavascriptObject res = null; bool ok = _WebView.Eval(javascript, out res); ok.Should().BeTrue(); bool notok = true; var stopWatch = new Stopwatch(); stopWatch.Start(); DoSafe(() => Call(_WebView.GetGlobal(), "app", col1, l2c)); while (notok) { await Task.Delay(100); notok = datacontext.L2.Count != r; } stopWatch.Stop(); long ts = stopWatch.ElapsedMilliseconds; _Logger.Info($"Perf: {((double) (ts)) / 1000} sec for {r} iterations"); CheckVsExpectation(ts, TestPerformanceKind.TwoWay_Collection_Update_From_Javascript); } }; await RunAsync(test); }
private void FillTimes() { Times = new TwoList <int, string>(); Times.Add(0, "off"); Times.Add(120, "faster"); Times.Add(500, "0.5s"); for (var i = 1; i <= 59; i++) { Times.Add(i * 1000, $"{i}s"); // segs } for (var i = 1; i <= 59; i++) { Times.Add(i * 60000, $"{i}m"); // mins } }
public async Task Stress_Collection_Update_From_Javascript() { int r = 100; var datacontext = new TwoList(); datacontext.L1.AddRange(Enumerable.Range(0, r).Select(i => new Skill())); var test = new TestInContextAsync() { Path = TestContext.Simple, Bind = (win) => HTML_Binding.Bind(win, datacontext, JavascriptBindingMode.TwoWay), Test = async (mb) => { var js = mb.JSRootObject; var col1 = GetCollectionAttribute(js, "L1"); col1.GetArrayLength().Should().Be(r); var col2 = GetCollectionAttribute(js, "L2"); col2.GetArrayLength().Should().Be(0); var l2c = GetAttribute(js, "L2"); l2c.Should().NotBeNull(); var javascript = "window.app = function(value,coll){var args = []; args.push(0); args.push(0); for (var i = 0; i < value.length; i++) { args.push(value[i]);} coll.splice.apply(coll, args); console.log(value.length); console.log(coll.length);};"; IJavascriptObject res = null; bool ok = _WebView.Eval(javascript, out res); ok.Should().BeTrue(); bool notok = true; var stopWatch = new Stopwatch(); stopWatch.Start(); DoSafe(() => Call(_WebView.GetGlobal(), "app", col1, l2c)); while (notok) { await Task.Delay(100); notok = datacontext.L2.Count != r; } stopWatch.Stop(); long ts = stopWatch.ElapsedMilliseconds; _Logger.Info($"Perf: {((double) (ts)) / 1000} sec for {r} iterations"); CheckVsExpectation(ts, TestPerformanceKind.TwoWay_Collection_Update_From_Javascript); } }; await RunAsync(test); }
private void _DoAutoSpot(object input) { var config = ((DAL.CuentaConfig)input).AutoSpot; var atkKeys = ((DAL.CuentaConfig)input).AutoKey.Keys; uint?target = 0; var lastBuffTime = DateTime.MinValue; while (true) { //ETAPA 0: BUFF if (config.HasBuff && target == 0 && lastBuffTime.AddSeconds(config.BuffExpireTime / 1000) < DateTime.Now) { var skills = new TwoList <Keys, int>(config.BuffKey.GetKey(), config.BuffCastTime); if (this.Client.Action.Skills.DoBuff(true, skills)) { lastBuffTime = DateTime.Now; } } // ETAPA 1: BUSCAR TARGET while (target == 0) { Thread.Sleep(500); if (this.Client.Mem.Base1?.PJInfo == null) { this.OnAutoSpotStatusChange?.Invoke(this, false); return; } if (500000 < (target = this.Client.Mem.Base1?.PJInfo?.Data.TargetId)) { break; } // modos de seleción de Target if (config.AssistMob > 0) { // Selección por dbCode var mob = this.Client.Mem.Link.NPC.GetAll().Where(p => p.IsMob && p.Data.dbCode == config.AssistMob).OrderBy(p => p.Data.DistAlPJ).FirstOrDefault(); if (mob != null) { this.Client.Mem.Link.PJInfo.SetTarget(mob.Data.Id); // lo marca pero es intargeteable } } else if (!string.IsNullOrEmpty(config.AssistKey) && config.AssistKey != "Tab") { // Seleccion por asistencia (con tecla de assist) var tecla = (int)Keys.NumPad0; for (var partynum = 1; partynum <= 5; partynum++) { this.Client.Manager.KeyPress((Keys)(tecla + partynum - 1)); Thread.Sleep(500); if (0 < (target = this.Client.Mem.Base1?.PJInfo?.Data.TargetId)) { this.Client.Manager.KeyPress(config.AssistKey.GetKey()); Thread.Sleep(1000); target = this.Client.Mem.Base1?.PJInfo?.Data.TargetId; } if (target < 500000) // es un pj { target = 0; } if (target > 0) { break; } } } else { // Seleccion por TAB lock (this.Client.Mem.Base1.PJInfo) if (0 == (target = this.Client.Mem.Base1?.PJInfo?.Data.TargetId)) { this.Client.Manager.KeyPress(Keys.Tab); } } } // ETAPA 2: ATACAR var atkrunning = false; while (target > 0) { if (!atkrunning) { lock (AutoSpotKeysThreads) { foreach (var key in atkKeys) { AutoSpotKeysThreads.Add(key.Key.GetKey(), new Thread(_DoAutoKey)); AutoSpotKeysThreads[key.Key.GetKey()].Start(new { key = key.Key.GetKey(), time = key.Time }); } } atkrunning = true; } Thread.Sleep(500); if (this.Client.Mem.Base1?.PJInfo == null) { StopAutoSpotAtk(); this.OnAutoSpotStatusChange?.Invoke(this, false); return; } lock (this.Client.Mem.Base1.PJInfo) target = this.Client.Mem.Base1?.PJInfo?.Data.TargetId; } StopAutoSpotAtk(); // ETAPA: AUTO-PICK var time = DateTime.Now; while (config.HasPick && time.AddSeconds(config.PickTime / 1000) > DateTime.Now && target == 0) { this.Client.Manager.KeyPress(config.PickKey.GetKey()); //picking Thread.Sleep(100); if (this.Client.Mem.Base1?.PJInfo == null) { this.OnAutoSpotStatusChange?.Invoke(this, false); return; } lock (this.Client.Mem.Base1.PJInfo) target = this.Client.Mem.Base1?.PJInfo?.Data.TargetId; } } }