You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
3.4 KiB
127 lines
3.4 KiB
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ . |
|
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌· |
|
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀ |
|
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌ |
|
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀ |
|
// 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); |
|
} |
|
|
|
} |
|
} |
|
|
|
}
|
|
|