Exemplo n.º 1
0
        public void RemoveUnobtainedFamiliars(GameSave saveFile, object inventory)
        {
            var reflected = inventory.AsDynamic();

            var familiars         = ((IEnumerable <InventoryItem>)reflected._items).Cast <InventoryFamiliar>();
            var familiarsToRemove = familiars
                                    .Where(f => !saveFile.HasFamiliar(f.FamiliarType))
                                    .Select(f => f.Name)
                                    .ToList();

            var entries      = (IList)reflected.Entries;
            var entryMapping = (IList <int>)reflected.KeyToItemLookup;

            for (var i = entries.Count - 1; i >= 0; i--)
            {
                var entry = entries[i];
                if (familiarsToRemove.Contains(entry.AsDynamic().Text))
                {
                    entries.RemoveAt(i);
                    entryMapping.RemoveAt(i);
                }
            }
        }