adds ID sorting option, forward port 7ceea1d6a6b9e40ed7ba889e7180fb9b313fb2c6

This commit is contained in:
way2muchnoise
2017-02-02 17:02:31 +01:00
parent 24f8c88f7e
commit afd38354e3
5 changed files with 46 additions and 3 deletions

View File

@@ -51,6 +51,7 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid {
public static final int SORTING_TYPE_QUANTITY = 0;
public static final int SORTING_TYPE_NAME = 1;
public static final int SORTING_TYPE_ID= 2;
public static final int SEARCH_BOX_MODE_NORMAL = 0;
public static final int SEARCH_BOX_MODE_NORMAL_AUTOSELECTED = 1;
@@ -559,7 +560,7 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid {
}
public static boolean isValidSortingType(int type) {
return type == SORTING_TYPE_QUANTITY || type == SORTING_TYPE_NAME;
return type == SORTING_TYPE_QUANTITY || type == SORTING_TYPE_NAME || type == SORTING_TYPE_ID;
}
public static boolean isValidSortingDirection(int direction) {

View File

@@ -11,6 +11,8 @@ import com.raoulvdberge.refinedstorage.container.ContainerGrid;
import com.raoulvdberge.refinedstorage.gui.GuiBase;
import com.raoulvdberge.refinedstorage.gui.Scrollbar;
import com.raoulvdberge.refinedstorage.gui.grid.filtering.GridFilterParser;
import com.raoulvdberge.refinedstorage.gui.grid.sorting.GridSorting;
import com.raoulvdberge.refinedstorage.gui.grid.sorting.GridSortingID;
import com.raoulvdberge.refinedstorage.gui.grid.sorting.GridSortingName;
import com.raoulvdberge.refinedstorage.gui.grid.sorting.GridSortingQuantity;
import com.raoulvdberge.refinedstorage.gui.grid.stack.GridStackFluid;
@@ -45,8 +47,9 @@ import java.util.concurrent.ThreadLocalRandom;
import java.util.function.Predicate;
public class GuiGrid extends GuiBase implements IGridDisplay {
private static final GridSortingQuantity SORTING_QUANTITY = new GridSortingQuantity();
private static final GridSortingName SORTING_NAME = new GridSortingName();
private static final GridSorting SORTING_QUANTITY = new GridSortingQuantity();
private static final GridSorting SORTING_NAME = new GridSortingName();
private static final GridSorting SORTING_ID = new GridSortingID();
public static final ListMultimap<Item, GridStackItem> ITEMS = Multimaps.synchronizedListMultimap(ArrayListMultimap.create());
public static final ListMultimap<Fluid, GridStackFluid> FLUIDS = Multimaps.synchronizedListMultimap(ArrayListMultimap.create());
@@ -187,11 +190,14 @@ public class GuiGrid extends GuiBase implements IGridDisplay {
SORTING_NAME.setSortingDirection(grid.getSortingDirection());
SORTING_QUANTITY.setSortingDirection(grid.getSortingDirection());
SORTING_ID.setSortingDirection(grid.getSortingDirection());
stacks.sort(SORTING_NAME);
if (grid.getSortingType() == NetworkNodeGrid.SORTING_TYPE_QUANTITY) {
stacks.sort(SORTING_QUANTITY);
} else if (grid.getSortingType() == NetworkNodeGrid.SORTING_TYPE_ID) {
stacks.sort(SORTING_ID);
}
}

View File

@@ -0,0 +1,28 @@
package com.raoulvdberge.refinedstorage.gui.grid.sorting;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeGrid;
import com.raoulvdberge.refinedstorage.gui.grid.stack.IGridStack;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
public class GridSortingID extends GridSorting {
@Override
public int compare(IGridStack left, IGridStack right) {
int x = left.getHash();
int y = right.getHash();
if (left.getIngredient() instanceof ItemStack && right.getIngredient() instanceof ItemStack) {
x = Item.getIdFromItem(((ItemStack) left.getIngredient()).getItem());
y = Item.getIdFromItem(((ItemStack) right.getIngredient()).getItem());
}
if (x != y) {
if (sortingDirection == NetworkNodeGrid.SORTING_DIRECTION_DESCENDING) {
return Integer.compare(x, y);
} else if (sortingDirection == NetworkNodeGrid.SORTING_DIRECTION_ASCENDING) {
return Integer.compare(y, x);
}
}
return 0;
}
}

View File

@@ -1,6 +1,7 @@
package com.raoulvdberge.refinedstorage.gui.sidebutton;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeGrid;
import com.raoulvdberge.refinedstorage.block.EnumGridType;
import com.raoulvdberge.refinedstorage.gui.GuiBase;
import com.raoulvdberge.refinedstorage.tile.grid.IGrid;
import net.minecraft.util.text.TextFormatting;
@@ -31,6 +32,12 @@ public class SideButtonGridSortingType extends SideButton {
if (type == NetworkNodeGrid.SORTING_TYPE_QUANTITY) {
type = NetworkNodeGrid.SORTING_TYPE_NAME;
} else if (type == NetworkNodeGrid.SORTING_TYPE_NAME) {
if (grid.getType() == EnumGridType.FLUID) {
type = NetworkNodeGrid.SORTING_TYPE_QUANTITY;
} else {
type = NetworkNodeGrid.SORTING_TYPE_ID;
}
} else if (type == NetworkNodeGrid.SORTING_TYPE_ID) {
type = NetworkNodeGrid.SORTING_TYPE_QUANTITY;
}

View File

@@ -123,6 +123,7 @@ sidebutton.refinedstorage:grid.sorting.direction.1=Descending
sidebutton.refinedstorage:grid.sorting.type=Sorting Type
sidebutton.refinedstorage:grid.sorting.type.0=Quantity
sidebutton.refinedstorage:grid.sorting.type.1=Name
sidebutton.refinedstorage:grid.sorting.type.2=ID
sidebutton.refinedstorage:grid.search_box_mode=Search Box Mode
sidebutton.refinedstorage:grid.search_box_mode.0=Normal
sidebutton.refinedstorage:grid.search_box_mode.1=Normal (autoselected)