コード例 #1
0
        static async Task <int> RunDump(DumpOptions opts)
        {
            var db = await GetKTContextAsync(opts);

            List <string> factions = await db.Factions.Select(faction => faction.Id).ToListAsync();

            var final_result = 0;

            foreach (string faction in factions)
            {
                var cost_opts = new CostOptions
                {
                    DBPath   = opts.DBPath,
                    LegacyDB = opts.LegacyDB,
                    Faction  = faction,
                };

                int result;
                try
                {
                    result = await RunCost(cost_opts);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.ToString());
                    result = 1;
                }
                if (result != 0)
                {
                    final_result = result;
                }

                cost_opts.All = true;

                try
                {
                    result = await RunCost(cost_opts);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.ToString());
                    result = 1;
                }
                if (result != 0)
                {
                    final_result = result;
                }
            }

            return(final_result);
        }
コード例 #2
0
ファイル: Xml.cs プロジェクト: Wolfury/nebenkosten
 public static void Write(ProjectManager projects, string path, IdTable ids)
 {
     foreach (var p in projects)
     {
         if (p == Project.Empty)
         {
             continue;
         }
         var f = new XmlWriter(path + p.Name + ".xml");
         f.Begin(p, ids);
         f.Begin("Assignments");
         var faclist = new FlatAssignmentCollection[p.Assignments.Count];
         lock (p.Assignments) p.Assignments.CopyTo(faclist, 0);
         foreach (var fac in faclist)
         {
             f.Begin(fac, ids);
             var falist = new FlatAssignment[fac.Count];
             lock (fac) fac.CopyTo(falist, 0);
             foreach (var fa in falist)
             {
                 f.Write(fa, ids);
             }
             f.End(fac);
         }
         f.End("Assignments");
         f.Begin("Costs");
         var costlist = new Cost[p.Costs.Count];
         lock (p.Costs) p.Costs.CopyTo(costlist, 0);
         foreach (var c in costlist)
         {
             f.Begin(c, ids);
             f.Begin("Options");
             var optionslist = new CostOptions[c.Options.Count];
             lock (c.Options) c.Options.CopyTo(optionslist, 0);
             foreach (var o in optionslist)
             {
                 f.Write(o, ids);
             }
             f.End("Options");
             f.End(c);
         }
         f.End("Costs");
         f.End(p);
         f.Close();
     }
 }
コード例 #3
0
        static async Task <int> RunCost(CostOptions opts)
        {
            var db = await GetKTContextAsync(opts);

            var faction_id = opts.Faction;

            Faction faction = await db.Factions
                              .Where(f => f.Id == faction_id)
                              .Include(f => f.Models)
                              .ThenInclude(m => m.Abilities)
                              .Include(f => f.Models)
                              .ThenInclude(m => m.ModelProfiles)
                              .ThenInclude(mp => mp.Abilities)
                              .Include(f => f.Models)
                              .ThenInclude(m => m.ModelProfiles)
                              .ThenInclude(mp => mp.Psychics)
                              .Include(f => f.Models)
                              .ThenInclude(m => m.ModelProfiles)
                              .ThenInclude(mp => mp.Specialists)
                              .ThenInclude(sp => sp.Specialist)
                              .Include(f => f.Models)
                              .ThenInclude(m => m.WarGearOptions)
                              .Include(f => f.Models)
                              .ThenInclude(m => m.ModelProfiles)
                              .ThenInclude(mp => mp.WarGearOptions)
                              .Include(f => f.Models)
                              .ThenInclude(m => m.ModelProfiles)
                              .ThenInclude(mp => mp.LevelCosts)
                              .Include(f => f.Models)
                              .ThenInclude(m => m.ModelProfiles)
                              .ThenInclude(mp => mp.CostOverrides)
                              .ThenInclude(co => co.Weapon)
                              .Include(f => f.Models)
                              .ThenInclude(m => m.ModelProfiles)
                              .ThenInclude(mp => mp.ModelProfileWeapons)
                              .ThenInclude(mpw => mpw.Weapon)
                              .Include(f => f.Models)
                              .ThenInclude(m => m.ModelWeapons)
                              .ThenInclude(mv => mv.Weapon)
                              .FirstAsync();

            Console.WriteLine($"Faction: {faction.NameEn}");

            if (opts.All)
            {
                int returncode = 0;
                foreach (var unit in faction.Models.OrderByDescending(m => m.KeywordsEn.Contains("COMMANDER")).ThenBy(m => m.NameEn))
                {
                    returncode += await ShowUnitTable(db, unit);

                    Console.WriteLine("\n---------------------------------------------------------------------");
                }
                return(returncode);
            }
            else if (opts.Unit != null)
            {
                var unit = faction.Models.Where(m => m.Id == opts.Unit).First();
                return(await ShowUnitTable(db, unit));
            }
            else
            {
                return(await ShowCostTable(db, faction));
            }
        }
コード例 #4
0
 public DiscountEngine(IEnumerable <IDiscount> discounts, IOptions <CostOptions> costOptions)
 {
     _costOptions = costOptions.Value ?? throw new ArgumentNullException(nameof(costOptions.Value));
     _discounts   = discounts ?? throw new ArgumentNullException(nameof(discounts));
 }