Ejemplo n.º 1
0
        public static bool IsTroopOffensive(TroopsEnum troop)
        {
            switch (troop)
            {
            case TroopsEnum.Legionnaire:
            case TroopsEnum.Imperian:
            case TroopsEnum.EquitesCaesaris:
            case TroopsEnum.EquitesImperatoris:
            case TroopsEnum.Swordsman:
            case TroopsEnum.TheutatesThunder:
            case TroopsEnum.Haeduan:
            case TroopsEnum.Clubswinger:
            case TroopsEnum.Axeman:
            case TroopsEnum.TeutonicKnight:
            case TroopsEnum.Mercenary:
            case TroopsEnum.Bowman:
            case TroopsEnum.SteppeRider:
            case TroopsEnum.Marauder:
            case TroopsEnum.KhopeshWarrior:
            case TroopsEnum.ReshephChariot:
                return(true);

            default:
                return(false);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Return the number of troops that should be trained to fill up the training building
        /// </summary>
        /// <param name="acc">Account</param>
        /// <param name="vill">Village where we want to train the troops</param>
        /// <param name="troop">Troop enumeration</param>
        /// <param name="great">GB/GS</param>
        /// <returns></returns>
        internal static long TroopsToFill(Account acc, Village vill, TroopsEnum troop, bool great)
        {
            var troopCost = TroopCost.GetResourceCost(troop, great);
            var trainTime = TroopCost.GetTrainingTime(acc, vill, troop, great);

            //how many troops we want to train
            // Take into account how many troop are already training
            var trainBuilding = TroopsHelper.GetTroopBuilding(troop, great);
            var trainingTime  = TroopsHelper.GetTrainingTimeForBuilding(trainBuilding, vill);

            var currentlyTrainingHours = (trainingTime - DateTime.Now).TotalHours;

            var fillForHours = acc.Settings.FillFor + acc.Settings.FillInAdvance - currentlyTrainingHours;

            return((long)Math.Ceiling(fillForHours / trainTime.TotalHours));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// When user wants to train a new troop, we need to first upgrade buildings required and then research+improve the troop
        /// </summary>
        /// <param name="acc">Account</param>
        /// <param name="vill">Village</param>
        /// <param name="troop">Troop we want to research</param>
        /// <return>True if we have all prerequisite buildings, false otherwise</return>
        public static bool AddBuildingsForTroop(Account acc, Village vill, TroopsEnum troop)
        {
            bool ret = true;
            //TODO: finish this. If already on the BuildingList, just add the link for PostTask that after the last building gets built to research the unit
            var prerequisites = TroopsData.GetBuildingPrerequisites(troop);

            if (prerequisites.Count == 0)
            {
                return(ret);
            }
            foreach (var prerequisite in prerequisites)
            {
                if (!vill.Build.Buildings.Any(x => x.Level >= prerequisite.Level && x.Type == prerequisite.Building))
                {
                    ret = false;
                    AddBuildingPrerequisites(acc, vill, prerequisite.Building);
                }
            }
            return(ret);
        }
Ejemplo n.º 4
0
        public static bool IsTroopDefensive(TroopsEnum troop)
        {
            switch (troop)
            {
            case TroopsEnum.Legionnaire:
            case TroopsEnum.Praetorian:
            case TroopsEnum.Spearman:
            case TroopsEnum.Paladin:
            case TroopsEnum.Phalanx:
            case TroopsEnum.Druidrider:
            case TroopsEnum.SlaveMilitia:
            case TroopsEnum.AshWarden:
            case TroopsEnum.AnhurGuard:
            case TroopsEnum.ReshephChariot:
            case TroopsEnum.Mercenary:
            case TroopsEnum.Marksman:
                return(true);

            default:
                return(false);
            }
        }
Ejemplo n.º 5
0
        public static BuildingEnum GetTroopBuilding(TroopsEnum t, bool great)
        {
            switch (t)
            {
            case TroopsEnum.Legionnaire:
            case TroopsEnum.Praetorian:
            case TroopsEnum.Imperian:
            case TroopsEnum.Clubswinger:
            case TroopsEnum.Spearman:
            case TroopsEnum.Axeman:
            case TroopsEnum.Scout:
            case TroopsEnum.Phalanx:
            case TroopsEnum.Swordsman:
            case TroopsEnum.SlaveMilitia:
            case TroopsEnum.AshWarden:
            case TroopsEnum.KhopeshWarrior:
            case TroopsEnum.Mercenary:
            case TroopsEnum.Bowman:
                if (great)
                {
                    return(BuildingEnum.GreatBarracks);
                }
                return(BuildingEnum.Barracks);

            case TroopsEnum.EquitesLegati:
            case TroopsEnum.EquitesImperatoris:
            case TroopsEnum.EquitesCaesaris:
            case TroopsEnum.Paladin:
            case TroopsEnum.TeutonicKnight:
            case TroopsEnum.Pathfinder:
            case TroopsEnum.TheutatesThunder:
            case TroopsEnum.Druidrider:
            case TroopsEnum.Haeduan:
            case TroopsEnum.SopduExplorer:
            case TroopsEnum.AnhurGuard:
            case TroopsEnum.ReshephChariot:
            case TroopsEnum.Spotter:
            case TroopsEnum.SteppeRider:
            case TroopsEnum.Marksman:
            case TroopsEnum.Marauder:
                if (great)
                {
                    return(BuildingEnum.GreatStable);
                }
                return(BuildingEnum.Stable);

            case TroopsEnum.RomanRam:
            case TroopsEnum.RomanCatapult:
            case TroopsEnum.TeutonCatapult:
            case TroopsEnum.TeutonRam:
            case TroopsEnum.GaulRam:
            case TroopsEnum.GaulCatapult:
            case TroopsEnum.EgyptianCatapult:
            case TroopsEnum.EgyptianRam:
            case TroopsEnum.HunCatapult:
            case TroopsEnum.HunRam:
                return(BuildingEnum.Workshop);

            default:
                return(BuildingEnum.Site);    //idk, should have error handling
            }
        }
Ejemplo n.º 6
0
 public static bool IsTroopRam(TroopsEnum troop) => IsTroopRam((int)troop);
Ejemplo n.º 7
0
        /// <summary>
        /// For getting building requirements for troop research
        /// This is for academy research only, for training check for training building!
        /// </summary>
        /// <param name="troop">Troop to get building prerequisites for</param>
        /// <returns>List of prerequisites</returns>
        public static List <Prerequisite> GetBuildingPrerequisites(TroopsEnum troop)
        {
            var ret = new List <Prerequisite>();

            switch (troop)
            {
            //romans
            case TroopsEnum.Praetorian:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 1
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Smithy, Level = 1
                });
                return(ret);

            case TroopsEnum.Imperian:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 5
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Smithy, Level = 1
                });
                return(ret);

            case TroopsEnum.EquitesLegati:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Stable, Level = 1
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 5
                });
                return(ret);

            case TroopsEnum.EquitesImperatoris:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Stable, Level = 5
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 5
                });
                return(ret);

            case TroopsEnum.EquitesCaesaris:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 5
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Stable, Level = 10
                });
                return(ret);

            case TroopsEnum.RomanRam:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 10
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Workshop, Level = 1
                });
                return(ret);

            case TroopsEnum.RomanCatapult:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Workshop, Level = 10
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 15
                });
                return(ret);

            case TroopsEnum.RomanChief:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.RallyPoint, Level = 10
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 20
                });
                return(ret);

            //Teutons
            case TroopsEnum.Spearman:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 1
                });
                return(ret);

            case TroopsEnum.Axeman:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 3
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Smithy, Level = 1
                });
                return(ret);

            case TroopsEnum.Scout:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 1
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.MainBuilding, Level = 5
                });
                return(ret);

            case TroopsEnum.Paladin:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 5
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Stable, Level = 3
                });
                return(ret);

            case TroopsEnum.TeutonicKnight:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 15
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Stable, Level = 10
                });
                return(ret);

            case TroopsEnum.TeutonRam:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 10
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Workshop, Level = 1
                });
                return(ret);

            case TroopsEnum.TeutonCatapult:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 15
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Workshop, Level = 10
                });
                return(ret);

            case TroopsEnum.TeutonChief:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 20
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.RallyPoint, Level = 5
                });
                return(ret);

            //Gauls
            case TroopsEnum.Swordsman:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 1
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Smithy, Level = 1
                });
                return(ret);

            case TroopsEnum.Pathfinder:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 5
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Stable, Level = 1
                });
                return(ret);

            case TroopsEnum.TheutatesThunder:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Stable, Level = 3
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 5
                });
                return(ret);

            case TroopsEnum.Druidrider:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 5
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Stable, Level = 5
                });
                return(ret);

            case TroopsEnum.Haeduan:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 15
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Stable, Level = 10
                });
                return(ret);

            case TroopsEnum.GaulRam:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 10
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Workshop, Level = 1
                });
                return(ret);

            case TroopsEnum.GaulCatapult:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 15
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Workshop, Level = 10
                });
                return(ret);

            case TroopsEnum.GaulChief:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 20
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.RallyPoint, Level = 10
                });
                return(ret);

            //Egyptians
            case TroopsEnum.AshWarden:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Barracks, Level = 1
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Smithy, Level = 1
                });
                return(ret);

            case TroopsEnum.KhopeshWarrior:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 5
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Smithy, Level = 1
                });
                return(ret);

            case TroopsEnum.SopduExplorer:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 5
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Stable, Level = 1
                });
                return(ret);

            case TroopsEnum.AnhurGuard:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 5
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Stable, Level = 5
                });
                return(ret);

            case TroopsEnum.ReshephChariot:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 5
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Stable, Level = 10
                });
                return(ret);

            case TroopsEnum.EgyptianRam:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 10
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Workshop, Level = 5
                });
                return(ret);

            case TroopsEnum.EgyptianCatapult:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 15
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Workshop, Level = 10
                });
                return(ret);

            case TroopsEnum.EgyptianChief:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 20
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.RallyPoint, Level = 10
                });
                return(ret);

            //Huns
            case TroopsEnum.Bowman:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 3
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Smithy, Level = 1
                });
                return(ret);

            case TroopsEnum.Spotter:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 5
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Stable, Level = 1
                });
                return(ret);

            case TroopsEnum.SteppeRider:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 5
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Stable, Level = 3
                });
                return(ret);

            case TroopsEnum.Marksman:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 5
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Stable, Level = 5
                });
                return(ret);

            case TroopsEnum.Marauder:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 15
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Stable, Level = 10
                });
                return(ret);

            case TroopsEnum.HunRam:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 10
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Workshop, Level = 1
                });
                return(ret);

            case TroopsEnum.HunCatapult:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 15
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Workshop, Level = 10
                });
                return(ret);

            case TroopsEnum.HunChief:
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.Academy, Level = 20
                });
                ret.Add(new Prerequisite()
                {
                    Building = BuildingEnum.RallyPoint, Level = 10
                });
                return(ret);

            default: return(ret);
            }
        }