public override void OnHitByProjectile(CellFace cellFace, WorldItem worldItem) { if (worldItem.ToRemove) { return; } ComponentBlockEntity blockEntity = m_subsystemBlockEntities.GetBlockEntity(cellFace.X, cellFace.Y, cellFace.Z); if (blockEntity != null) { ComponentChest inventory = blockEntity.Entity.FindComponent <ComponentChest>(throwOnError: true); Pickable pickable = worldItem as Pickable; int num = pickable?.Count ?? 1; int num2 = ComponentInventoryBase.AcquireItems(inventory, worldItem.Value, num); if (num2 < num) { m_subsystemAudio.PlaySound("Audio/PickableCollected", 1f, 0f, worldItem.Position, 3f, autoDelay: true); } if (num2 <= 0) { worldItem.ToRemove = true; } else if (pickable != null) { pickable.Count = num2; } } }
public ChestWidget(IInventory inventory, ComponentChest componentChest) { m_componentChest = componentChest; XElement node = ContentManager.Get <XElement>("Widgets/ChestWidget"); LoadContents(this, node); m_inventoryGrid = Children.Find <GridPanelWidget>("InventoryGrid"); m_chestGrid = Children.Find <GridPanelWidget>("ChestGrid"); int num = 0; for (int i = 0; i < m_chestGrid.RowsCount; i++) { for (int j = 0; j < m_chestGrid.ColumnsCount; j++) { InventorySlotWidget inventorySlotWidget = new InventorySlotWidget(); inventorySlotWidget.AssignInventorySlot(componentChest, num++); m_chestGrid.Children.Add(inventorySlotWidget); m_chestGrid.SetWidgetCell(inventorySlotWidget, new Point2(j, i)); } } num = 10; for (int k = 0; k < m_inventoryGrid.RowsCount; k++) { for (int l = 0; l < m_inventoryGrid.ColumnsCount; l++) { InventorySlotWidget inventorySlotWidget2 = new InventorySlotWidget(); inventorySlotWidget2.AssignInventorySlot(inventory, num++); m_inventoryGrid.Children.Add(inventorySlotWidget2); m_inventoryGrid.SetWidgetCell(inventorySlotWidget2, new Point2(l, k)); } } }
public override bool OnInteract(TerrainRaycastResult raycastResult, ComponentMiner componentMiner) { ComponentBlockEntity blockEntity = m_subsystemBlockEntities.GetBlockEntity(raycastResult.CellFace.X, raycastResult.CellFace.Y, raycastResult.CellFace.Z); if (blockEntity != null && componentMiner.ComponentPlayer != null) { ComponentChest componentChest = blockEntity.Entity.FindComponent <ComponentChest>(throwOnError: true); componentMiner.ComponentPlayer.ComponentGui.ModalPanelWidget = new ChestWidget(componentMiner.Inventory, componentChest); AudioManager.PlaySound("Audio/UI/ButtonClick", 1f, 0f, 0f); return(true); } return(false); }