Пример #1
0
        /// <summary>
        /// Will (re)start troop research and improvement for this village
        /// </summary>
        /// <param name="acc">Account</param>
        /// <param name="vill">Village to start troops training</param>
        public static void ReStartResearchAndImprovement(Account acc, Village vill)
        {
            Classificator.TroopsEnum[] troops = { vill.Settings.BarracksTrain, vill.Settings.StableTrain, vill.Settings.WorkshopTrain };
            foreach (var troop in troops)
            {
                if (troop == TroopsEnum.None)
                {
                    continue;
                }

                // Research
                if (!vill.Troops.Researched.Contains(troop) &&
                    ((int)troop % 10) != 1)    // Don't try to research 1. troops of each tribe (clubs, phalanx...)
                {
                    if (TroopsHelper.AddBuildingsForTroop(acc, vill, troop))
                    {
                        //we already have all required buildings to research this troop
                        vill.Troops.ToResearch.Add(troop);
                        vill.Troops.ToImprove.Add(troop);
                        //We have all buildings needed to research the troop. Do it.
                        var researchTask = new ResearchTroop()
                        {
                            Vill = vill, ExecuteAt = DateTime.Now
                        };
                        acc.Tasks.Add(researchTask, true, vill);
                    }
                    continue;
                }
                else
                {
                    vill.Troops.ToResearch.Remove(troop);
                }

                // Improvement
                if (vill.Troops.Levels != null)
                {
                    if (!vill.Troops.Levels.Exists(x => x.Troop == troop && x.Level == 20) && vill.Settings.AutoImprove)
                    {
                        vill.Troops.ToImprove.Add(troop);
                        if (vill.Build.Buildings.Any(x => x.Type == BuildingEnum.Smithy))
                        {
                            acc.Tasks.Add(new ImproveTroop()
                            {
                                Vill = vill, ExecuteAt = DateTime.Now
                            }, true, vill);
                        }
                    }
                    else
                    {
                        vill.Troops.ToImprove.Remove(troop);
                    }
                }
            }
        }