コード例 #1
0
ファイル: ItemStatService.cs プロジェクト: hallgeirl/iagd
        private void ApplyStatsToDbItems(List <PlayerHeldItem> items, StatFetch type)
        {
            var records = GetRecordsForItems(items);
            Dictionary <string, List <DBSTatRow> > statMap = _databaseItemStatDao.GetStats(records, type);

            foreach (PlayerHeldItem phi in items)
            {
                List <DBSTatRow> stats = new List <DBSTatRow>();
                if (statMap.ContainsKey(phi.BaseRecord))
                {
                    stats.AddRange(Filter(statMap[phi.BaseRecord]));
                }

                var statsWithText = Filter(stats.Where(m => !string.IsNullOrEmpty(m.TextValue)));
                List <DBSTatRow> statsWithNumerics = stats.Where(m => string.IsNullOrEmpty(m.TextValue))
                                                     .GroupBy(r => r.Stat)
                                                     .Select(g => new DBSTatRow {
                    Record    = g.FirstOrDefault()?.Record,
                    TextValue = g.FirstOrDefault()?.TextValue,
                    Stat      = g.FirstOrDefault()?.Stat,
                    Value     = g.Sum(v => v.Value)
                })
                                                     .ToList();

                statsWithNumerics.AddRange(statsWithText);

                phi.Tags = new HashSet <DBSTatRow>(statsWithNumerics);
            }

            Logger.Debug($"Applied stats to {items.Count()} items");
        }
コード例 #2
0
        public void UpdateState()
        {
            using (ISession session = SessionCreator.OpenSession()) {
                using (ITransaction transaction = session.BeginTransaction()) {
                    Populate(session);

                    IList <AugmentationItem> items = session.CreateCriteria <AugmentationItem>().List <AugmentationItem>();
                    var stats = _databaseItemStatDao.GetStats(session, StatFetch.AugmentItems);

                    foreach (var item in items)
                    {
                        var rarity       = ItemOperationsUtility.GetRarityForRecord(stats, item.BaseRecord);
                        var minimumLevel = ItemOperationsUtility.GetMinimumLevelForRecord(stats, item.BaseRecord);
                        var name         = ItemOperationsUtility.GetItemName(session, stats, item);

                        item.Rarity       = rarity;
                        item.MinimumLevel = minimumLevel;
                        item.Name         = name;
                        session.Update(item);
                    }

                    transaction.Commit();
                }
            }
        }
コード例 #3
0
ファイル: BuddyItemDaoImpl.cs プロジェクト: 211847750/iagd
 public void UpdatePetRecords(ISession session, List <BuddyItem> items)
 {
     using (ITransaction transaction = session.BeginTransaction()) {
         // Now that we have base stats, we can calculate pet records as well
         var stats = _databaseItemStatDao.GetStats(session, StatFetch.BuddyItems);
         for (int i = 0; i < items.Count; i++)
         {
             UpdatePetRecords(session, items.ElementAt(i), stats);
         }
         transaction.Commit();
     }
 }
コード例 #4
0
        /// <summary>
        /// Update internal item stats
        /// May take a lifetime and a half
        /// </summary>
        public void UpdateAllItemStats(IList <PlayerItem> items, Action <int> progress)
        {
            // A lame workaround for PlayerItemRecord not being available the first run..

            using (ISession session = SessionCreator.OpenSession()) {
                using (ITransaction transaction = session.BeginTransaction()) {
                    session.CreateQuery("DELETE FROM PlayerItemRecord")
                    .ExecuteUpdate();

                    // Get the base records stored
                    for (int i = 0; i < items.Count; i++)
                    {
                        UpdateRecords(session, items.ElementAt(i));
                    }

                    transaction.Commit();
                }


                using (ITransaction transaction = session.BeginTransaction()) {
                    // Now that we have base stats, we can calculate pet records as well
                    var stats = _databaseItemStatDao.GetStats(session, StatFetch.PlayerItems);
                    for (int i = 0; i < items.Count; i++)
                    {
                        UpdatePetRecords(session, items.ElementAt(i), stats);
                    }


                    foreach (PlayerItem item in items)
                    {
                        UpdateItemDetails(session, item, stats);

                        progress(1);
                    }

                    transaction.Commit();
                }
            }
        }
コード例 #5
0
 public Dictionary <string, List <DBSTatRow> > GetStats(IEnumerable <string> records, StatFetch fetchMode)
 {
     return(ThreadExecuter.Execute(
                () => repo.GetStats(records, fetchMode)
                ));
 }