diff --git a/src/main/java/com/comandante/creeper/configuration/ConfigureNpc.java b/src/main/java/com/comandante/creeper/configuration/ConfigureNpc.java index 22a44afa4c6e5716ea37dffaa1113595c5d2a005..674cd47fc02af2dd6810d2452d15400be3934234 100644 --- a/src/main/java/com/comandante/creeper/configuration/ConfigureNpc.java +++ b/src/main/java/com/comandante/creeper/configuration/ConfigureNpc.java @@ -6,13 +6,11 @@ import com.comandante.creeper.core_game.GameManager; import com.comandante.creeper.entity.EntityManager; import com.comandante.creeper.items.Forage; import com.comandante.creeper.items.ItemMetadata; -import com.comandante.creeper.merchant.LloydBartender; -import com.comandante.creeper.merchant.MerchantItemForSale; +import com.comandante.creeper.merchant.Merchant; import com.comandante.creeper.npc.Npc; import com.comandante.creeper.spawner.ItemSpawner; import com.comandante.creeper.spawner.NpcSpawner; import com.comandante.creeper.spawner.SpawnRule; -import com.google.common.collect.Lists; import java.io.IOException; import java.util.List; @@ -54,6 +52,11 @@ public class ConfigureNpc { } } + List<Merchant> allMerchantMetadatas = gameManager.getMerchantStorage().getAllMerchants(); + for (Merchant merchant: allMerchantMetadatas) { + gameManager.getRoomManager().addMerchant(merchant); + } + // ItemSpawner itemSpawner = new ItemSpawner(ItemType.SMALL_HEALTH_POTION, new SpawnRuleBuilder().setArea(Area.NEWBIE_ZONE).setSpawnIntervalTicks(600).setMaxInstances(100).setMaxPerRoom(5).setRandomPercent(40).createSpawnRule(), gameManager); // ItemSpawner itemSpawner1 = new ItemSpawner(ItemType.SMALL_HEALTH_POTION, new SpawnRuleBuilder().setArea(Area.FANCYHOUSE_ZONE).setSpawnIntervalTicks(600).setMaxInstances(12).setMaxPerRoom(2).setRandomPercent(50).createSpawnRule(), gameManager); // ItemSpawner itemSpawner2 = new ItemSpawner(ItemType.SMALL_HEALTH_POTION, new SpawnRuleBuilder().setArea(Area.HOUSE_ZONE).setSpawnIntervalTicks(600).setMaxInstances(12).setMaxPerRoom(2).setRandomPercent(50).createSpawnRule(), gameManager); @@ -66,14 +69,14 @@ public class ConfigureNpc { // entityManager.addEntity(itemSpawner2); // entityManager.addEntity(itemSpawner5); - List<MerchantItemForSale> itemsForSale = Lists.newArrayList(); - itemsForSale.add(new MerchantItemForSale("small health potion", 8)); - itemsForSale.add(new MerchantItemForSale("purple drank", 80)); - itemsForSale.add(new MerchantItemForSale("biggers skin satchel", 25000)); -// - LloydBartender lloydBartender = new LloydBartender(gameManager, itemsForSale); - gameManager.getRoomManager().addMerchant(64, lloydBartender); -// +// List<MerchantItemForSale> itemsForSale = Lists.newArrayList(); +// itemsForSale.add(new MerchantItemForSale("small health potion", 8)); +// itemsForSale.add(new MerchantItemForSale("purple drank", 80)); +// itemsForSale.add(new MerchantItemForSale("biggers skin satchel", 25000)); +//// +// LloydBartender lloydBartender = new LloydBartender(gameManager, itemsForSale); +// gameManager.getRoomManager().addMerchant(64, lloydBartender); +//// // Map<Integer, MerchantItemForSale> nigelForSale = Maps.newLinkedHashMap(); // nigelForSale.put(1, new MerchantItemForSale(ItemType.SMALL_HEALTH_POTION, 6)); // diff --git a/src/main/java/com/comandante/creeper/core_game/GameManager.java b/src/main/java/com/comandante/creeper/core_game/GameManager.java index ba31db77a85df0b3db7bf696ac28c4d1f4ab3e78..6fb4ea6bb4c6f1e300f468ecd356f45d161309ab 100644 --- a/src/main/java/com/comandante/creeper/core_game/GameManager.java +++ b/src/main/java/com/comandante/creeper/core_game/GameManager.java @@ -28,6 +28,7 @@ import com.comandante.creeper.stats.StatsBuilder; import com.comandante.creeper.stats.modifier.StatsModifierFactory; import com.comandante.creeper.storage.FilebasedJsonStorage; import com.comandante.creeper.storage.ItemStorage; +import com.comandante.creeper.storage.MerchantStorage; import com.comandante.creeper.storage.NpcStorage; import com.comandante.creeper.world.FloorManager; import com.comandante.creeper.world.MapsManager; @@ -92,6 +93,12 @@ public class GameManager { private final Gson gson; private final FilebasedJsonStorage filebasedJsonStorage; + public MerchantStorage getMerchantStorage() { + return merchantStorage; + } + + private final MerchantStorage merchantStorage; + public GameManager(CreeperConfiguration creeperConfiguration, RoomManager roomManager, PlayerManager playerManager, EntityManager entityManager, MapsManager mapsManager, ChannelCommunicationUtils channelUtils, HttpClient httpClient) { this.roomManager = roomManager; @@ -124,6 +131,7 @@ public class GameManager { this.filebasedJsonStorage = new FilebasedJsonStorage(gson); this.npcStorage = new NpcStorage(this, filebasedJsonStorage); this.itemStorage = new ItemStorage(filebasedJsonStorage); + this.merchantStorage = new MerchantStorage(this, filebasedJsonStorage); this.httpclient = httpClient; } diff --git a/src/main/java/com/comandante/creeper/merchant/BlackbeardRogue.java b/src/main/java/com/comandante/creeper/merchant/BlackbeardRogue.java index 4fb9dc20cad6c8aa1d8ca32bdb6cc0f10b73d142..fc8e379afebfb5289187afb105fcbbfb4a62d8a5 100644 --- a/src/main/java/com/comandante/creeper/merchant/BlackbeardRogue.java +++ b/src/main/java/com/comandante/creeper/merchant/BlackbeardRogue.java @@ -1,3 +1,4 @@ +/* package com.comandante.creeper.merchant; import com.comandante.creeper.core_game.GameManager; @@ -24,3 +25,4 @@ public class BlackbeardRogue extends Merchant { super(gameManager, NAME, colorName, validTriggers, merchantItemForSales, welcomeMessage); } } +*/ diff --git a/src/main/java/com/comandante/creeper/merchant/Blacksmith.java b/src/main/java/com/comandante/creeper/merchant/Blacksmith.java index 1943d206cac40794389c9f1ed9fc07a7c8697d42..dae36afa690b42a56642eaf8cf57dddbbee7f93f 100644 --- a/src/main/java/com/comandante/creeper/merchant/Blacksmith.java +++ b/src/main/java/com/comandante/creeper/merchant/Blacksmith.java @@ -1,3 +1,4 @@ +/* package com.comandante.creeper.merchant; @@ -35,3 +36,4 @@ public class Blacksmith extends Merchant { super(gameManager, NAME, colorName, validTriggers, merchantItemForSales, welcomeMessage); } } +*/ diff --git a/src/main/java/com/comandante/creeper/merchant/GrimulfWizard.java b/src/main/java/com/comandante/creeper/merchant/GrimulfWizard.java index 526cad787df00ed719a749cefbadec8f39e843d8..620b8a86517d6ff71594fb0da6620ffb8a215c4f 100644 --- a/src/main/java/com/comandante/creeper/merchant/GrimulfWizard.java +++ b/src/main/java/com/comandante/creeper/merchant/GrimulfWizard.java @@ -1,3 +1,4 @@ +/* package com.comandante.creeper.merchant; @@ -25,3 +26,4 @@ public class GrimulfWizard extends Merchant { super(gameManager, NAME, colorName, validTriggers, merchantItemForSales, welcomeMessage); } } +*/ diff --git a/src/main/java/com/comandante/creeper/merchant/JimBanker.java b/src/main/java/com/comandante/creeper/merchant/JimBanker.java index 4d740233e8b4b1d84ea38dc311fe64b18fe8b07f..495ebf4f2acbf1bab39a921f4831a6a6b9d05cb8 100644 --- a/src/main/java/com/comandante/creeper/merchant/JimBanker.java +++ b/src/main/java/com/comandante/creeper/merchant/JimBanker.java @@ -1,3 +1,4 @@ +/* package com.comandante.creeper.merchant; @@ -31,3 +32,4 @@ public class JimBanker extends Merchant { } } +*/ diff --git a/src/main/java/com/comandante/creeper/merchant/KetilCommissary.java b/src/main/java/com/comandante/creeper/merchant/KetilCommissary.java index f01357b8406987fed230b9e838538ec9a0cad2c3..5ee11e8eb820473527c8de766aaab3d8d925cc16 100644 --- a/src/main/java/com/comandante/creeper/merchant/KetilCommissary.java +++ b/src/main/java/com/comandante/creeper/merchant/KetilCommissary.java @@ -1,3 +1,4 @@ +/* package com.comandante.creeper.merchant; import com.comandante.creeper.core_game.GameManager; @@ -24,3 +25,4 @@ public class KetilCommissary extends Merchant { super(gameManager, NAME, colorName, validTriggers, merchantItemForSales, welcomeMessage); } } +*/ diff --git a/src/main/java/com/comandante/creeper/merchant/LloydBartender.java b/src/main/java/com/comandante/creeper/merchant/LloydBartender.java index 6f6f297b96677e6c13d0edb3307438e9779e88da..a6eff8cf171c817a0d6efd4a69c61ae034b1c3a4 100644 --- a/src/main/java/com/comandante/creeper/merchant/LloydBartender.java +++ b/src/main/java/com/comandante/creeper/merchant/LloydBartender.java @@ -1,3 +1,4 @@ +/* package com.comandante.creeper.merchant; import com.comandante.creeper.core_game.GameManager; @@ -32,3 +33,4 @@ public class LloydBartender extends Merchant { super(gameManager, NAME, colorName, validTriggers, merchantItemForSales, welcomeMessage); } } +*/ diff --git a/src/main/java/com/comandante/creeper/merchant/LockerRoomGuy.java b/src/main/java/com/comandante/creeper/merchant/LockerRoomGuy.java index 854af255e8d3bfb2109b7635235680801f7e9e39..72e18877d04f21f61840024558ba033580309a7d 100644 --- a/src/main/java/com/comandante/creeper/merchant/LockerRoomGuy.java +++ b/src/main/java/com/comandante/creeper/merchant/LockerRoomGuy.java @@ -1,3 +1,4 @@ +/* package com.comandante.creeper.merchant; import com.comandante.creeper.core_game.GameManager; @@ -30,3 +31,4 @@ public class LockerRoomGuy extends Merchant { } } +*/ diff --git a/src/main/java/com/comandante/creeper/merchant/Merchant.java b/src/main/java/com/comandante/creeper/merchant/Merchant.java index ceedad93f5c4e8ddd9e1791310fe290e52ef1395..1c8f21d5e1c1aee8c10c49666e9543c8be970c4a 100644 --- a/src/main/java/com/comandante/creeper/merchant/Merchant.java +++ b/src/main/java/com/comandante/creeper/merchant/Merchant.java @@ -9,22 +9,23 @@ import org.nocrala.tools.texttablefmt.Table; import java.text.NumberFormat; import java.util.*; -public abstract class Merchant { +public class Merchant { - private long lastPhraseTimestamp; private final GameManager gameManager; + private final String internalName; private final String name; private final String colorName; private final Set<String> validTriggers; private final List<MerchantItemForSale> merchantItemForSales; private final String welcomeMessage; private final MerchantType merchantType; + private final Integer roomId; - public Merchant(GameManager gameManager, String name, String colorName, Set<String> validTriggers, List<MerchantItemForSale> merchantItemForSales, String welcomeMessage) { - this(gameManager, name, colorName, validTriggers, merchantItemForSales, welcomeMessage, MerchantType.BASIC); + public Merchant(GameManager gameManager, String internalName, String name, String colorName, Set<String> validTriggers, List<MerchantItemForSale> merchantItemForSales, String welcomeMessage, Integer roomId) { + this(gameManager, internalName, name, colorName, validTriggers, merchantItemForSales, welcomeMessage, roomId, MerchantType.BASIC); } - public Merchant(GameManager gameManager, String name, String colorName, Set<String> validTriggers, List<MerchantItemForSale> merchantItemForSales, String welcomeMessage, MerchantType merchantType) { + public Merchant(GameManager gameManager, String internalName, String name, String colorName, Set<String> validTriggers, List<MerchantItemForSale> merchantItemForSales, String welcomeMessage, Integer roomId, MerchantType merchantType) { this.gameManager = gameManager; this.name = name; this.colorName = colorName; @@ -32,6 +33,13 @@ public abstract class Merchant { this.merchantItemForSales = merchantItemForSales; this.welcomeMessage = welcomeMessage; this.merchantType = merchantType; + this.roomId = roomId; + this.internalName = internalName; + + } + + public String getInternalName() { + return internalName; } public String getMenu() { @@ -60,14 +68,14 @@ public abstract class Merchant { return t.render(); } - public long getLastPhraseTimestamp() { - return lastPhraseTimestamp; - } - public GameManager getGameManager() { return gameManager; } + public Integer getRoomId() { + return roomId; + } + public String getName() { return name; } diff --git a/src/main/java/com/comandante/creeper/merchant/MerchantMetadata.java b/src/main/java/com/comandante/creeper/merchant/MerchantMetadata.java index ad8401e5e5ecfb58a2a544ec986a614e79a9eebf..541304ed7eac217272353c93a1062d3636645e99 100644 --- a/src/main/java/com/comandante/creeper/merchant/MerchantMetadata.java +++ b/src/main/java/com/comandante/creeper/merchant/MerchantMetadata.java @@ -5,12 +5,19 @@ import java.util.Set; public class MerchantMetadata { + private String internalName; + private Integer roomId; private String name; private String colorName; private Set<String> validTriggers; private List<MerchantItemForSale> merchantItemForSales; private String welcomeMessage; + + public String getInternalName() { + return internalName; + } + public String getName() { return name; } @@ -39,8 +46,21 @@ public class MerchantMetadata { return merchantItemForSales; } + public void setInternalName(String internalName) { + this.internalName = internalName; + } + + public Integer getRoomId() { + return roomId; + } + + public void setRoomId(Integer roomId) { + this.roomId = roomId; + } + public void setMerchantItemForSales(List<MerchantItemForSale> merchantItemForSales) { this.merchantItemForSales = merchantItemForSales; + } public String getWelcomeMessage() { diff --git a/src/main/java/com/comandante/creeper/merchant/NigelBartender.java b/src/main/java/com/comandante/creeper/merchant/NigelBartender.java index 772075ddeb50f295892eeb8dea6088b662c1a207..0829e940f493930f6be08e22d437c12a3c4feabf 100644 --- a/src/main/java/com/comandante/creeper/merchant/NigelBartender.java +++ b/src/main/java/com/comandante/creeper/merchant/NigelBartender.java @@ -1,3 +1,4 @@ +/* package com.comandante.creeper.merchant; import com.comandante.creeper.core_game.GameManager; @@ -24,3 +25,4 @@ public class NigelBartender extends Merchant { super(gameManager, NAME, colorName, validTriggers, merchantItemForSales, welcomeMessage); } } +*/ diff --git a/src/main/java/com/comandante/creeper/merchant/OldWiseMan.java b/src/main/java/com/comandante/creeper/merchant/OldWiseMan.java index bc568491e107d3fdb541b1a83b7eb8d0f81f5c8f..164caef6bcb07d008cde4e84d6a939f8f0e0a7c4 100644 --- a/src/main/java/com/comandante/creeper/merchant/OldWiseMan.java +++ b/src/main/java/com/comandante/creeper/merchant/OldWiseMan.java @@ -1,17 +1,7 @@ package com.comandante.creeper.merchant; -import com.comandante.creeper.core_game.GameManager; -import com.comandante.creeper.server.player_communication.Color; - -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import static com.comandante.creeper.server.player_communication.Color.BOLD_ON; - -public class OldWiseMan extends Merchant { - private final static long phraseIntervalMs = 300000; +public class OldWiseMan { + /* private final static long phraseIntervalMs = 300000; private final static String NAME = "old wise man"; private final static String colorName = BOLD_ON + Color.CYAN + NAME + Color.RESET; private final static String welcomeMessage = "The "+ colorName +" can assist you in choosing a character class.\r\n"; @@ -27,6 +17,6 @@ public class OldWiseMan extends Merchant { @Override public String getMenu() { return null; - } + }*/ } diff --git a/src/main/java/com/comandante/creeper/merchant/WentworthTailor.java b/src/main/java/com/comandante/creeper/merchant/WentworthTailor.java index c38a894f028e1d26e7b3c4756a85bfcd6971f9cc..3df29817e6e297a4b0693b2c899dcd8c0868087b 100644 --- a/src/main/java/com/comandante/creeper/merchant/WentworthTailor.java +++ b/src/main/java/com/comandante/creeper/merchant/WentworthTailor.java @@ -1,3 +1,4 @@ +/* package com.comandante.creeper.merchant; import com.comandante.creeper.core_game.GameManager; @@ -24,3 +25,4 @@ public class WentworthTailor extends Merchant { super(gameManager, NAME, colorName, validTriggers, merchantItemForSales, welcomeMessage); } } +*/ diff --git a/src/main/java/com/comandante/creeper/merchant/Wizard.java b/src/main/java/com/comandante/creeper/merchant/Wizard.java index a98f07ca35df83e040e2e5d00d66977d0b4b2501..23577bcce2258e4b7c301794b1895db8f75a6770 100644 --- a/src/main/java/com/comandante/creeper/merchant/Wizard.java +++ b/src/main/java/com/comandante/creeper/merchant/Wizard.java @@ -1,3 +1,4 @@ +/* package com.comandante.creeper.merchant; import com.comandante.creeper.core_game.GameManager; @@ -38,3 +39,4 @@ public class Wizard extends Merchant { super(gameManager, NAME, colorName, validTriggers, merchantItemForSales, welcomeMessage); } } +*/ diff --git a/src/main/java/com/comandante/creeper/storage/FilebasedJsonStorage.java b/src/main/java/com/comandante/creeper/storage/FilebasedJsonStorage.java index 259d56786c8285f3b1765c6f380ee2dbc0cf8c75..887f258faae5c6cf9f82286ad6d9e2b9007c1e7a 100644 --- a/src/main/java/com/comandante/creeper/storage/FilebasedJsonStorage.java +++ b/src/main/java/com/comandante/creeper/storage/FilebasedJsonStorage.java @@ -46,6 +46,7 @@ public class FilebasedJsonStorage { } private List<String> getAllJsonStrings(String storageDirectory, boolean recursive) { + new File(storageDirectory).mkdirs(); Iterator<File> iterator = FileUtils.iterateFiles(new File(storageDirectory), new String[]{"json"}, recursive); return toListOfJsonStrings(iterator); } diff --git a/src/main/java/com/comandante/creeper/storage/MerchantStorage.java b/src/main/java/com/comandante/creeper/storage/MerchantStorage.java new file mode 100644 index 0000000000000000000000000000000000000000..ec867a65cddf3ab60ed26a419d24861634b0c83b --- /dev/null +++ b/src/main/java/com/comandante/creeper/storage/MerchantStorage.java @@ -0,0 +1,60 @@ +package com.comandante.creeper.storage; + +import com.comandante.creeper.core_game.GameManager; +import com.comandante.creeper.merchant.Merchant; +import com.comandante.creeper.merchant.MerchantMetadata; +import org.apache.log4j.Logger; + +import java.io.IOException; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +public class MerchantStorage { + + public final static String LOCAL_MERCHANT_DIRECTORY = "world/merchants/"; + + private static final Logger log = Logger.getLogger(MerchantStorage.class); + private final FilebasedJsonStorage filebasedJsonStorage; + private final GameManager gameManager; + private final List<MerchantMetadata> merchantMetadatas; + + public MerchantStorage(GameManager gameManager, FilebasedJsonStorage filebasedJsonStorage) { + this.gameManager = gameManager; + this.filebasedJsonStorage = filebasedJsonStorage; + this.merchantMetadatas = filebasedJsonStorage.readAllMetadatas(LOCAL_MERCHANT_DIRECTORY, true, new MerchantMetadata()); + } + + public List<Merchant> getAllMerchants() { + return merchantMetadatas.stream() + .map(this::create) + .collect(Collectors.toList()); + } + + public Merchant create(MerchantMetadata merchantMetadata) { + return new Merchant(gameManager, + merchantMetadata.getInternalName(), + merchantMetadata.getName(), + merchantMetadata.getColorName(), + merchantMetadata.getValidTriggers(), + merchantMetadata.getMerchantItemForSales(), + merchantMetadata.getWelcomeMessage(), + merchantMetadata.getRoomId()); + } + + + public List<MerchantMetadata> getAllMerchantMetadatas() { + return merchantMetadatas; + } + + public void saveMerchantMetadata(MerchantMetadata merchantMetadata) throws IOException { + filebasedJsonStorage.saveMetadata(merchantMetadata.getInternalName(), LOCAL_MERCHANT_DIRECTORY, merchantMetadata); + } + + public Optional<MerchantMetadata> get(String internalName) { + return merchantMetadatas.stream() + .filter(merchantMetadata -> merchantMetadata.getInternalName().equals(internalName)) + .findFirst(); + } + +} diff --git a/src/main/java/com/comandante/creeper/world/RoomManager.java b/src/main/java/com/comandante/creeper/world/RoomManager.java index bcfa0cbab8c585ffaf9c4c67f7b3d62ccef3c85a..6f300cec1d765c4726a1f5d7f7ad19acaa54552a 100644 --- a/src/main/java/com/comandante/creeper/world/RoomManager.java +++ b/src/main/java/com/comandante/creeper/world/RoomManager.java @@ -43,8 +43,8 @@ public class RoomManager { return rooms.entrySet().iterator(); } - public void addMerchant(Integer roomId, Merchant merchant) { - getRoom(roomId).addMerchant(merchant); + public void addMerchant(Merchant merchant) { + getRoom(merchant.getRoomId()).addMerchant(merchant); } public Room getRoom(Integer roomId) { diff --git a/src/test/com/comandante/creeper/items/ItemMetadataTest.java b/src/test/com/comandante/creeper/items/ItemMetadataTest.java index c1938ad3194ccdc603b2e561afe3bb31ad05a975..f86d59a32876da6e1c396c1da02007747e313b4d 100644 --- a/src/test/com/comandante/creeper/items/ItemMetadataTest.java +++ b/src/test/com/comandante/creeper/items/ItemMetadataTest.java @@ -1,16 +1,22 @@ package com.comandante.creeper.items; import com.comandante.creeper.merchant.MerchantItemForSale; -import com.comandante.creeper.stats.Stats; -import com.comandante.creeper.stats.StatsBuilder; +import com.comandante.creeper.merchant.MerchantMetadata; +import com.comandante.creeper.server.player_communication.Color; import com.comandante.creeper.storage.FilebasedJsonStorage; import com.comandante.creeper.storage.ItemStorage; +import com.comandante.creeper.storage.MerchantStorage; import com.google.common.collect.Lists; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import org.junit.Test; +import java.util.Arrays; +import java.util.HashSet; import java.util.List; +import java.util.Set; + +import static com.comandante.creeper.server.player_communication.Color.BOLD_ON; public class ItemMetadataTest { @@ -214,12 +220,12 @@ public class ItemMetadataTest { // // // RED CLAW PANTS - ItemMetadata itemMetadataPants = metadataFrom(ItemType.RED_CLAW_PANTS); - Stats statsPants = new StatsBuilder().setArmorRating(15).setStrength(7).createStats(); - final Equipment equipmentPants = new Equipment(EquipmentSlotType.LEGS, statsPants); - itemMetadataPants.setEquipment(equipmentPants); - itemMetadataPants.setInternalItemName("rad claw pants1"); - itemStorage.saveItemMetadata(itemMetadataPants); +// ItemMetadata itemMetadataPants = metadataFrom(ItemType.RED_CLAW_PANTS); +// Stats statsPants = new StatsBuilder().setArmorRating(15).setStrength(7).createStats(); +// final Equipment equipmentPants = new Equipment(EquipmentSlotType.LEGS, statsPants); +// itemMetadataPants.setEquipment(equipmentPants); +// itemMetadataPants.setInternalItemName("rad claw pants1"); +// itemStorage.saveItemMetadata(itemMetadataPants); } @@ -247,12 +253,43 @@ public class ItemMetadataTest { @Test public void generateMerchants() throws Exception { - List<MerchantItemForSale> itemsForSale = Lists.newArrayList(); - itemsForSale.add(new MerchantItemForSale("small health potion", 8)); - itemsForSale.add(new MerchantItemForSale("purple drank", 80)); - itemsForSale.add(new MerchantItemForSale("biggers skin satchel", 25000)); -// - // LloydBartender lloydBartender = new LloydBartender(gameManager, itemsForSale); + // LLOYD BARTENDER + { + final String welcomeMessage = " _ _ _______ ______ _ _______ \r\n" + + "( \\ ( \\ ( ___ )|\\ /|( __ \\ ( )( ____ \\\r\n" + + "| ( | ( | ( ) |( \\ / )| ( \\ )|/ | ( \\/\r\n" + + "| | | | | | | | \\ (_) / | | ) | | (_____ \r\n" + + "| | | | | | | | \\ / | | | | (_____ )\r\n" + + "| | | | | | | | ) ( | | ) | ) |\r\n" + + "| (____/\\| (____/\\| (___) | | | | (__/ ) /\\____) |\r\n" + + "(_______/(_______/(_______) \\_/ (______/ \\_______)\r\n" + + " "; + + + String name = "lloyd the bartender"; + String colorName = BOLD_ON + Color.CYAN + name + Color.RESET; + Set<String> validTriggers = new HashSet<String>(Arrays.asList(new String[] + {"lloyd", "bartender", "barkeep", "Lloyd", "LLOYD", name})); + + List<MerchantItemForSale> itemsForSale = Lists.newArrayList(); + itemsForSale.add(new MerchantItemForSale("small health potion", 8)); + itemsForSale.add(new MerchantItemForSale("purple drank", 80)); + itemsForSale.add(new MerchantItemForSale("biggers skin satchel", 25000)); + MerchantMetadata merchantMetadata = new MerchantMetadata(); + merchantMetadata.setName(name); + merchantMetadata.setInternalName(name); + merchantMetadata.setColorName(colorName); + merchantMetadata.setMerchantItemForSales(itemsForSale); + merchantMetadata.setRoomId(64); + merchantMetadata.setValidTriggers(validTriggers); + merchantMetadata.setWelcomeMessage(welcomeMessage); + + FilebasedJsonStorage filebasedJsonStorage = new FilebasedJsonStorage(new GsonBuilder().setPrettyPrinting().create()); + MerchantStorage merchantStorage = new MerchantStorage(null, filebasedJsonStorage); + merchantStorage.saveMerchantMetadata(merchantMetadata); + + } + } } diff --git a/world/merchants/lloyd_the_bartender.json b/world/merchants/lloyd_the_bartender.json new file mode 100644 index 0000000000000000000000000000000000000000..3ece7ce52efa0ccf572e51a8781a219b562bf373 --- /dev/null +++ b/world/merchants/lloyd_the_bartender.json @@ -0,0 +1,29 @@ +{ + "internalName": "lloyd the bartender", + "roomId": 64, + "name": "lloyd the bartender", + "colorName": "\u001b[1m\u001b[36mlloyd the bartender\u001b[m", + "validTriggers": [ + "lloyd the bartender", + "bartender", + "LLOYD", + "barkeep", + "Lloyd", + "lloyd" + ], + "merchantItemForSales": [ + { + "internalItemName": "small health potion", + "cost": 8 + }, + { + "internalItemName": "purple drank", + "cost": 80 + }, + { + "internalItemName": "biggers skin satchel", + "cost": 25000 + } + ], + "welcomeMessage": " _ _ _______ ______ _ _______ \r\n( \\ ( \\ ( ___ )|\\ /|( __ \\ ( )( ____ \\\r\n| ( | ( | ( ) |( \\ / )| ( \\ )|/ | ( \\/\r\n| | | | | | | | \\ (_) / | | ) | | (_____ \r\n| | | | | | | | \\ / | | | | (_____ )\r\n| | | | | | | | ) ( | | ) | ) |\r\n| (____/\\| (____/\\| (___) | | | | (__/ ) /\\____) |\r\n(_______/(_______/(_______) \\_/ (______/ \\_______)\r\n " +} \ No newline at end of file