From 0a75cb557dbe3a54a1a64cbebd5abacb5c1b8dfb Mon Sep 17 00:00:00 2001 From: simon Date: Sun, 4 Mar 2018 15:51:30 -0500 Subject: [PATCH] Added objective vault world & its exit portal --- .../simon987/npcplugin/VaultDimension.java | 30 ++++++++++++++----- .../npcplugin/VaultWorldGenerator.java | 2 -- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/Plugin NPC/src/main/java/net/simon987/npcplugin/VaultDimension.java b/Plugin NPC/src/main/java/net/simon987/npcplugin/VaultDimension.java index 36feb04..681d7f3 100644 --- a/Plugin NPC/src/main/java/net/simon987/npcplugin/VaultDimension.java +++ b/Plugin NPC/src/main/java/net/simon987/npcplugin/VaultDimension.java @@ -118,29 +118,45 @@ public class VaultDimension { vWorld.incUpdatable(); } - if (key == layerCount - 1) { + if (key == layerCount) { lastLayerWorlds.add(vWorld); } if (key == 0) { this.homeWorld = vWorld; - //TODO: generate exit door here and save the coords } } } + Point exitCoords = vaultDoor.getAdjacentTile(); + Location exitLocation = new Location(vaultDoor.getWorld().getX(), vaultDoor.getWorld().getY(), vaultDoor + .getWorld().getDimension(), exitCoords.x, exitCoords.y); + + //4. Choose a random world from the last layer and create the vault box there (objective) World objectiveWorld = lastLayerWorlds.get(random.nextInt(lastLayerWorlds.size())); + Point exitPortalPt = objectiveWorld.getRandomTileWithAdjacent(8, TileMap.VAULT_FLOOR); + + if (exitPortalPt != null) { + + Portal exitPortal = new Portal(); + exitPortal.setDst(exitLocation); + exitPortal.setX(exitPortalPt.x); + exitPortal.setY(exitPortalPt.y); + exitPortal.setWorld(objectiveWorld); + objectiveWorld.addObject(exitPortal); + + LogManager.LOGGER.severe("Objective: " + objectiveWorld.getId()); + + } else { + LogManager.LOGGER.severe("FIXME: Couldn't create exit portal for world " + homeWorld.getId()); + } //5. Create an exit portal in the home World Point homePortalPt = homeWorld.getRandomTileWithAdjacent(8, TileMap.VAULT_FLOOR); if (homePortalPt != null) { - Point exitCoords = vaultDoor.getAdjacentTile(); - Location exitLocation = new Location(vaultDoor.getWorld().getX(), vaultDoor.getWorld().getY(), vaultDoor - .getWorld().getDimension(), exitCoords.x, exitCoords.y); - Portal homePortal = new Portal(); homePortal.setDst(exitLocation); homePortal.setX(homePortalPt.x); @@ -156,7 +172,7 @@ public class VaultDimension { LogManager.LOGGER.severe("FIXME: Couldn't create home exit portal for world " + homeWorld.getId()); } - LogManager.LOGGER.severe("DONE"); + } private boolean worldExists(Point coords, HashMap> worldLayers) { diff --git a/Plugin NPC/src/main/java/net/simon987/npcplugin/VaultWorldGenerator.java b/Plugin NPC/src/main/java/net/simon987/npcplugin/VaultWorldGenerator.java index cd33c92..d44113f 100644 --- a/Plugin NPC/src/main/java/net/simon987/npcplugin/VaultWorldGenerator.java +++ b/Plugin NPC/src/main/java/net/simon987/npcplugin/VaultWorldGenerator.java @@ -159,8 +159,6 @@ public class VaultWorldGenerator { } } - LogManager.LOGGER.severe(world.toString()); - //Connect rooms together, from bottom to top roomCenters.sort(new RoomCenterComparator()); boolean xFirst = true; //Start the tunnel horizontally