Example #1
0
        /// <summary>
        ///     Gets the available land transports.
        /// </summary>
        /// <param name="report">The report.</param>
        /// <param name="unit">The unit the report is for.</param>
        /// <param name="equipmentProvider">The equipment provider.</param>
        /// <returns>
        ///     The available land transports.
        /// </returns>
        public static IEnumerable <Equipment> GetAvailableLandTransports(ReportDecorator report,
                                                                         UnitDecorator unit,
                                                                         IEquipmentProvider equipmentProvider)
        {
            var landTransports = new List <Equipment>();

            if (report != null)
            {
                var unorderedTransports = new List <Equipment>();

                if (report.Equipment.UsableTransports.Contains(LandTransport))
                {
                    // Usable transports has the "land" entry
                    unorderedTransports.AddRange(
                        equipmentProvider.Equipments.Where(equipment => equipment.Nationality == unit.Nationality.Value)
                        .Where(equipment => equipment.Type == UnitType.LandTransport)
                        .Where(
                            equipment =>
                            equipment.ShortName.StartsWith(SpecialUnitPrefix) == unit.IsSpecial)
                        .Where(equipment => String.IsNullOrEmpty(equipment.TransportCategory)));
                }

                if (String.IsNullOrEmpty(report.Equipment.UsableTransports))
                {
                    // Handle the default case without specified data in the usable transports column.
                    if (report.Equipment != None && SatisfiesDefaultLandTransportRules(report.Equipment))
                    {
                        // We do have valid equipment but no entry
                        unorderedTransports.AddRange(
                            equipmentProvider.Equipments.Where(
                                equipment => equipment.Nationality == unit.Nationality.Value)
                            .Where(equipment => equipment.Type == UnitType.LandTransport)
                            .Where(
                                equipment =>
                                equipment.ShortName.StartsWith(SpecialUnitPrefix) == unit.IsSpecial));
                    }
                }
                else
                {
                    // Usable transports has no "land" entry but may have "heavypull" or similar entries
                    unorderedTransports.AddRange(
                        equipmentProvider.Equipments.Where(equipment => equipment.Nationality == unit.Nationality.Value)
                        .Where(equipment => equipment.Type == UnitType.LandTransport)
                        .Where(
                            equipment =>
                            equipment.ShortName.StartsWith(SpecialUnitPrefix) == unit.IsSpecial)
                        .Where(equipment => !String.IsNullOrEmpty(equipment.TransportCategory))
                        .Where(
                            equipment =>
                            report.Equipment.UsableTransports.Contains(equipment.TransportCategory)));
                }

                landTransports.AddRange(unorderedTransports.OrderBy(equipment => equipment.AvailableFrom));
            }

            landTransports.Insert(0, None);

            return(landTransports);
        }
 public DecoratorService(IEquipmentProvider equipmentProvider,
                         IAwardProvider awardProvider,
                         IHeroProvider heroProvider)
 {
     this._equipmentProvider = equipmentProvider;
     this._awardProvider = awardProvider;
     this._heroProvider = heroProvider;
 }
 public DecoratorService(IEquipmentProvider equipmentProvider,
                         IAwardProvider awardProvider,
                         IHeroProvider heroProvider)
 {
     this._equipmentProvider = equipmentProvider;
     this._awardProvider     = awardProvider;
     this._heroProvider      = heroProvider;
 }
 public ReportsViewModel(IDialogService dialogService,
                         IEquipmentProvider equipmentProvider,
                         IAwardProvider awardProvider,
                         IHeroProvider heroProvider)
     : base(2, dialogService)
 {
     this._equipmentProvider = equipmentProvider;
     this._awardProvider = awardProvider;
     this._heroProvider = heroProvider;
     DisplayName = ScreenName;
 }
 public ReportsViewModel(IDialogService dialogService,
                         IEquipmentProvider equipmentProvider,
                         IAwardProvider awardProvider,
                         IHeroProvider heroProvider)
     : base(2, dialogService)
 {
     this._equipmentProvider = equipmentProvider;
     this._awardProvider     = awardProvider;
     this._heroProvider      = heroProvider;
     DisplayName             = ScreenName;
 }
        /// <summary>
        ///     Initializes a new instance of the <see cref="ReportDecorator" /> class.
        /// </summary>
        /// <param name="report">The <see cref="Report" /> this decorater wraps.</param>
        /// <param name="unit">The <see cref="Unit" /> the report is for.</param>
        /// <param name="equipmentProvider">The equipment provider.</param>
        /// <param name="awardProvider">The award provider.</param>
        /// <param name="heroProvider">The hero provider.</param>
        /// <exception cref="ArgumentNullException"><paramref name="report" /> or <paramref name="unit" /> is a null reference.</exception>
        public ReportDecorator(Report report,
                               Unit unit,
                               IEquipmentProvider equipmentProvider,
                               IAwardProvider awardProvider,
                               IHeroProvider heroProvider)
        {
            Contract.Requires <ArgumentNullException>(report != null);
            Contract.Requires <ArgumentException>(report.Equipment != null);
            Contract.Requires <ArgumentException>(report.LandTransport != null);
            Contract.Requires <ArgumentNullException>(unit != null);

            // Copy data from undecorated report.
            ScenarioName = report.ScenarioName;

            // Find the correct land transport.
            if (report.LandTransportId < 0 || (report.LandTransport.Equals(Equipment.None.ShortName)))
            {
                LandTransport = equipmentProvider.Find(report.LandTransport, unit.Nationality, UnitType.LandTransport);
            }
            else
            {
                LandTransport = equipmentProvider.Find(report.LandTransportId);
            }

            // Find the correct equipment.
            if (report.EquipmentId < 0 || (report.Equipment.Equals(Equipment.None.ShortName)))
            {
                Equipment = equipmentProvider.Find(report.Equipment, unit.Nationality, unit.Type);
            }
            else
            {
                Equipment = equipmentProvider.Find(report.EquipmentId);
            }

            Award highestAward = awardProvider.Find(report.HighestAward);

            HighestAward = new KeyValuePair <string, Award>(highestAward.DisplayName, highestAward);

            Experience = report.Experience;
            Kills      = report.Kills;
            Losses     = report.Losses;

            Hero firstHero  = heroProvider.Find(report.FirstHero);
            Hero secondHero = heroProvider.Find(report.SecondHero);
            Hero thirdHero  = heroProvider.Find(report.ThirdHero);

            FirstHero  = new KeyValuePair <string, Hero>(firstHero.DisplayName, firstHero);
            SecondHero = new KeyValuePair <string, Hero>(secondHero.DisplayName, secondHero);
            ThirdHero  = new KeyValuePair <string, Hero>(thirdHero.DisplayName, thirdHero);
        }
