|  |  |  | // • ▌ ▄ ·.  ▄▄▄·  ▄▄ • ▪   ▄▄· ▄▄▄▄·  ▄▄▄·  ▐▄▄▄  ▄▄▄ .
 | 
					
						
							|  |  |  | // ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
 | 
					
						
							|  |  |  | // ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
 | 
					
						
							|  |  |  | // ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
 | 
					
						
							|  |  |  | // ▀▀  █▪▀▀▀ ▀  ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀  ▀  ▀ ▀▀  █▪ ▀▀▀
 | 
					
						
							|  |  |  | //      Magicbane Emulator Project © 2013 - 2022
 | 
					
						
							|  |  |  | //                www.magicbane.com
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | package engine.objects;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import engine.gameManager.BuildingManager;
 | 
					
						
							|  |  |  | import engine.gameManager.DbManager;
 | 
					
						
							|  |  |  | import engine.math.Quaternion;
 | 
					
						
							|  |  |  | import engine.math.Vector3fImmutable;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import java.sql.ResultSet;
 | 
					
						
							|  |  |  | import java.sql.SQLException;
 | 
					
						
							|  |  |  | import java.util.ArrayList;
 | 
					
						
							|  |  |  | import java.util.HashMap;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public class BuildingLocation extends AbstractGameObject {
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     private final int buildingUUID;
 | 
					
						
							|  |  |  |     private final int type;
 | 
					
						
							|  |  |  |     private final int slot;
 | 
					
						
							|  |  |  |     private final int unknown;
 | 
					
						
							|  |  |  |     private final Vector3fImmutable location;
 | 
					
						
							|  |  |  |     private final Quaternion rotation;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public BuildingLocation() {
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         this.buildingUUID = 0;
 | 
					
						
							|  |  |  |         this.type = 0;
 | 
					
						
							|  |  |  |         this.slot = 0;
 | 
					
						
							|  |  |  |         this.unknown = 0;
 | 
					
						
							|  |  |  |         this.location = Vector3fImmutable.ZERO;
 | 
					
						
							|  |  |  |         this.rotation = new Quaternion();
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /**
 | 
					
						
							|  |  |  |      * ResultSet Constructor
 | 
					
						
							|  |  |  |      */
 | 
					
						
							|  |  |  |     public BuildingLocation(ResultSet rs) throws SQLException {
 | 
					
						
							|  |  |  |         super(rs);
 | 
					
						
							|  |  |  |         this.buildingUUID = rs.getInt("BuildingID");
 | 
					
						
							|  |  |  |         this.type = rs.getInt("type");
 | 
					
						
							|  |  |  |         this.slot = rs.getInt("slot");
 | 
					
						
							|  |  |  |         this.unknown = rs.getInt("unknown");
 | 
					
						
							|  |  |  |         this.location = new Vector3fImmutable(rs.getFloat("locX"), rs.getFloat("locY"), rs.getFloat("locZ"));
 | 
					
						
							|  |  |  |         this.rotation = new Quaternion(rs.getFloat("rotX"), rs.getFloat("rotY"), rs.getFloat("rotZ"), rs.getFloat("w"));
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /*
 | 
					
						
							|  |  |  |      * Getters
 | 
					
						
							|  |  |  |      */
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public static void loadBuildingLocations() {
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         ArrayList<BuildingLocation> buildingLocations = DbManager.BuildingLocationQueries.LOAD_BUILDING_LOCATIONS();
 | 
					
						
							|  |  |  |         HashMap<Integer, ArrayList<BuildingLocation>> locationCollection = new HashMap<>();
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // Only slot locations and stuck locations are currently loaded.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         for (BuildingLocation buildingLocation : buildingLocations) {
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             switch (buildingLocation.type) {
 | 
					
						
							|  |  |  |                 case 6:
 | 
					
						
							|  |  |  |                     locationCollection = BuildingManager._slotLocations;
 | 
					
						
							|  |  |  |                     break;
 | 
					
						
							|  |  |  |                 case 8:
 | 
					
						
							|  |  |  |                     locationCollection = BuildingManager._stuckLocations;
 | 
					
						
							|  |  |  |                     break;
 | 
					
						
							|  |  |  |             }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Add location to collection in BuildingManager
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             if (locationCollection.containsKey(buildingLocation.buildingUUID))
 | 
					
						
							|  |  |  |                 locationCollection.get(buildingLocation.buildingUUID).add(buildingLocation);
 | 
					
						
							|  |  |  |             else {
 | 
					
						
							|  |  |  |                 locationCollection.put(buildingLocation.buildingUUID, new ArrayList<>());
 | 
					
						
							|  |  |  |                 locationCollection.get(buildingLocation.buildingUUID).add(buildingLocation);
 | 
					
						
							|  |  |  |             }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         }
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public int getBuildingUUID() {
 | 
					
						
							|  |  |  |         return this.buildingUUID;
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public int getType() {
 | 
					
						
							|  |  |  |         return this.type;
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public int getSlot() {
 | 
					
						
							|  |  |  |         return this.slot;
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public int getUnknown() {
 | 
					
						
							|  |  |  |         return this.unknown;
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public float getLocX() {
 | 
					
						
							|  |  |  |         return this.location.x;
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public float getLocY() {
 | 
					
						
							|  |  |  |         return this.location.y;
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public Vector3fImmutable getLocation() {
 | 
					
						
							|  |  |  |         return this.location;
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public Quaternion getRotation() {
 | 
					
						
							|  |  |  |         return this.rotation;
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @Override
 | 
					
						
							|  |  |  |     public void updateDatabase() {
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | }
 |