From 2e12ab7f1fff62c41ba8ff7f0a14df3b1fad981b Mon Sep 17 00:00:00 2001 From: RaffaeleMorganti Date: Fri, 18 Nov 2022 21:00:28 +0100 Subject: [PATCH] remove duplicate operation on trigger --- .../java/com/github/dtschust/zork/Zork.java | 96 +++---------------- 1 file changed, 13 insertions(+), 83 deletions(-) diff --git a/src/main/java/com/github/dtschust/zork/Zork.java b/src/main/java/com/github/dtschust/zork/Zork.java index 2d2f4b6..e6fb451 100644 --- a/src/main/java/com/github/dtschust/zork/Zork.java +++ b/src/main/java/com/github/dtschust/zork/Zork.java @@ -430,22 +430,7 @@ public class Zork { private boolean doTriggersContainersInRoom() { boolean skip = false; for (String key : game.Rooms.get(currentRoom).container.keySet()) { - ZorkContainer tempContainer = game.Containers.get(key); - for (int x = 0; x < tempContainer.trigger.size(); x++) { - ZorkTrigger tempTrigger = tempContainer.trigger.get(x); - if (tempTrigger.evaluate(this)) { - for (String print: tempTrigger.print) { - System.out.println(print); - } - for (String action: tempTrigger.action) { - executeAction(action); - } - skip = skip || tempTrigger.hasCommand; - if (tempTrigger.type.equals("single")) { - tempContainer.trigger.remove(x); - } - } - } + skip = skip || doZorkTriggers(game.Containers.get(key)); } return skip; } @@ -455,22 +440,7 @@ public class Zork { for (String key : game.Rooms.get(currentRoom).container.keySet()) { ZorkContainer tempContainer = game.Containers.get(key); for (String key2 : tempContainer.item.keySet()) { - ZorkItem tempItem = game.Items.get(key2); - for (int x = 0; x < tempItem.trigger.size(); x++) { - ZorkTrigger tempTrigger = tempItem.trigger.get(x); - if (tempTrigger.evaluate(this)) { - for (String print : tempTrigger.print) { - System.out.println(print); - } - for (String action : tempTrigger.action) { - executeAction(action); - } - skip = skip || tempTrigger.hasCommand; - if (tempTrigger.type.equals("single")) { - tempItem.trigger.remove(x); - } - } - } + skip = skip || doZorkTriggers(game.Items.get(key2)); } } return skip; @@ -479,22 +449,7 @@ public class Zork { private boolean doTriggersItemsInRoom() { boolean skip = false; for (String key : game.Rooms.get(currentRoom).item.keySet()) { - ZorkItem tempItem = game.Items.get(key); - for (int x = 0; x < tempItem.trigger.size(); x++) { - ZorkTrigger tempTrigger = tempItem.trigger.get(x); - if (tempTrigger.evaluate(this)) { - for (String print: tempTrigger.print) { - System.out.println(print); - } - for (String action: tempTrigger.action) { - executeAction(action); - } - skip = skip || tempTrigger.hasCommand; - if (tempTrigger.type.equals("single")) { - tempItem.trigger.remove(x); - } - } - } + skip = skip || doZorkTriggers(game.Items.get(key)); } return skip; } @@ -502,22 +457,7 @@ public class Zork { private boolean doTriggersItemsInInventory() { boolean skip = false; for (String key : game.Inventory.keySet()) { - ZorkItem tempItem = game.Items.get(key); - for (int x = 0; x < tempItem.trigger.size(); x++) { - ZorkTrigger tempTrigger = tempItem.trigger.get(x); - if (tempTrigger.evaluate(this)) { - for (String print: tempTrigger.print) { - System.out.println(print); - } - for (String action: tempTrigger.action) { - executeAction(action); - } - skip = skip || tempTrigger.hasCommand; - if (tempTrigger.type.equals("single")) { - tempItem.trigger.remove(x); - } - } - } + skip = skip || doZorkTriggers(game.Items.get(key)); } return skip; } @@ -525,30 +465,20 @@ public class Zork { private boolean doTriggersCreaturesInRoom() { boolean skip = false; for (String key : game.Rooms.get(currentRoom).creature.keySet()) { - ZorkCreature tempCreature = game.Creatures.get(key); - for (int x = 0; x < tempCreature.trigger.size(); x++) { - ZorkTrigger tempTrigger = tempCreature.trigger.get(x); - if (tempTrigger.evaluate(this)) { - for (String print: tempTrigger.print) { - System.out.println(print); - } - for (String action: tempTrigger.action) { - executeAction(action); - } - skip = skip || tempTrigger.hasCommand; - if (tempTrigger.type.equals("single")) { - tempCreature.trigger.remove(x); - } - } - } + skip = skip || doZorkTriggers(game.Creatures.get(key)); } return skip; } private boolean doTriggersRoom() { + return doZorkTriggers(game.Rooms.get(currentRoom)); + } + + + private boolean doZorkTriggers(ZorkObject zorkObject) { boolean skip = false; - for (int x = 0; x < game.Rooms.get(currentRoom).trigger.size(); x++) { - ZorkTrigger tempTrigger = game.Rooms.get(currentRoom).trigger.get(x); + for (int x = 0; x < zorkObject.trigger.size(); x++) { + ZorkTrigger tempTrigger = zorkObject.trigger.get(x); if (tempTrigger.evaluate(this)) { for (String print: tempTrigger.print) { System.out.println(print); @@ -558,7 +488,7 @@ public class Zork { } skip = skip || tempTrigger.hasCommand; if (tempTrigger.type.equals("single")) { - game.Rooms.get(currentRoom).trigger.remove(x); + zorkObject.trigger.remove(x); } } }