Example #1
0
        private async Task TrainNextHero() {
            var index = trainingIndex % barracks.Heroes.Count;
            ++trainingIndex;

            // Tướng đang được duyệt.
            var hero = barracks.Heroes[index];
            if (!IsHeroAutoTrain(hero.Id)) {
                // Không được đánh dấu.
                return;
            }

            if (hero.IsTraining) {
                // Đang được huấn luyện.
                return;
            }

            if (barracks.CurrentSlots == barracks.MaxSlots) {
                // Hết vị trí huấn luyện.
                if (barracks.Heroes.Count(item => item.IsTraining) < barracks.CurrentSlots) {
                    // Có vị trí nào đó hết thời gian huấn luyện.
                    // Cập nhật lại thao trường.
                    await RefreshHeroesAsync();
                    return;
                }
            } else {
                logModel.Log(String.Format("Bắt đầu huấn luyện tướng {0} Lv. {1} Exp {2}/{3}",
                    hero.Name, hero.Level, hero.Exp, hero.NextExp));
                await packetWriter.TrainHeroAsync(hero.Id);
                await RefreshHeroesAsync();
            }
        }