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> </list>
</option> </option>
</component> </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" /> <output url="file://$PROJECT_DIR$/out" />
</component> </component>
</project> </project>

View File

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

View File

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

View File

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