private void UpdateScoreboard(HUD hud, FieldInfo fieldInfo) { ScoreboardController scoreboardController = hud.scoreboardPanel.GetComponent <ScoreboardController>(); if (scoreboardController != null) { UIElementAllocator <ScoreboardStrip> elements = (UIElementAllocator <ScoreboardStrip>) typeof(ScoreboardController) .GetField("stripAllocator", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(scoreboardController); if (elements != null) { List <ScoreboardStrip> scoreboardStrips = (List <ScoreboardStrip>) typeof(UIElementAllocator <ScoreboardStrip>) .GetField("elementControllerComponentsList", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(elements); foreach (ScoreboardStrip scoreboardStrip in scoreboardStrips) { if (scoreboardStrip == null) { continue; } if (fieldInfo != null) { List <ItemIcon> itemIcons = (List <ItemIcon>)fieldInfo.GetValue(scoreboardStrip.itemInventoryDisplay); foreach (ItemIcon itemIcon in itemIcons) { if (itemIcon != null && itemIcon.GetComponent <DropItemController>() == null) { DropItemController dropItemController = itemIcon.gameObject.AddComponent <DropItemController>(); Inventory inventory = (Inventory)typeof(ItemInventoryDisplay).GetField("inventory", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(scoreboardStrip.itemInventoryDisplay); dropItemController.Inventory = inventory; dropItemController.ItemIcon = itemIcon; dropItemController.SendDropItemToServer = SendDropItemRequest; } } } EquipmentIcon equipmentIcon = scoreboardStrip.equipmentIcon; if (equipmentIcon != null && equipmentIcon.GetComponent <DropItemController>() == null) { if (equipmentIcon.targetInventory == null) { continue; } EquipmentIndex equipmentIndex = (equipmentIcon.displayAlternateEquipment) ? equipmentIcon.targetInventory.alternateEquipmentIndex : equipmentIcon.targetInventory.currentEquipmentIndex; if (equipmentIndex != EquipmentIndex.None) { DropItemController dropItemController = equipmentIcon.gameObject.AddComponent <DropItemController>(); dropItemController.Inventory = equipmentIcon.targetInventory; dropItemController.EquipmentIcon = equipmentIcon; dropItemController.SendDropEquipmentToServer = SendDropEquipmentRequest; } } } } } }
private void Update() { if (!NetworkServer.active) { return; } if (CachedHudInstancesList == null) { CachedHudInstancesList = (List <HUD>) typeof(HUD).GetField("instancesList", BindingFlags.NonPublic | BindingFlags.Static).GetValue(null); } foreach (HUD hud in CachedHudInstancesList) { if (hud == null || hud.itemInventoryDisplay == null) { continue; } FieldInfo fieldInfo = typeof(ItemInventoryDisplay).GetField("itemIcons", BindingFlags.NonPublic | BindingFlags.Instance); if (fieldInfo == null) { continue; } List <ItemIcon> itemIcons = (List <ItemIcon>)fieldInfo.GetValue(hud.itemInventoryDisplay); foreach (ItemIcon itemIcon in itemIcons) { if (itemIcon != null && itemIcon.GetComponent <DropItemController>() == null) { DropItemController dropItemController = itemIcon.transform.gameObject.AddComponent <DropItemController>(); ItemIndex itemIndex = (ItemIndex)typeof(ItemIcon).GetField("itemIndex", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(itemIcon); dropItemController.ItemIndex = itemIndex; Inventory inventory = (Inventory)typeof(ItemInventoryDisplay).GetField("inventory", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(hud.itemInventoryDisplay); dropItemController.Inventory = inventory; } } foreach (EquipmentIcon equipmentIcon in hud.equipmentIcons) { if (equipmentIcon != null && equipmentIcon.GetComponent <DropItemController>() == null) { if (equipmentIcon.targetEquipmentSlot == null || equipmentIcon.targetEquipmentSlot.equipmentIndex == EquipmentIndex.None) { continue; } DropItemController dropItemController = equipmentIcon.transform.gameObject.AddComponent <DropItemController>(); dropItemController.EquipmentIndex = equipmentIcon.targetEquipmentSlot.equipmentIndex; dropItemController.Inventory = equipmentIcon.targetInventory; } } } }
private void UpdateHud(HUD hud, FieldInfo fieldInfo) { if (hud.itemInventoryDisplay != null) { if (fieldInfo != null) { List <ItemIcon> itemIcons = (List <ItemIcon>)fieldInfo.GetValue(hud.itemInventoryDisplay); foreach (ItemIcon itemIcon in itemIcons) { if (itemIcon != null && itemIcon.GetComponent <DropItemController>() == null) { DropItemController dropItemController = itemIcon.gameObject.AddComponent <DropItemController>(); Inventory inventory = (Inventory)typeof(ItemInventoryDisplay).GetField("inventory", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(hud.itemInventoryDisplay); dropItemController.Inventory = inventory; dropItemController.ItemIcon = itemIcon; dropItemController.SendDropItemToServer = SendDropItemRequest; } } } } foreach (EquipmentIcon equipmentIcon in hud.equipmentIcons) { if (equipmentIcon != null && equipmentIcon.GetComponent <DropItemController>() == null) { if (equipmentIcon.targetInventory == null) { continue; } EquipmentIndex equipmentIndex = (equipmentIcon.displayAlternateEquipment) ? equipmentIcon.targetInventory.alternateEquipmentIndex : equipmentIcon.targetInventory.currentEquipmentIndex; if (equipmentIndex != EquipmentIndex.None) { DropItemController dropItemController = equipmentIcon.gameObject.AddComponent <DropItemController>(); dropItemController.Inventory = equipmentIcon.targetInventory; dropItemController.EquipmentIcon = equipmentIcon; dropItemController.SendDropEquipmentToServer = SendDropEquipmentRequest; } } } }