From 0e6b68139f49e5db8361f6765458baebe51f863c Mon Sep 17 00:00:00 2001 From: FatBoy-DOTC Date: Tue, 11 Jun 2024 21:02:13 -0500 Subject: [PATCH] refactor mine processing to HalfHourlyJob --- src/engine/devcmd/cmds/MineActiveCmd.java | 5 +- src/engine/server/world/WorldServer.java | 2 +- src/engine/workthreads/HourlyJobThread.java | 159 -------------------- 3 files changed, 4 insertions(+), 162 deletions(-) diff --git a/src/engine/devcmd/cmds/MineActiveCmd.java b/src/engine/devcmd/cmds/MineActiveCmd.java index 6f36030a..20f103af 100644 --- a/src/engine/devcmd/cmds/MineActiveCmd.java +++ b/src/engine/devcmd/cmds/MineActiveCmd.java @@ -16,6 +16,7 @@ import engine.objects.AbstractGameObject; import engine.objects.Building; import engine.objects.Mine; import engine.objects.PlayerCharacter; +import engine.workthreads.HalfHourlyJobThread; import engine.workthreads.HourlyJobThread; /** @@ -41,10 +42,10 @@ public class MineActiveCmd extends AbstractDevCmd { String trigger = args[0]; switch (trigger) { case "true": - HourlyJobThread.mineWindowOpen(mine); + HalfHourlyJobThread.mineWindowOpen(mine); break; case "false": - HourlyJobThread.mineWindowClose(mine); + HalfHourlyJobThread.mineWindowClose(mine); break; default: this.sendUsage(pcSender); diff --git a/src/engine/server/world/WorldServer.java b/src/engine/server/world/WorldServer.java index 85089efb..1fa9d22f 100644 --- a/src/engine/server/world/WorldServer.java +++ b/src/engine/server/world/WorldServer.java @@ -502,7 +502,7 @@ public class WorldServer { // Open/Close mines for the current window Logger.info("Processing mine window."); - HourlyJobThread.processMineWindow(); + HalfHourlyJobThread.processMineWindow(); // Calculate bootstrap time and rest boot time to current time. diff --git a/src/engine/workthreads/HourlyJobThread.java b/src/engine/workthreads/HourlyJobThread.java index d418a467..723b8d8e 100644 --- a/src/engine/workthreads/HourlyJobThread.java +++ b/src/engine/workthreads/HourlyJobThread.java @@ -10,179 +10,20 @@ package engine.workthreads; import engine.Enum; -import engine.InterestManagement.WorldGrid; -import engine.db.archive.DataWarehouse; -import engine.db.archive.MineRecord; import engine.gameManager.*; -import engine.net.DispatchMessage; import engine.net.MessageDispatcher; -import engine.net.client.msg.chat.ChatSystemMsg; import engine.objects.*; import engine.server.world.WorldServer; import org.pmw.tinylog.Logger; - -import java.time.LocalDateTime; import java.util.ArrayList; import java.util.concurrent.ConcurrentHashMap; -import static engine.server.MBServerStatics.MINE_LATE_WINDOW; - public class HourlyJobThread implements Runnable { public HourlyJobThread() { } - public static void decayShrines() { - ArrayList shrineList = new ArrayList<>(); - - for (Shrine shrine : Shrine.shrinesByBuildingUUID.values()) { - try { - Building shrineBuilding = (Building) DbManager.getObject(Enum.GameObjectType.Building, shrine.getBuildingID()); - - if (shrineBuilding == null) - continue; - - - if (shrineBuilding.getOwner().equals(shrineBuilding.getCity().getOwner()) == false) - shrineBuilding.claim(shrineBuilding.getCity().getOwner()); - } catch (Exception e) { - Logger.info("Shrine " + shrine.getBuildingID() + " Error " + e); - } - } - - // Grab list of top two shrines of each type - - for (Shrine shrine : Shrine.shrinesByBuildingUUID.values()) { - - if (shrine.getRank() == 0 || shrine.getRank() == 1) - shrineList.add(shrine); - } - - Logger.info("Decaying " + shrineList.size() + " shrines..."); - - // Top 2 shrines decay by 10% a day - - for (Shrine shrine : shrineList) { - - try { - shrine.decay(); - } catch (Exception e) { - Logger.info("Shrine " + shrine.getBuildingID() + " Error " + e); - } - } - } - - public static void processMineWindow() { - - try { - - ArrayList mines = Mine.getMines(); - - for (Mine mine : mines) { - if (LocalDateTime.now().getHour() == 1400) { - mine.wasClaimed = false; - } - try { - - // Open Errant Mines - - if (mine.getOwningGuild().isEmptyGuild()) { - HourlyJobThread.mineWindowOpen(mine); - continue; - } - - // Open Mines owned by nations having their WOO - // set to the current mine window. - - if (mine.getOwningGuild().getNation().getMineTime() == - LocalDateTime.now().getHour() && mine.wasClaimed == false) { - HourlyJobThread.mineWindowOpen(mine); - continue; - } - - // Close the mine if it reaches this far - - mineWindowClose(mine); - - } catch (Exception e) { - Logger.error("mineID: " + mine.getObjectUUID(), e.toString()); - } - } - } catch (Exception e) { - Logger.error(e.toString()); - } - } - - public static void mineWindowOpen(Mine mine) { - - mine.setActive(true); - ChatManager.chatSystemChannel(mine.getZoneName() + "'s Mine is now Active!"); - Logger.info(mine.getZoneName() + "'s Mine is now Active!"); - } - - public static boolean mineWindowClose(Mine mine) { - - // No need to end the window of a mine which never opened. - - if (mine.isActive == false) - return false; - - Building mineBuilding = BuildingManager.getBuildingFromCache(mine.getBuildingID()); - - if (mineBuilding == null) { - Logger.debug("Null mine building for Mine " + mine.getObjectUUID() + " Building " + mine.getBuildingID()); - return false; - } - - // Mine building still stands; nothing to do. - // We can early exit here. - - if (mineBuilding.getRank() > 0) { - mine.setActive(false); - mine.lastClaimer = null; - return true; - } - - // This mine does not have a valid claimer - // we will therefore set it to errant - // and keep the window open. - - if (!Mine.validateClaimer(mine.lastClaimer)) { - mine.lastClaimer = null; - mine.updateGuildOwner(null); - mine.setActive(true); - return false; - } - - //Update ownership to map - - mine.guildName = mine.getOwningGuild().getName(); - mine.guildTag = mine.getOwningGuild().getGuildTag(); - Guild nation = mine.getOwningGuild().getNation(); - mine.nationName = nation.getName(); - mine.nationTag = nation.getGuildTag(); - - mineBuilding.rebuildMine(); - WorldGrid.updateObject(mineBuilding); - - ChatSystemMsg chatMsg = new ChatSystemMsg(null, mine.lastClaimer.getName() + " has claimed the mine in " + mine.getParentZone().getParent().getName() + " for " + mine.getOwningGuild().getName() + ". The mine is no longer active."); - chatMsg.setMessageType(10); - chatMsg.setChannel(Enum.ChatChannelType.SYSTEM.getChannelID()); - DispatchMessage.dispatchMsgToAll(chatMsg); - - // Warehouse this claim event - - MineRecord mineRecord = MineRecord.borrow(mine, mine.lastClaimer, Enum.RecordEventType.CAPTURE); - DataWarehouse.pushToWarehouse(mineRecord); - - mineBuilding.setRank(mineBuilding.getRank()); - mine.lastClaimer = null; - mine.setActive(false); - mine.wasClaimed = true; - return true; - } - public void run() { // *** REFACTOR: TRY TRY TRY TRY {{{{{{{{{{{ OMG