Browse Source

Cleanup of friend and condemned initialization.

magicbox-1.5.2
MagicBot 1 year ago
parent
commit
4274e6a148
  1. 35
      src/engine/gameManager/BuildingManager.java
  2. 19
      src/engine/objects/Building.java

35
src/engine/gameManager/BuildingManager.java

@ -18,7 +18,6 @@ import engine.job.JobContainer;
import engine.job.JobScheduler; import engine.job.JobScheduler;
import engine.jobs.UpgradeBuildingJob; import engine.jobs.UpgradeBuildingJob;
import engine.math.Bounds; import engine.math.Bounds;
import engine.math.Vector2f;
import engine.math.Vector3fImmutable; import engine.math.Vector3fImmutable;
import engine.net.client.ClientConnection; import engine.net.client.ClientConnection;
import engine.net.client.msg.ErrorPopupMsg; import engine.net.client.msg.ErrorPopupMsg;
@ -27,9 +26,7 @@ import engine.net.client.msg.PlaceAssetMsg;
import engine.objects.*; import engine.objects.*;
import engine.server.MBServerStatics; import engine.server.MBServerStatics;
import org.pmw.tinylog.Logger; import org.pmw.tinylog.Logger;
import org.w3c.dom.css.Rect;
import java.awt.*;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneId; import java.time.ZoneId;
import java.util.ArrayList; import java.util.ArrayList;
@ -110,7 +107,6 @@ public enum BuildingManager {
if (building == null) if (building == null)
return false; return false;
if (building.getRank() == -1) if (building.getRank() == -1)
return false; return false;
@ -121,22 +117,21 @@ public enum BuildingManager {
if (building.getFriends() != null && building.getFriends().get(player.getObjectUUID()) != null) if (building.getFriends() != null && building.getFriends().get(player.getObjectUUID()) != null)
return true; return true;
//Admin's can access stuff //Admins can access stuff
if (player.isCSR()) if (player.isCSR())
return true; return true;
//Guild stuff //Guild stuff
if (building.getGuild().isGuildLeader(player.getObjectUUID()))
if (building.getGuild() != null && building.getGuild().isGuildLeader(player.getObjectUUID()))
return true; return true;
if (building.getFriends() != null && building.getFriends().get(player.getGuild().getObjectUUID()) != null if (building.getFriends().get(player.getGuild().getObjectUUID()) != null
&& building.getFriends().get(player.getGuild().getObjectUUID()).friendType == 8) && building.getFriends().get(player.getGuild().getObjectUUID()).friendType == 8)
return true; return true;
if (building.getFriends() != null && building.getFriends().get(player.getGuild().getObjectUUID()) != null if (building.getFriends().get(player.getGuild().getObjectUUID()) != null
&& building.getFriends().get(player.getGuild().getObjectUUID()).friendType == 9 && building.getFriends().get(player.getGuild().getObjectUUID()).friendType == 9
&& GuildStatusController.isInnerCouncil(player.getGuildStatus())) && GuildStatusController.isInnerCouncil(player.getGuildStatus()))
return true; return true;
@ -948,22 +943,20 @@ public enum BuildingManager {
building.isDeranking.compareAndSet(true, false); building.isDeranking.compareAndSet(true, false);
} }
public static Building getBuildingAtLocation(Vector3fImmutable loc){
for(AbstractWorldObject awo : WorldGrid.getObjectsInRangePartial(loc,64,MBServerStatics.MASK_BUILDING)){ public static Building getBuildingAtLocation(Vector3fImmutable loc) {
Building building = (Building)awo;
if(building == null) for (AbstractWorldObject awo : WorldGrid.getObjectsInRangePartial(loc, 64, MBServerStatics.MASK_BUILDING)) {
Building building = (Building) awo;
if (building == null)
continue; continue;
float minX = building.loc.x - building.getBounds().getHalfExtents().x;
float maxX = building.loc.x + building.getBounds().getHalfExtents().x; if (Bounds.collide(loc, building))
float minZ = building.loc.z - building.getBounds().getHalfExtents().y;
float maxZ = building.loc.z + building.getBounds().getHalfExtents().y;
boolean meetsX = loc.x > minX && loc.x < maxX;
boolean meetsY = loc.z > minZ && loc.z < maxZ;
if(meetsX && meetsY)
return building; return building;
} }
return null; return null;
} }
} }

19
src/engine/objects/Building.java

@ -95,7 +95,7 @@ public class Building extends AbstractWorldObject {
private ConcurrentHashMap<String, JobContainer> timers = null; private ConcurrentHashMap<String, JobContainer> timers = null;
private ConcurrentHashMap<String, Long> timestamps = null; private ConcurrentHashMap<String, Long> timestamps = null;
private ConcurrentHashMap<Integer, BuildingFriends> friends; private ConcurrentHashMap<Integer, BuildingFriends> friends;
private ConcurrentHashMap<Integer, Condemned> condemned = new ConcurrentHashMap<>(); private ConcurrentHashMap<Integer, Condemned> condemned;
public ProtectionState protectionState = ProtectionState.NONE; public ProtectionState protectionState = ProtectionState.NONE;
private ArrayList<Building> children = null; private ArrayList<Building> children = null;
@ -969,17 +969,28 @@ public class Building extends AbstractWorldObject {
// Reference friend and condemn lists from BuildingManager // Reference friend and condemn lists from BuildingManager
this.friends = BuildingManager._buildingFriends.get(this.getObjectUUID()); this.friends = BuildingManager._buildingFriends.get(this.getObjectUUID());
if (this.friends == null) {
this.friends = new ConcurrentHashMap<>();
BuildingManager._buildingFriends.put(this.getObjectUUID(), this.friends);
}
this.condemned = BuildingManager._buildingCondemned.get(this.getObjectUUID()); this.condemned = BuildingManager._buildingCondemned.get(this.getObjectUUID());
if (this.condemned == null) {
this.condemned = new ConcurrentHashMap<>();
BuildingManager._buildingCondemned.put(this.getObjectUUID(), this.condemned);
}
//LOad Owners in Cache so we do not have to continuely look in the db for owner. //LOad Owners in Cache so we do not have to continuely look in the db for owner.
if (this.ownerIsNPC) { if (this.ownerIsNPC) {
if (NPC.getNPC(this.ownerUUID) == null) if (NPC.getNPC(this.ownerUUID) == null)
Logger.info("Building UID " + this.getObjectUUID() + " Failed to Load NPC Owner with ID " + this.ownerUUID + " Location " + this.getLoc().toString()); Logger.info("Building UID " + this.getObjectUUID() + " Failed to Load NPC Owner with ID " + this.ownerUUID + " Location " + this.getLoc().toString());
} else if (this.ownerUUID != 0) { } else if (this.ownerUUID != 0) {
if (PlayerCharacter.getPlayerCharacter(this.ownerUUID) == null) { if (PlayerCharacter.getPlayerCharacter(this.ownerUUID) == null) {
Logger.info("Building UID " + this.getObjectUUID() + " Failed to Load Player Owner with ID " + this.ownerUUID + " Location " + this.getLoc().toString()); Logger.info("Building UID " + this.getObjectUUID() + " Failed to Load Player Owner with ID " + this.ownerUUID + " Location " + this.getLoc().toString());
} }
} }

Loading…
Cancel
Save