public static void WriteAttachedContainer(this NetworkWriter writer, AttachedContainer container) { var reference = NetworkedContainerReference.CreateReference(container) ?? throw new InvalidOperationException("Cannot create reference for attached container"); writer.WriteNetworkedContainerReference(reference); }
private void InventoryOnContainerClosed(AttachedContainer container) { for (var i = 0; i < containerDisplays.Count; i++) { if (containerDisplays[i].Container == container) { Destroy(containerDisplays[i].UiElement); containerDisplays.RemoveAt(i); return; } } }
public void OnEnable() { TitleStyle = new GUIStyle(); TitleStyle.fontSize = 13; TitleStyle.fontStyle = FontStyle.Bold; TitleStyle.normal.textColor = Color.white; containerDescriptor = (ContainerDescriptor)target; AddBase(); attachedContainer = containerDescriptor.attachedContainer; containerInteractive = containerDescriptor.containerInteractive; containerItemDisplay = containerDescriptor.containerItemDisplay; }
private void InventoryOnContainerOpened(AttachedContainer container) { foreach (ContainerDisplay x in containerDisplays) { if (x.Container == container) { return; } } GameObject ui = Instantiate(ContainerUiPrefab); var containerUi = ui.GetComponent <ContainerUi>(); Assert.IsNotNull(containerUi); containerUi.AttachedContainer = container; containerUi.Inventory = Inventory; containerDisplays.Add(new ContainerDisplay(ui, container)); }
/// <summary> /// Set the Active hand of the Player to be the AttachedContainer passed in parameter. /// Do nothing if the parameter is the already active parameter. /// </summary> /// <param name="selectedContainer">This AttachedContainer should only be a hand.</param> public void SetActiveHand(AttachedContainer selectedContainer) { if (selectedContainer == SelectedHand) { return; } else { SelectedHandIndex = HandContainers.ToList().IndexOf(selectedContainer); if (SelectedHandIndex != -1) { HandChanged?.Invoke(SelectedHandIndex); CmdSetActiveHand(SelectedHandIndex); } else { Debug.LogError("selectedContainer is not in HandContainers."); return; } } }
private void CreateHandDisplays() { // Destroy existing elements Transform containerTransform = HandsContainer.transform; int childCount = containerTransform.childCount; for (var i = 0; i < childCount; i++) { DestroyImmediate(containerTransform.GetChild(0).gameObject); } // Create hand for every hand container var containers = Hands.HandContainers; for (var i = 0; i < containers.Length; i++) { AttachedContainer attachedContainer = containers[i]; GameObject handElement = Instantiate(i % 2 == 0 ? LeftHandPrefab : RightHandPrefab, HandsContainer, false); var slot = handElement.GetComponent <SingleItemContainerSlot>(); slot.Inventory = Hands.Inventory; slot.Container = attachedContainer; } }
private bool CanStore(Item item, AttachedContainer target) { Container container = target.Container; return(container.CouldStoreItem(item) && container.CouldHoldItem(item)); }
public ContainerDisplay(GameObject uiElement, AttachedContainer container) { UiElement = uiElement; Container = container; }