forked from MagicBane/Server
bane handling system
This commit is contained in:
@@ -0,0 +1,45 @@
|
|||||||
|
package engine.gameManager;
|
||||||
|
|
||||||
|
import engine.Enum;
|
||||||
|
import engine.objects.Bane;
|
||||||
|
import org.joda.time.DateTime;
|
||||||
|
|
||||||
|
public class BaneManager {
|
||||||
|
|
||||||
|
public static void default_check(){
|
||||||
|
for(Bane bane : Bane.banes.values()){
|
||||||
|
if(!bane.daySet || !bane.timeSet || !bane.capSet){
|
||||||
|
DateTime placementDate = bane.getPlacementDate();
|
||||||
|
if(DateTime.now().isAfter(placementDate.plusHours(48))){
|
||||||
|
//set bane for default time
|
||||||
|
if(!bane.daySet){
|
||||||
|
bane.daySet = true;
|
||||||
|
DbManager.BaneQueries.SET_BANE_DAY_NEW(3,bane.getCityUUID());
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!bane.timeSet){
|
||||||
|
bane.timeSet = true;
|
||||||
|
DbManager.BaneQueries.SET_BANE_TIME_NEW(9,bane.getCityUUID());
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!bane.capSet){
|
||||||
|
bane.capSet = true;
|
||||||
|
bane.capSize = 20;
|
||||||
|
DbManager.BaneQueries.SET_BANE_CAP_NEW(20,bane.getCityUUID());
|
||||||
|
}
|
||||||
|
bane.setLiveDate(DbManager.BaneQueries.getLiveDate(bane.getCityUUID()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void pulse_banes(){
|
||||||
|
//used to pulse the anti-zerg mechanic of active banes
|
||||||
|
for(Bane bane : Bane.banes.values()){
|
||||||
|
if(bane.getSiegePhase().equals(Enum.SiegePhase.WAR)){
|
||||||
|
// bane is live, handle bane anti-zerg mechanic stuff
|
||||||
|
bane.applyZergBuffs();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -13,6 +13,7 @@ import engine.Enum;
|
|||||||
import engine.InterestManagement.WorldGrid;
|
import engine.InterestManagement.WorldGrid;
|
||||||
import engine.db.archive.DataWarehouse;
|
import engine.db.archive.DataWarehouse;
|
||||||
import engine.db.archive.MineRecord;
|
import engine.db.archive.MineRecord;
|
||||||
|
import engine.gameManager.BaneManager;
|
||||||
import engine.gameManager.BuildingManager;
|
import engine.gameManager.BuildingManager;
|
||||||
import engine.gameManager.ChatManager;
|
import engine.gameManager.ChatManager;
|
||||||
import engine.gameManager.StrongholdManager;
|
import engine.gameManager.StrongholdManager;
|
||||||
@@ -27,44 +28,21 @@ import java.util.ArrayList;
|
|||||||
|
|
||||||
public class BaneThread implements Runnable {
|
public class BaneThread implements Runnable {
|
||||||
|
|
||||||
private volatile Long lastRun;
|
|
||||||
public static final Long instancedelay = 1000L;
|
public static final Long instancedelay = 1000L;
|
||||||
public BaneThread() {
|
public BaneThread() {
|
||||||
Logger.info(" BaneThread thread has started!");
|
Logger.info(" BaneThread thread has started!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void processBanesWindow() {
|
|
||||||
|
|
||||||
try {
|
|
||||||
synchronized (Bane.banes) {
|
|
||||||
for (int baneId : Bane.banes.keySet()) {
|
|
||||||
Bane bane = Bane.banes.get(baneId);
|
|
||||||
if (bane != null && bane.getSiegePhase().equals(Enum.SiegePhase.WAR)) {
|
|
||||||
bane.applyZergBuffs();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
Logger.error("BANE ERROR",e);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
lastRun = System.currentTimeMillis();
|
|
||||||
while (true) {
|
while (true) {
|
||||||
if (System.currentTimeMillis() >= lastRun + instancedelay) { // Correct condition
|
//this.processBanesWindow();
|
||||||
this.processBanesWindow();
|
BaneManager.pulse_banes();
|
||||||
lastRun = System.currentTimeMillis(); // Update lastRun after processing
|
try {
|
||||||
}else {
|
Thread.sleep(100); // Pause for 100ms to reduce CPU usage
|
||||||
try {
|
} catch (InterruptedException e) {
|
||||||
Thread.sleep(100); // Pause for 100ms to reduce CPU usage
|
Logger.error("Thread interrupted", e);
|
||||||
} catch (InterruptedException e) {
|
Thread.currentThread().interrupt();
|
||||||
Logger.error("Thread interrupted", e);
|
|
||||||
Thread.currentThread().interrupt();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -92,11 +92,11 @@ public class HourlyJobThread implements Runnable {
|
|||||||
Logger.info(MessageDispatcher.getNetstatString());
|
Logger.info(MessageDispatcher.getNetstatString());
|
||||||
Logger.info(PurgeOprhans.recordsDeleted.toString() + "orphaned items deleted");
|
Logger.info(PurgeOprhans.recordsDeleted.toString() + "orphaned items deleted");
|
||||||
|
|
||||||
for (Bane bane : Bane.banes.values()){
|
//for (Bane bane : Bane.banes.values()){
|
||||||
if(bane.getSiegePhase().equals(Enum.SiegePhase.CHALLENGE)){
|
// if(bane.getSiegePhase().equals(Enum.SiegePhase.CHALLENGE)){
|
||||||
bane.setDefaultTime();
|
// bane.setDefaultTime();
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
|
||||||
try{
|
try{
|
||||||
Logger.info("Trashing Multibox Cheaters");
|
Logger.info("Trashing Multibox Cheaters");
|
||||||
@@ -119,5 +119,7 @@ public class HourlyJobThread implements Runnable {
|
|||||||
}catch(Exception e){
|
}catch(Exception e){
|
||||||
Logger.error("Failed To Run Ban Multibox Abusers");
|
Logger.error("Failed To Run Ban Multibox Abusers");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BaneManager.default_check();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user