|
|
|
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
|
|
|
|
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
|
|
|
|
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
|
|
|
|
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
|
|
|
|
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
|
|
|
|
// 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<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);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|