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;
|
package engine.ai;
|
||||||
|
|
||||||
|
import engine.gameManager.SessionManager;
|
||||||
import engine.gameManager.ZoneManager;
|
import engine.gameManager.ZoneManager;
|
||||||
import engine.objects.Mob;
|
import engine.objects.Mob;
|
||||||
import engine.objects.Zone;
|
import engine.objects.Zone;
|
||||||
@@ -67,7 +68,10 @@ public class MobileFSMManager {
|
|||||||
|
|
||||||
private void execution() {
|
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;
|
long mobPulse = System.currentTimeMillis() + MBServerStatics.AI_PULSE_MOB_THRESHOLD;
|
||||||
|
|
||||||
@@ -79,7 +83,11 @@ public class MobileFSMManager {
|
|||||||
if (System.currentTimeMillis() > mobPulse) {
|
if (System.currentTimeMillis() > mobPulse) {
|
||||||
|
|
||||||
for (Zone zone : ZoneManager.getAllZones()) {
|
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) {
|
for (Mob mob : zone.zoneMobSet) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import engine.Enum;
|
|||||||
import engine.InterestManagement.HeightMap;
|
import engine.InterestManagement.HeightMap;
|
||||||
import engine.db.archive.DataWarehouse;
|
import engine.db.archive.DataWarehouse;
|
||||||
import engine.gameManager.DbManager;
|
import engine.gameManager.DbManager;
|
||||||
|
import engine.gameManager.SessionManager;
|
||||||
import engine.gameManager.ZoneManager;
|
import engine.gameManager.ZoneManager;
|
||||||
import engine.math.Bounds;
|
import engine.math.Bounds;
|
||||||
import engine.math.Vector2f;
|
import engine.math.Vector2f;
|
||||||
@@ -25,6 +26,7 @@ import java.sql.ResultSet;
|
|||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
@@ -509,5 +511,15 @@ public class Zone extends AbstractGameObject {
|
|||||||
public float getWorldAltitude() {
|
public float getWorldAltitude() {
|
||||||
return worldAltitude;
|
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