Example #1
0
        public void LoadExpensions()
        {
            var backpack       = StaticBonusList.Any(s => s.StaticBonusType == StaticBonusType.BackPack);
            var backpackticket = StaticBonusList.Any(s => s.StaticBonusType == StaticBonusType.InventoryTicketUpgrade);
            var expension      = (byte)((backpack ? 12 : 0) + (backpackticket ? 60 : 0));

            InventoryService.Expensions[NoscorePocketType.Main]      += expension;
            InventoryService.Expensions[NoscorePocketType.Equipment] += expension;
            InventoryService.Expensions[NoscorePocketType.Etc]       += expension;
        }
Example #2
0
        public async Task SaveAsync()
        {
            try
            {
                var account = Session.Account;
                await _accountDao.TryInsertOrUpdateAsync(account).ConfigureAwait(false);

                CharacterDto character = (Character)MemberwiseClone();
                await _characterDao.TryInsertOrUpdateAsync(character).ConfigureAwait(false);

                var quicklistEntriesToDelete = _quicklistEntriesDao
                                               .Where(i => i.CharacterId == CharacterId) !.ToList()
                                               .Where(i => QuicklistEntries.All(o => o.Id != i.Id)).ToList();
                await _quicklistEntriesDao.TryDeleteAsync(quicklistEntriesToDelete.Select(s => s.Id).ToArray()).ConfigureAwait(false);

                await _quicklistEntriesDao.TryInsertOrUpdateAsync(QuicklistEntries).ConfigureAwait(false);

                // load and concat inventory with equipment
                var itemsToDelete = _inventoryItemInstanceDao
                                    .Where(i => i.CharacterId == CharacterId) !.ToList()
                                    .Where(i => InventoryService.Values.All(o => o.Id != i.Id)).ToList();

                await _inventoryItemInstanceDao.TryDeleteAsync(itemsToDelete.Select(s => s.Id).ToArray()).ConfigureAwait(false);

                await _itemInstanceDao.TryDeleteAsync(itemsToDelete.Select(s => s.ItemInstanceId).ToArray()).ConfigureAwait(false);

                await _itemInstanceDao.TryInsertOrUpdateAsync(InventoryService.Values.Select(s => s.ItemInstance !).ToArray()).ConfigureAwait(false);

                await _inventoryItemInstanceDao.TryInsertOrUpdateAsync(InventoryService.Values.ToArray()).ConfigureAwait(false);

                var staticBonusToDelete = _staticBonusDao
                                          .Where(i => i.CharacterId == CharacterId) !.ToList()
                                          .Where(i => StaticBonusList.All(o => o.StaticBonusId != i.StaticBonusId)).ToList();
                await _staticBonusDao.TryDeleteAsync(staticBonusToDelete.Select(s => s.StaticBonusId)).ConfigureAwait(false);

                await _staticBonusDao.TryInsertOrUpdateAsync(StaticBonusList).ConfigureAwait(false);

                await _titleDao.TryInsertOrUpdateAsync(Titles).ConfigureAwait(false);

                var minilandDto = (MinilandDto)_minilandProvider.GetMiniland(CharacterId);
                await _minilandDao.TryInsertOrUpdateAsync(minilandDto).ConfigureAwait(false);

                var questsToDelete = _characterQuestsDao
                                     .Where(i => i.CharacterId == CharacterId) !.ToList()
                                     .Where(i => Quests.Values.All(o => o.QuestId != i.QuestId)).ToList();
                await _characterQuestsDao.TryDeleteAsync(questsToDelete.Select(s => s.Id)).ConfigureAwait(false);

                await _characterQuestsDao.TryInsertOrUpdateAsync(Quests.Values).ConfigureAwait(false);
            }
            catch (Exception e)
            {
                _logger.Error("Save Character failed. SessionId: " + Session.SessionId, e);
            }
        }