private int GetMaxListboxItems(MyGuiControlListbox listbox) { if (listbox == m_shipInventoryListBox) { return GetMaxInventoryItems(m_smallShipsBuilders[m_currentShipBuilderIndex].Builder.Inventory); } else if (listbox == m_otherSideInventoryListBox) { return GetMaxInventoryItems(m_otherSideInventoryBuilder); } else { return listbox.GetRowsCount() * listbox.GetColumsCount(); } }
private void DropItem(MyGuiControlListbox listbox, MyGuiControlListboxItem item, int rowIndex, int itemIndex) { // in god editor and other side listbox, we don't want put this item to this listbox, so we remove it if (m_inventoryScreenType == MyGuiScreenInventoryType.GodEditor && listbox == m_otherSideInventoryListBox) { m_itemsRepository.RemoveItem(item.Key); } else { if (listbox.GetItem(rowIndex, itemIndex) != null || listbox.GetRowsCount() <= rowIndex) { listbox.AddItem(item); } else { listbox.AddItem(item, rowIndex, itemIndex); } // if there are no empty row, we try add new row if (listbox.GetEmptyRowsCount() == 0) { AddFreeRowsIfCan(listbox, 1); } } StopDragging(); }
private void AddFreeRowsIfCan(MyGuiControlListbox listbox, int rowCount) { int maxRows = (int)Math.Ceiling((double)GetMaxListboxItems(listbox) / INVENTORY_COLUMNS); if (listbox.GetRowsCount() + rowCount <= maxRows) { listbox.AddRows(rowCount); } }