public void SetOptionsFromInteractor(Interactor activator) { if (!activator) { return; } var body = activator.GetComponent <CharacterBody>(); if (!body || !body.inventory) { return; } var opts = new List <PickupPickerController.Option>(); for (int i = 0; i < body.inventory.itemAcquisitionOrder.Count; i++) { var iind = body.inventory.itemAcquisitionOrder[i]; var idef = ItemCatalog.GetItemDef(iind); var pind = PickupCatalog.FindPickupIndex(iind); if (idef && pind != PickupIndex.none && idef.canRemove && !idef.hidden && !blacklistedItems.Contains(idef)) { opts.Add(new PickupPickerController.Option { available = true, pickupIndex = pind }); } } ppc.SetOptionsServer(opts.ToArray()); }
private static void SetPickupPickerControllerAspectOptions(PickupPickerController controller, PickupDef pickupDef) { List <PickupPickerController.Option> options = new List <PickupPickerController.Option>(); if (pickupDef.itemIndex != ItemIndex.None) { foreach (ItemIndex itemIndex in Catalog.aspectItemIndexes) { bool valid = !Catalog.disabledItemIndexes.Contains(itemIndex); bool available = !Run.instance.IsItemExpansionLocked(itemIndex); if (valid && available) { PickupIndex pickupIndex = PickupCatalog.FindPickupIndex(itemIndex); options.Add(new PickupPickerController.Option { available = true, pickupIndex = pickupIndex }); } } } else if (pickupDef.equipmentIndex != EquipmentIndex.None) { foreach (EquipmentIndex equipIndex in Catalog.aspectEquipIndexes) { bool available = !Run.instance.IsEquipmentExpansionLocked(equipIndex); if (available) { PickupIndex pickupIndex = PickupCatalog.FindPickupIndex(equipIndex); options.Add(new PickupPickerController.Option { available = true, pickupIndex = pickupIndex }); } } } else { options.Add(new PickupPickerController.Option { available = true, pickupIndex = pickupDef.pickupIndex }); } controller.SetOptionsServer(options.ToArray()); }