feat: Improved inventory item selection

This commit is contained in:
Jakub Žitník 2025-03-01 10:32:14 +01:00
parent e8e9d826bb
commit c50184983b
Signed by: jzitnik
GPG Key ID: C577A802A6AF4EF3
4 changed files with 11 additions and 7 deletions

2
.idea/misc.xml generated
View File

@ -8,7 +8,7 @@
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_22" default="true" project-jdk-name="22" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_23" default="true" project-jdk-name="openjdk-23" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

View File

@ -12,7 +12,6 @@ import org.jline.terminal.TerminalBuilder;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try {

View File

@ -317,7 +317,7 @@ public class Inventory {
return selectedItemInv != -1;
}
public void mergeItems(int indexFrom, int indexTo, Optional<InventoryItem[]> i) {
public boolean mergeItems(int indexFrom, int indexTo, Optional<InventoryItem[]> i) {
InventoryDTO fromData = getItem(indexFrom, i);
InventoryDTO toData = getItem(indexTo, i);
@ -325,15 +325,15 @@ public class Inventory {
InventoryItem toItem = toData.getObj()[toData.getIndex()];
if (fromItem == null || toItem == null) {
return; // Nothing to merge
return false; // Nothing to merge
}
if (!fromItem.getItem().getFirst().isStackable() || !toItem.getItem().getFirst().isStackable()) {
return;
return false;
}
if (!fromItem.getItem().getFirst().equals(toItem.getItem().getFirst())) {
return; // Different items cannot be merged
return false; // Different items cannot be merged
}
while (true) {
@ -351,6 +351,8 @@ public class Inventory {
}
selectedItemInv = -1;
return true;
}
public void mergeOne(int fromIndex, int toIndex, Optional<InventoryItem[]> i) {

View File

@ -91,6 +91,7 @@ public class InventoryClickHandler {
int actualIndex = index + offset;
if (inventory.getSelectedItemInv() == actualIndex) {
inventory.setSelectedItemInv(-1);
return;
}
@ -101,7 +102,9 @@ public class InventoryClickHandler {
} else if (items[index] != null) {
if (inventory.hasSelectedItem()) {
// Merge items
inventory.mergeItems(inventory.getSelectedItemInv(), actualIndex, i);
if (!inventory.mergeItems(inventory.getSelectedItemInv(), actualIndex, i)) {
inventory.setSelectedItemInv(index + offset);
}
} else {
inventory.setSelectedItemInv(index + offset);
}