// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ . // ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌· // ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀ // ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌ // ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀ // 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 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() { } public static void loadBuildingLocations() { ArrayList buildingLocations = DbManager.BuildingLocationQueries.LOAD_BUILDING_LOCATIONS(); HashMap> 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); } } } }