/*
* Copyright (C) 2016 eccentric_nz
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package me.eccentric_nz.TARDIS;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
import me.eccentric_nz.TARDIS.JSON.JSONObject;
import me.eccentric_nz.TARDIS.arch.TARDISWatchData;
import me.eccentric_nz.TARDIS.builders.BuildData;
import me.eccentric_nz.TARDIS.desktop.TARDISUpgradeData;
import me.eccentric_nz.TARDIS.flight.TARDISRegulatorRunnable;
import me.eccentric_nz.TARDIS.info.TARDISInfoMenu;
import me.eccentric_nz.TARDIS.move.TARDISMoveSession;
import me.eccentric_nz.TARDIS.move.TARDISTeleportLocation;
import me.eccentric_nz.TARDIS.rooms.TARDISSeedData;
import me.eccentric_nz.TARDIS.siegemode.TARDISSiegeArea;
import me.eccentric_nz.TARDIS.utility.TARDISAntiBuild;
import org.bukkit.Location;
import org.bukkit.block.Block;
import org.bukkit.block.Sign;
import org.bukkit.entity.Player;
/**
* A central repository used to store various data values required to track what
* Time lords and TARDIS are doing in-game, and provide easy access to the data
* in other classes. For example the spectacleWearers List tracks which Time
* Lords are currently wearing 3d_glasses.
*
* @author eccentric_nz
*/
public class TARDISTrackerInstanceKeeper {
private String immortalityGate = "";
private final HashMap<Integer, Boolean> malfunction = new HashMap<Integer, Boolean>();
private final HashMap<Integer, Integer> damage = new HashMap<Integer, Integer>();
private final HashMap<Integer, Integer> hasDestination = new HashMap<Integer, Integer>();
private final HashMap<Integer, Integer> destinationVortex = new HashMap<Integer, Integer>();
private final HashMap<Integer, String> renderer = new HashMap<Integer, String>();
private final HashMap<Integer, TARDISAntiBuild> antiBuild = new HashMap<Integer, TARDISAntiBuild>();
private final HashMap<Integer, UUID> rescue = new HashMap<Integer, UUID>();
private final HashMap<Location, TARDISTeleportLocation> portals = new HashMap<Location, TARDISTeleportLocation>();
private final HashMap<String, Sign> sign = new HashMap<String, Sign>();
private final HashMap<String, List<TARDISSiegeArea>> siegeBreedingAreas = new HashMap<String, List<TARDISSiegeArea>>();
private final HashMap<String, List<TARDISSiegeArea>> siegeGrowthAreas = new HashMap<String, List<TARDISSiegeArea>>();
private final HashMap<UUID, Block> exterminate = new HashMap<UUID, Block>();
private final HashMap<UUID, Block> invisibleDoors = new HashMap<UUID, Block>();
private final HashMap<UUID, Block> lazarus = new HashMap<UUID, Block>();
private final HashMap<UUID, Double[]> gravity = new HashMap<UUID, Double[]>();
private final HashMap<UUID, Integer> binder = new HashMap<UUID, Integer>();
private final HashMap<UUID, Integer> count = new HashMap<UUID, Integer>();
private final HashMap<UUID, Integer> ejecting = new HashMap<UUID, Integer>();
private final HashMap<UUID, Integer> junkPlayers = new HashMap<UUID, Integer>();
private final HashMap<UUID, Integer> siegeCarrying = new HashMap<UUID, Integer>();
private final HashMap<UUID, JSONObject> pastes = new HashMap<UUID, JSONObject>();
private final HashMap<UUID, List<Integer>> renderedNPCs = new HashMap<UUID, List<Integer>>();
private final HashMap<UUID, List<Location>> repeaters = new HashMap<UUID, List<Location>>();
private final HashMap<UUID, Location> dispersed = new HashMap<UUID, Location>();
private final HashMap<UUID, Location> sonicGenerators = new HashMap<UUID, Location>();
private final HashMap<UUID, Location> startLocation = new HashMap<UUID, Location>();
private final HashMap<UUID, Location> endLocation = new HashMap<UUID, Location>();
private final HashMap<UUID, Long> setTime = new HashMap<UUID, Long>();
private final HashMap<UUID, Long> hideCooldown = new HashMap<UUID, Long>();
private final HashMap<UUID, Long> rebuildCooldown = new HashMap<UUID, Long>();
private final HashMap<UUID, String> area = new HashMap<UUID, String>();
private final HashMap<UUID, String> block = new HashMap<UUID, String>();
private final HashMap<UUID, String> end = new HashMap<UUID, String>();
private final HashMap<UUID, String> flight = new HashMap<UUID, String>();
private final HashMap<UUID, String> jettison = new HashMap<UUID, String>();
private final HashMap<UUID, TARDISWatchData> johnSmith = new HashMap<UUID, TARDISWatchData>();
private final HashMap<UUID, String> perm = new HashMap<UUID, String>();
private final HashMap<UUID, String> players = new HashMap<UUID, String>();
private final HashMap<UUID, String> preset = new HashMap<UUID, String>();
private final HashMap<UUID, String> secondary = new HashMap<UUID, String>();
private final HashMap<UUID, String> telepathicPlacements = new HashMap<UUID, String>();
private final HashMap<UUID, TARDISInfoMenu> infoMenu = new HashMap<UUID, TARDISInfoMenu>();
private final HashMap<UUID, BuildData> flightData = new HashMap<UUID, BuildData>();
private final HashMap<UUID, TARDISMoveSession> moveSessions = new HashMap<UUID, TARDISMoveSession>();
private final HashMap<UUID, TARDISRegulatorRunnable> regulating = new HashMap<UUID, TARDISRegulatorRunnable>();
private final HashMap<UUID, TARDISSeedData> roomSeed = new HashMap<UUID, TARDISSeedData>();
private final HashMap<UUID, TARDISUpgradeData> upgrades = new HashMap<UUID, TARDISUpgradeData>();
private final HashMap<UUID, UUID> chat = new HashMap<UUID, UUID>();
private final HashMap<UUID, UUID> telepaths = new HashMap<UUID, UUID>();
private final HashMap<UUID, UUID> telepathicRescue = new HashMap<UUID, UUID>();
private final List<String> artronFurnaces = new ArrayList<String>();
private final List<Integer> dematerialising = new ArrayList<Integer>();
private final List<Integer> dispersedTARDII = new ArrayList<Integer>();
private final List<Integer> hasNotClickedHandbrake = new ArrayList<Integer>();
private final List<Integer> hasClickedHandbrake = new ArrayList<Integer>();
private final List<Integer> hasRandomised = new ArrayList<Integer>();
private final List<Integer> inSiegeMode = new ArrayList<Integer>();
private final List<Integer> inVortex = new ArrayList<Integer>();
private final List<Integer> isSiegeCube = new ArrayList<Integer>();
private final List<Integer> materialising = new ArrayList<Integer>();
private final List<Integer> minecart = new ArrayList<Integer>();
private final List<Integer> submarine = new ArrayList<Integer>();
private final List<Integer> keyboard = new ArrayList<Integer>();
private final List<String> reset = new ArrayList<String>();
private final List<UUID> arrangers = new ArrayList<UUID>();
private final List<UUID> beaconColouring = new ArrayList<UUID>();
private final List<UUID> eggs = new ArrayList<UUID>();
private final List<UUID> farming = new ArrayList<UUID>();
private final List<UUID> geneticManipulation = new ArrayList<UUID>();
private final List<UUID> geneticallyModified = new ArrayList<UUID>();
private final List<UUID> hasTravelled = new ArrayList<UUID>();
private final List<UUID> howTo = new ArrayList<UUID>();
private final List<UUID> mover = new ArrayList<UUID>();
private final List<UUID> recipeView = new ArrayList<UUID>();
private final List<UUID> sonicDoors = new ArrayList<UUID>();
private final List<UUID> spectacleWearers = new ArrayList<UUID>();
private final List<UUID> temporallyLocated = new ArrayList<UUID>();
private final List<UUID> renderRoomOccupants = new ArrayList<UUID>();
private final List<UUID> zeroRoomOccupants = new ArrayList<UUID>();
public HashMap<Integer, Boolean> getMalfunction() {
return malfunction;
}
public HashMap<Integer, Integer> getDamage() {
return damage;
}
public HashMap<Integer, Integer> getHasDestination() {
return hasDestination;
}
public HashMap<Integer, Integer> getDestinationVortex() {
return destinationVortex;
}
public HashMap<Integer, String> getRenderer() {
return renderer;
}
public HashMap<Integer, UUID> getRescue() {
return rescue;
}
public HashMap<Location, TARDISTeleportLocation> getPortals() {
return portals;
}
public HashMap<Integer, TARDISAntiBuild> getAntiBuild() {
return antiBuild;
}
public HashMap<UUID, Block> getExterminate() {
return exterminate;
}
public HashMap<UUID, Block> getInvisibleDoors() {
return invisibleDoors;
}
public HashMap<UUID, Block> getLazarus() {
return lazarus;
}
public HashMap<UUID, Double[]> getGravity() {
return gravity;
}
public HashMap<UUID, Integer> getBinder() {
return binder;
}
public HashMap<UUID, Integer> getJunkPlayers() {
return junkPlayers;
}
public HashMap<UUID, Long> getSetTime() {
return setTime;
}
public HashMap<UUID, Long> getHideCooldown() {
return hideCooldown;
}
public HashMap<UUID, Long> getRebuildCooldown() {
return rebuildCooldown;
}
public HashMap<String, Sign> getSign() {
return sign;
}
public HashMap<String, List<TARDISSiegeArea>> getSiegeBreedingAreas() {
return siegeBreedingAreas;
}
public HashMap<String, List<TARDISSiegeArea>> getSiegeGrowthAreas() {
return siegeGrowthAreas;
}
public HashMap<UUID, String> getBlock() {
return block;
}
public HashMap<UUID, UUID> getChat() {
return chat;
}
public HashMap<UUID, String> getFlight() {
return flight;
}
public HashMap<UUID, Integer> getCount() {
return count;
}
public HashMap<UUID, TARDISRegulatorRunnable> getRegulating() {
return regulating;
}
public HashMap<UUID, BuildData> getFlightData() {
return flightData;
}
public HashMap<UUID, List<Location>> getRepeaters() {
return repeaters;
}
public HashMap<UUID, List<Integer>> getRenderedNPCs() {
return renderedNPCs;
}
public HashMap<UUID, String> getEnd() {
return end;
}
public HashMap<UUID, String> getJettison() {
return jettison;
}
public HashMap<UUID, String> getArea() {
return area;
}
public HashMap<UUID, String> getPerm() {
return perm;
}
public HashMap<UUID, String> getPlayers() {
return players;
}
public HashMap<UUID, String> getPreset() {
return preset;
}
public HashMap<UUID, String> getSecondary() {
return secondary;
}
public HashMap<UUID, String> getTelepathicPlacements() {
return telepathicPlacements;
}
public HashMap<UUID, TARDISInfoMenu> getInfoMenu() {
return infoMenu;
}
public TARDISMoveSession getTARDISMoveSession(Player p) {
if (this.moveSessions.containsKey(p.getUniqueId())) {
return this.moveSessions.get(p.getUniqueId());
}
TARDISMoveSession session = new TARDISMoveSession(p);
this.moveSessions.put(p.getUniqueId(), session);
return session;
}
public HashMap<UUID, TARDISSeedData> getRoomSeed() {
return roomSeed;
}
public HashMap<UUID, TARDISUpgradeData> getUpgrades() {
return upgrades;
}
public List<String> getArtronFurnaces() {
return artronFurnaces;
}
public List<Integer> getDematerialising() {
return dematerialising;
}
public HashMap<UUID, Location> getDispersed() {
return dispersed;
}
public List<Integer> getHasNotClickedHandbrake() {
return hasNotClickedHandbrake;
}
public List<Integer> getHasClickedHandbrake() {
return hasClickedHandbrake;
}
public List<Integer> getHasRandomised() {
return hasRandomised;
}
public List<Integer> getInSiegeMode() {
return inSiegeMode;
}
public List<Integer> getIsSiegeCube() {
return isSiegeCube;
}
public List<Integer> getInVortex() {
return inVortex;
}
public List<Integer> getMaterialising() {
return materialising;
}
public List<Integer> getMinecart() {
return minecart;
}
public List<Integer> getSubmarine() {
return submarine;
}
public List<Integer> getDispersedTARDII() {
return dispersedTARDII;
}
public List<Integer> getKeyboard() {
return keyboard;
}
public List<UUID> getArrangers() {
return arrangers;
}
public List<UUID> getBeaconColouring() {
return beaconColouring;
}
public List<UUID> getEggs() {
return eggs;
}
public HashMap<UUID, Integer> getEjecting() {
return ejecting;
}
public List<UUID> getFarming() {
return farming;
}
public List<UUID> getGeneticManipulation() {
return geneticManipulation;
}
public List<UUID> getGeneticallyModified() {
return geneticallyModified;
}
public List<UUID> getHasTravelled() {
return hasTravelled;
}
public List<UUID> getHowTo() {
return howTo;
}
public HashMap<UUID, TARDISWatchData> getJohnSmith() {
return johnSmith;
}
public List<UUID> getMover() {
return mover;
}
public List<UUID> getRecipeView() {
return recipeView;
}
public List<UUID> getSonicDoors() {
return sonicDoors;
}
public List<UUID> getSpectacleWearers() {
return spectacleWearers;
}
public HashMap<UUID, UUID> getTelepaths() {
return telepaths;
}
public HashMap<UUID, UUID> getTelepathicRescue() {
return telepathicRescue;
}
public List<String> getReset() {
return reset;
}
public List<UUID> getTemporallyLocated() {
return temporallyLocated;
}
public List<UUID> getRenderRoomOccupants() {
return renderRoomOccupants;
}
public List<UUID> getZeroRoomOccupants() {
return zeroRoomOccupants;
}
public String getImmortalityGate() {
return immortalityGate;
}
public void setImmortalityGate(String immortalityGate) {
this.immortalityGate = immortalityGate;
}
public HashMap<UUID, JSONObject> getPastes() {
return pastes;
}
public HashMap<UUID, Location> getStartLocation() {
return startLocation;
}
public HashMap<UUID, Location> getSonicGenerators() {
return sonicGenerators;
}
public HashMap<UUID, Location> getEndLocation() {
return endLocation;
}
public HashMap<UUID, Integer> getSiegeCarrying() {
return siegeCarrying;
}
}