Add direct quest resolving
This commit is contained in:
@@ -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)) {
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
6
src/main/resources/content/quests/test.csv
Normal file
6
src/main/resources/content/quests/test.csv
Normal 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
|
||||||
|
Reference in New Issue
Block a user