/// <summary> /// Attempts to refresh all heroes. /// </summary> private async Task<bool> RefreshHeroesAsync() { if (asyncLock) { return false; } try { asyncLock = true; var packet = await packetWriter.SendCommandAsync("41100", "0"); if (packet == null) { return false; } barracks = Barracks.Parse(JToken.Parse(packet.Message)); var details = new List<HeroDetail>(); var heroIds = new List<int>(); foreach (var hero in barracks.Heroes) { heroIds.Add(hero.Id); var p1 = await packetWriter.SendCommandAsync("41107", hero.Id.ToString()); if (p1 == null) { return false; } var detail = HeroDetail.Parse(JToken.Parse(p1.Message)); details.Add(detail); } heroDetails = details; heroList.SetObjects(heroIds, true); return true; } finally { asyncLock = false; } }
private async Task <TaskResult> Process(TaskBoard taskBoard, List <TaskDetail> tasks) { Debug.Assert(processing); var market = await Client.RefreshMarketAsync(); if (market == null) { return(TaskResult.LostConnection); } var impose = await Client.RefreshImposeAsync(); if (impose == null) { return(TaskResult.LostConnection); } const int MaxWeaponCount = 20; var upgrade = await Client.RefreshUpgradeAsync(1, 0, MaxWeaponCount); if (upgrade == null) { return(TaskResult.LostConnection); } var packet = await Client.SendCommandAsync(41100, "1"); if (packet == null) { return(TaskResult.LostConnection); } var barracks = Barracks.Parse(JToken.Parse(packet.Message)); var helpers = new Dictionary <TaskType, ITaskHelper>(); // FIXME. //helpers.Add(TaskType.Food, new FoodTaskHelper(Client)); //helpers.Add(TaskType.Improve, new ImproveTaskHelper(packetWriter, infoModel, barracks)); //helpers.Add(TaskType.Impose, new ImposeTaskHelper(packetWriter, infoModel, impose)); //helpers.Add(TaskType.AttackNpc, new AttackNpcTaskHelper(packetWriter, mcuModel)); //helpers.Add(TaskType.Upgrade, new UpgradeTaskHelper(packetWriter, infoModel, upgrade)); return(await Process(taskBoard, tasks, helpers)); }