internal ExpeditionViewModel(ExpeditionInfo rpInfo)
        {
            Info    = rpInfo;
            r_Info2 = ExpeditionService.Instance.GetInfo(rpInfo.ID);

            ResultPrediction = KanColleGame.Current.Port.Fleets.Table.Values.Skip(1).Select(r => new ExpeditionResultPrediction(r_Info2, r)).ToList();
        }
            public ExpeditionYield(Fleet rpFleet, ExpeditionInfo2 rpInfo)
            {
                var rExpedition = rpFleet.ExpeditionStatus.Expedition;

                var rLandingCraftCount = rpFleet.Ships.SelectMany(r => r.Slots).Select(r => r.Equipment.Info.Icon).Count(r => r == EquipmentIconType.LandingCraft);
                var rRate = 1.0 + rLandingCraftCount * .05;

                var rFuel    = rpInfo.RewardResources.Fuel * rRate;
                var rBullet  = rpInfo.RewardResources.Bullet * rRate;
                var rSteel   = rpInfo.RewardResources.Steel * rRate;
                var rBauxite = rpInfo.RewardResources.Bauxite * rRate;

                var rFuelConsumption   = (int)rpFleet.Ships.Sum(r => r.Info.MaxFuelConsumption * rExpedition.FuelConsumption * (r.IsMarried ? .85 : 1.0));
                var rBulletConsumption = (int)rpFleet.Ships.Sum(r => r.Info.MaxBulletConsumption * rExpedition.BulletConsumption * (r.IsMarried ? .85 : 1.0));

                Fuel     = (int)rFuel - rFuelConsumption;
                Bullet   = (int)rBullet - rBulletConsumption;
                FuelGS   = (int)(rFuel * 1.5) - rFuelConsumption;
                BulletGS = (int)(rBullet * 1.5) - rBulletConsumption;

                Steel     = (int)rSteel;
                Bauxite   = (int)rBauxite;
                SteelGS   = (int)(Steel * 1.5);
                BauxiteGS = (int)(rBauxite * 1.5);

                var rTotalHours              = TimeSpan.FromMinutes(rExpedition.Time).TotalHours;
                var rHourlyFuelConsumption   = rFuelConsumption / rTotalHours;
                var rHourlyBulletConsumption = rBulletConsumption / rTotalHours;

                HourlyFuel     = rFuel / rTotalHours - rHourlyFuelConsumption;
                HourlyBullet   = rBullet / rTotalHours - rHourlyBulletConsumption;
                HourlyFuelGS   = rFuel * 1.5 / rTotalHours - rHourlyFuelConsumption;
                HourlyBulletGS = rBullet * 1.5 / rTotalHours - rHourlyBulletConsumption;

                HourlySteel     = rSteel / rTotalHours;
                HourlyBauxite   = rBauxite / rTotalHours;
                HourlySteelGS   = Steel * 1.5 / rTotalHours;
                HourlyBauxiteGS = rBauxite * 1.5 / rTotalHours;
            }
Beispiel #3
0
            public ExpeditionYield(Fleet rpFleet, ExpeditionInfo2 rpInfo)
            {
                var rExpedition = rpFleet.ExpeditionStatus.Expedition;

                var rFuelConsumption   = 0;
                var rBulletConsumption = 0;

                var rLandingCraftCount     = 0;
                var rLandingCraftLevel     = 0;
                var rLandingCraftBonusRate = 1.0;

                var rTDLCCount = 0;
                var rDLCCount  = 0;

                foreach (var rShip in rpFleet.Ships)
                {
                    var rFactor = rShip.IsMarried ? .85 : 1.0;

                    rFuelConsumption   += (int)(rShip.Info.MaxFuelConsumption * rExpedition.FuelConsumption * rFactor);
                    rBulletConsumption += (int)(rShip.Info.MaxBulletConsumption * rExpedition.BulletConsumption * rFactor);

                    if (rShip.Info.ID == 487)
                    {
                        rLandingCraftBonusRate += .05;
                    }

                    foreach (var rSlot in rShip.Slots)
                    {
                        switch (rSlot.Equipment.Info.ID)
                        {
                        case 68:
                            rLandingCraftBonusRate += .05;
                            rDLCCount++;
                            break;

                        case 166:
                            rLandingCraftBonusRate += .02;
                            break;

                        case 167:
                            rLandingCraftBonusRate += .01;
                            break;

                        case 193:
                            rLandingCraftBonusRate += .05;
                            rTDLCCount++;
                            break;

                        default:
                            continue;
                        }

                        rLandingCraftCount++;
                        rLandingCraftLevel += rSlot.Equipment.Level;
                    }
                }

                rLandingCraftBonusRate = Math.Min(rLandingCraftBonusRate, 1.2);

                if (rLandingCraftCount > 0)
                {
                    rLandingCraftBonusRate += rLandingCraftBonusRate * rLandingCraftLevel * .01 / rLandingCraftCount;
                }

                switch (rTDLCCount)
                {
                case 0:
                case 1:
                case 2:
                    rLandingCraftBonusRate += rTDLCCount * .02;
                    break;

                case 3:
                    switch (rDLCCount)
                    {
                    case 0:
                    case 1:
                        rLandingCraftBonusRate += .05;
                        break;

                    case 2:
                        rLandingCraftBonusRate += .052;
                        break;

                    default:
                        rLandingCraftBonusRate += .054;
                        break;
                    }
                    break;

                default:
                    switch (rDLCCount)
                    {
                    case 0:
                        rLandingCraftBonusRate += .054;
                        break;

                    case 1:
                        rLandingCraftBonusRate += .056;
                        break;

                    case 2:
                        rLandingCraftBonusRate += .058;
                        break;

                    case 3:
                        rLandingCraftBonusRate += .059;
                        break;

                    default:
                        rLandingCraftBonusRate += .06;
                        break;
                    }
                    break;
                }

                var rFuel    = rpInfo.RewardResources.Fuel * rLandingCraftBonusRate;
                var rBullet  = rpInfo.RewardResources.Bullet * rLandingCraftBonusRate;
                var rSteel   = rpInfo.RewardResources.Steel * rLandingCraftBonusRate;
                var rBauxite = rpInfo.RewardResources.Bauxite * rLandingCraftBonusRate;

                Fuel     = (int)rFuel - rFuelConsumption;
                Bullet   = (int)rBullet - rBulletConsumption;
                FuelGS   = (int)(rFuel * 1.5) - rFuelConsumption;
                BulletGS = (int)(rBullet * 1.5) - rBulletConsumption;

                Steel     = (int)rSteel;
                Bauxite   = (int)rBauxite;
                SteelGS   = (int)(Steel * 1.5);
                BauxiteGS = (int)(rBauxite * 1.5);

                var rTotalHours              = TimeSpan.FromMinutes(rExpedition.Time).TotalHours;
                var rHourlyFuelConsumption   = rFuelConsumption / rTotalHours;
                var rHourlyBulletConsumption = rBulletConsumption / rTotalHours;

                HourlyFuel     = rFuel / rTotalHours - rHourlyFuelConsumption;
                HourlyBullet   = rBullet / rTotalHours - rHourlyBulletConsumption;
                HourlyFuelGS   = rFuel * 1.5 / rTotalHours - rHourlyFuelConsumption;
                HourlyBulletGS = rBullet * 1.5 / rTotalHours - rHourlyBulletConsumption;

                HourlySteel     = rSteel / rTotalHours;
                HourlyBauxite   = rBauxite / rTotalHours;
                HourlySteelGS   = Steel * 1.5 / rTotalHours;
                HourlyBauxiteGS = rBauxite * 1.5 / rTotalHours;
            }