Example #1
0
        /// <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;
            }
        }
Example #2
0
        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));
        }