Ejemplo n.º 1
0
        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;
                }
            }
        }
Ejemplo n.º 2
0
        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));
                }
            }
        }
Ejemplo n.º 3
0
        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);
        }