Example #7
0
        private static Motorization GetMotorization(UnitDecorator unit, IEquipmentProvider equipmentProvider)
        {
            var motorization = Motorization.NotMotorized;
            var lastReport   = (ReportDecorator)((Unit)unit).Reports.LastOrDefault();

            if (lastReport != null)
            {
                if (Equipment.GetAvailableLandTransports(lastReport, unit, equipmentProvider).Count() <= 1)
                {
                    motorization = Motorization.SelfPropelled;
                }
                else if (lastReport.LandTransport != Equipment.None)
                {
                    motorization = Motorization.Motorized;
                }
            }

            return(motorization);
        }
Example #8
0
 public Calculator(IEquipmentProvider equipmentProvider, IScenarioBuilder scenarioBuilder, IReportsExporter reportsExporter)
 {
     EquipmentProvider = equipmentProvider;
     ScenarioBuilder   = scenarioBuilder;
     ReportsExporter   = reportsExporter;
 }
Example #9
0
 public CoreViewModel(IEquipmentProvider equipmentProvider)
     : base(0)
 {
     this._equipmentProvider = equipmentProvider;
     DisplayName             = ScreenName;
 }
 public CoreViewModel(IEquipmentProvider equipmentProvider)
     : base(0)
 {
     this._equipmentProvider = equipmentProvider;
     DisplayName = ScreenName;
 }
        private static Motorization GetMotorization(UnitDecorator unit, IEquipmentProvider equipmentProvider)
        {
            var motorization = Motorization.NotMotorized;
            var lastReport = (ReportDecorator)((Unit)unit).Reports.LastOrDefault();

            if (lastReport != null)
            {
                if (Equipment.GetAvailableLandTransports(lastReport, unit, equipmentProvider).Count() <= 1)
                {
                    motorization = Motorization.SelfPropelled;
                }
                else if (lastReport.LandTransport != Equipment.None)
                {
                    motorization = Motorization.Motorized;
                }
            }

            return motorization;
        }