Add direct quest resolving

This commit is contained in:
2020-07-10 10:41:00 +02:00
parent 0180da46a8
commit 43c9f4ce9e
3 changed files with 55 additions and 2 deletions

View File

@@ -19,6 +19,7 @@ import org.jetbrains.annotations.Nullable;
import java.io.File; import java.io.File;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; import java.util.List;
public class WhatAStorage { public class WhatAStorage {
@@ -100,8 +101,8 @@ public class WhatAStorage {
} }
public void loadGame() { public void loadGame() {
//questGenerator = questManager.get("normal"); questGenerator = questManager.get("test");
questGenerator = new RandomQuestGenerator(); //questGenerator = new RandomQuestGenerator();
quests.clear(); quests.clear();
storage = new Storage(GRID_SIZE, GRID_SIZE, GRID_SIZE); storage = new Storage(GRID_SIZE, GRID_SIZE, GRID_SIZE);
balance = new Balance(); balance = new Balance();
@@ -198,6 +199,39 @@ public class WhatAStorage {
return false; return false;
} }
public boolean canQuestsResolve(int in, int out) {
int s = quests.size();
if (in < s && in >= 0 && out < s && out >= 0) {
if (quests.get(in).getType() == Quest.Type.IN && quests.get(out).getType() == Quest.Type.OUT) {
Product product = quests.get(in).getProduct();
return product.equals(quests.get(out).getProduct());
}
}
return false;
}
public boolean resolveQuests(int in, int out) {
int s = quests.size();
if (in < s && in >= 0 && out < s && out >= 0) {
if (quests.get(in).getType() == Quest.Type.IN && quests.get(out).getType() == Quest.Type.OUT) {
Product product = quests.get(in).getProduct();
if (product.equals(quests.get(out).getProduct())) {
addTransaction(Balance.Transaction.STORE, quests.get(in).getReward());
addTransaction(Balance.Transaction.DELIVER, quests.get(out).getReward());
if (out > in) out--;
quests.remove(in);
quests.remove(out);
visual.onQuestRemoved(in);
visual.onQuestRemoved(out);
return true;
}
}
}
return false;
}
public void moveProduct(int x1, int y1, int x2, int y2) { public void moveProduct(int x1, int y1, int x2, int y2) {
Product product = storage.get(x1, y1).front(); Product product = storage.get(x1, y1).front();
if (product != null && product.testY(y2)) { if (product != null && product.testY(y2)) {

View File

@@ -55,6 +55,12 @@ public class QuestController {
dragEvent.acceptTransferModes(TransferMode.MOVE); dragEvent.acceptTransferModes(TransferMode.MOVE);
dragEvent.consume(); dragEvent.consume();
} }
} else if (product instanceof DraggedProduct.Quest) {
DraggedProduct.Quest quest = (DraggedProduct.Quest) product;
if ((WhatAStorage.getInstance().canQuestsResolve(quest.index, getIndex()))) {
dragEvent.acceptTransferModes(TransferMode.MOVE);
dragEvent.consume();
}
} }
} }
} }
@@ -71,6 +77,13 @@ public class QuestController {
dragEvent.consume(); dragEvent.consume();
return; return;
} }
} else if (product instanceof DraggedProduct.Quest) {
DraggedProduct.Quest quest = (DraggedProduct.Quest) product;
if (WhatAStorage.getInstance().resolveQuests(quest.index, getIndex())) {
dragEvent.setDropCompleted(true);
dragEvent.consume();
return;
}
} }
} }
dragEvent.setDropCompleted(false); dragEvent.setDropCompleted(false);

View File

@@ -0,0 +1,6 @@
in,paper,200,blue,a5
out,paper,200,blue,a5
in,paper,200,blue,a5
out,paper,200,blue,a5
in,paper,200,blue,a5
out,paper,200,blue,a5
1 in paper 200 blue a5
2 out paper 200 blue a5
3 in paper 200 blue a5
4 out paper 200 blue a5
5 in paper 200 blue a5
6 out paper 200 blue a5