HZ related stuff

This commit is contained in:
2025-03-16 15:19:32 -05:00
parent 128f677d0e
commit 8c9696a3f9
2 changed files with 33 additions and 1 deletions
+28 -1
View File
@@ -7,10 +7,12 @@ import engine.net.DispatchMessage;
import engine.net.client.msg.HotzoneChangeMsg; import engine.net.client.msg.HotzoneChangeMsg;
import engine.net.client.msg.chat.ChatSystemMsg; import engine.net.client.msg.chat.ChatSystemMsg;
import engine.objects.*; import engine.objects.*;
import engine.server.MBServerStatics;
import org.pmw.tinylog.Logger; import org.pmw.tinylog.Logger;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet;
import java.util.Random; import java.util.Random;
import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.ThreadLocalRandom;
@@ -169,8 +171,33 @@ public class HotzoneManager {
} }
public static void pulse(){ public static void pulse(){
if(HotzoneManager.playersPresent == null){ if(HotzoneManager.playersPresent == null)
HotzoneManager.playersPresent = new HashMap<>(); HotzoneManager.playersPresent = new HashMap<>();
if(ZoneManager.hotZone == null)
return;
HashSet<AbstractWorldObject> inRange = WorldGrid.getObjectsInRangePartial(ZoneManager.hotZone.getLoc(),ZoneManager.hotZone.getBounds().getHalfExtents().x * 2, MBServerStatics.MASK_PLAYER);
for(AbstractWorldObject awo : inRange){
PlayerCharacter pc = (PlayerCharacter)awo;
Guild nation = pc.guild.getNation();
if(HotzoneManager.playersPresent.containsKey(nation)){
//nation already here, add to list
if(HotzoneManager.playersPresent.get(nation).contains(pc)){
if(HotzoneManager.playersPresent.get(nation).size() >= 5){
//more than 5, boot player out
pc.setLoc(pc.bindLoc);
pc.teleport(pc.bindLoc);
}else {
//less than 5, allow player in
HotzoneManager.playersPresent.get(nation).add(pc);
}
}
}else{
ArrayList<PlayerCharacter> newList = new ArrayList<>();
newList.add(pc);
HotzoneManager.playersPresent.put(nation,newList);
}
} }
} }
} }
@@ -143,6 +143,11 @@ public enum SimulationManager {
} }
}catch(Exception e){ }catch(Exception e){
}
try{
HotzoneManager.pulse();
}catch(Exception e){
} }
SimulationManager.executionTime = Duration.between(startTime, Instant.now()); SimulationManager.executionTime = Duration.between(startTime, Instant.now());