Browse Source

Remove hireling method defined in manager.

feature-workorder
MagicBot 1 year ago
parent
commit
f4c9e6d7b8
  1. 46
      src/engine/gameManager/BuildingManager.java

46
src/engine/gameManager/BuildingManager.java

@ -308,6 +308,52 @@ public enum BuildingManager { @@ -308,6 +308,52 @@ public enum BuildingManager {
}
public static void removeHireling(Building building, AbstractCharacter hireling) {
Mob guardCaptain = null;
if (hireling.getObjectType().equals(GameObjectType.Mob)) {
guardCaptain = (Mob) hireling;
// Clear minions from database if a guard captain
if (guardCaptain.agentType.equals(Enum.AIAgentType.GUARDCAPTAIN))
DbManager.MobQueries.REMOVE_ALL_MINIONS(hireling.getObjectUUID());
}
// Clear minions from world
for (Integer minionUUID : hireling.minions) {
Mob minionMob = Mob.getMob(minionUUID);
DbManager.removeFromCache(minionMob);
WorldGrid.RemoveWorldObject(minionMob);
WorldGrid.unloadObject(minionMob);
if (minionMob.getParentZone() != null)
minionMob.getParentZone().zoneMobSet.remove(minionMob);
}
// Remove hireling from building
building.getHirelings().remove(hireling);
// Delete hireling from database
if (hireling.getObjectType().equals(GameObjectType.Mob))
DbManager.MobQueries.DELETE_MOB((Mob) hireling);
else
DbManager.NPCQueries.DELETE_NPC((NPC) hireling);
// Unload hireling from world
DbManager.removeFromCache(hireling);
WorldGrid.RemoveWorldObject(hireling);
WorldGrid.removeObject(hireling);
}
public static void cleanupHirelings(Building building) {
// Early exit: Cannot have hirelings in a building

Loading…
Cancel
Save