method to check if zone has players inside it
mob ai check if zone has no players mobs need not perform actions
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
|
||||
package engine.ai;
|
||||
|
||||
import engine.gameManager.SessionManager;
|
||||
import engine.gameManager.ZoneManager;
|
||||
import engine.objects.Mob;
|
||||
import engine.objects.Zone;
|
||||
@@ -67,7 +68,10 @@ public class MobileFSMManager {
|
||||
|
||||
private void execution() {
|
||||
|
||||
//Load zone threshold once.
|
||||
//no players online means no mob action required
|
||||
if(SessionManager.getActivePlayerCharacterCount() <= 0){
|
||||
return;
|
||||
}
|
||||
|
||||
long mobPulse = System.currentTimeMillis() + MBServerStatics.AI_PULSE_MOB_THRESHOLD;
|
||||
|
||||
@@ -79,7 +83,11 @@ public class MobileFSMManager {
|
||||
if (System.currentTimeMillis() > mobPulse) {
|
||||
|
||||
for (Zone zone : ZoneManager.getAllZones()) {
|
||||
|
||||
//check if any players are in the zone
|
||||
if(zone.hasPlayers() == false){
|
||||
//if zone has no players no need for mobs to do anything
|
||||
return;
|
||||
}
|
||||
for (Mob mob : zone.zoneMobSet) {
|
||||
|
||||
try {
|
||||
|
||||
@@ -13,6 +13,7 @@ import engine.Enum;
|
||||
import engine.InterestManagement.HeightMap;
|
||||
import engine.db.archive.DataWarehouse;
|
||||
import engine.gameManager.DbManager;
|
||||
import engine.gameManager.SessionManager;
|
||||
import engine.gameManager.ZoneManager;
|
||||
import engine.math.Bounds;
|
||||
import engine.math.Vector2f;
|
||||
@@ -25,6 +26,7 @@ import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
@@ -509,5 +511,15 @@ public class Zone extends AbstractGameObject {
|
||||
public float getWorldAltitude() {
|
||||
return worldAltitude;
|
||||
}
|
||||
public boolean hasPlayers(){
|
||||
for(PlayerCharacter pc : SessionManager.getAllActivePlayers()){
|
||||
for(Zone zone : ZoneManager.getAllZonesIn(pc.getLoc())) {
|
||||
if(zone.equals(this)){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user