Esempio n. 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;
            }
        }
Esempio n. 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));
        }
Esempio n. 3
0
        public static Barracks Parse(JToken token)
        {
            var result = new Barracks();

            result.CurrentSlots  = (int)token["currentnum"];
            result.MaxSlots      = (int)token["maxnum"];
            result.MTL           = (int)token["tufeiTokenCount"];
            result.CanGuide      = (bool)token["guidecdusable"];
            result.guideCooldown = new Cooldown((int)token["cd"]);

            var heroes  = new List <Hero>();
            var general = token["general"];

            foreach (var subToken in general)
            {
                heroes.Add(Hero.Parse(subToken));
            }
            result.Heroes = heroes;

            return(result);
        }
Esempio n. 4
0
        public HeroTrainingView() {
            InitializeComponent();

            barracks = null;
            heroDetails = null;

            asyncLock = false;
            timerLock = false;

            guidingIndex = 0;
            trainingIndex = 0;

            autoTrainStates = new Dictionary<int, bool>();
            autoGuideStates = new Dictionary<int, bool>();

            nameColumn.AspectGetter = obj => {
                return heroDetails.Find(item => item.Id == (int) obj).Name;
            };
            levelColumn.AspectGetter = obj => {
                return heroDetails.Find(item => item.Id == (int) obj).Level;
            };
            shiftLevelColumn.AspectGetter = obj => {
                return heroDetails.Find(item => item.Id == (int) obj).ShiftLevel;
            };
            autoTrainColumn.AspectGetter = obj => {
                return IsHeroAutoTrain((int) obj);
            };
            autoTrainColumn.AspectPutter = (obj, value) => {
                autoTrainStates[(int) obj] = (bool) value;
            };
            autoGuideColumn.AspectGetter = obj => {
                return IsHeroAutoGuide((int) obj);
            };
            autoGuideColumn.AspectPutter = (obj, value) => {
                autoGuideStates[(int) obj] = (bool) value;
            };
        }
Esempio n. 5
0
 public ImproveTaskHelper(IPacketWriter writer, IPlayerInfo info, Barracks barracks)
 {
     this.writer   = writer;
     this.info     = info;
     this.barracks = barracks;
 }