Mine window methods moved to HourlyJobThread and made static.

This commit is contained in:
2023-01-21 11:11:34 -05:00
parent 1ed51c8e02
commit 39f3e4ed2c
3 changed files with 93 additions and 88 deletions
+85 -8
View File
@@ -10,10 +10,13 @@
package engine.workthreads;
import engine.Enum;
import engine.gameManager.DbManager;
import engine.gameManager.SimulationManager;
import engine.gameManager.ZoneManager;
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;
@@ -184,23 +187,24 @@ public class HourlyJobThread implements Runnable {
// Open Errant Mines
if (mine.getOwningGuild().isEmptyGuild()) {
mine.handleStartMineWindow();
HourlyJobThread.handleStartMineWindow(mine);
Mine.setLastChange(System.currentTimeMillis());
continue;
}
// Open Mines with a current guild hour
// Open Mines owned by nations having their WOO
// set to the current mine window.
if (mine.getOwningGuild().getNation().getMineTime() ==
LocalDateTime.now().getHour()) {
mine.handleStartMineWindow();
HourlyJobThread.handleStartMineWindow(mine);
Mine.setLastChange(System.currentTimeMillis());
continue;
}
// Close all remaining mines
// Close all the remaining mines
if (mine.handleEndMineWindow())
if (handleEndMineWindow(mine))
Mine.setLastChange(System.currentTimeMillis());
} catch (Exception e) {
@@ -211,4 +215,77 @@ public class HourlyJobThread implements Runnable {
Logger.error(e.toString());
}
}
public static void handleStartMineWindow(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 handleEndMineWindow(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;
}
if (mineBuilding.getRank() > 0) {
//never knocked down, let's just move on.
//hasn't been claimed since server start.
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.validClaimer(mine.lastClaimer)) {
mine.lastClaimer = null;
mine.updateGuildOwner(null);
mine.setActive(true);
return false;
}
if (mine.getOwningGuild().isEmptyGuild() || mine.getOwningGuild().getNation().isEmptyGuild())
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();
Mine.setLastChange(System.currentTimeMillis());
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;
}
}