|
|
|
@ -16,16 +16,16 @@ import org.pmw.tinylog.Logger;
@@ -16,16 +16,16 @@ import org.pmw.tinylog.Logger;
|
|
|
|
|
import java.time.LocalDateTime; |
|
|
|
|
|
|
|
|
|
public class MineThread implements Runnable { |
|
|
|
|
public static LocalDateTime nextPulse; |
|
|
|
|
public MineThread(){ |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
@Override |
|
|
|
|
public void run() { |
|
|
|
|
LocalDateTime nextPulse = LocalDateTime.now().withMinute(59).minusHours(1); |
|
|
|
|
nextPulse = LocalDateTime.now().withMinute(0); |
|
|
|
|
while (true) { |
|
|
|
|
if(LocalDateTime.now().isAfter(nextPulse)) { |
|
|
|
|
processMineWindows(); |
|
|
|
|
nextPulse = nextPulse.plusMinutes(30); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -108,21 +108,35 @@ public class MineThread implements Runnable {
@@ -108,21 +108,35 @@ public class MineThread implements Runnable {
|
|
|
|
|
public static void processMineWindows(){ |
|
|
|
|
for (Mine mine : Mine.getMines()) { |
|
|
|
|
Building tower = BuildingManager.getBuildingFromCache(mine.getBuildingID()); |
|
|
|
|
//if the tower comes back null, skip this mine
|
|
|
|
|
if(tower == null) |
|
|
|
|
continue; |
|
|
|
|
LocalDateTime liveTime = LocalDateTime.now().withHour(mine.liveHour).withMinute(mine.liveMinute).minusMinutes(1); |
|
|
|
|
if(!mine.isActive && !mine.wasOpened) { |
|
|
|
|
if (LocalDateTime.now().isAfter(liveTime)) { |
|
|
|
|
mineWindowOpen(mine); |
|
|
|
|
// mine has not opened today yet, and it is now after the time it should have, open the mine
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//log the current time right now
|
|
|
|
|
LocalDateTime currentTime = LocalDateTime.now().plusMinutes(1); |
|
|
|
|
|
|
|
|
|
//check if this mine needs to open
|
|
|
|
|
LocalDateTime openTime = LocalDateTime.now().withHour(mine.liveHour).withMinute(mine.liveMinute).withSecond(0).withNano(0); |
|
|
|
|
if(currentTime.isAfter(openTime) && !mine.wasOpened){ |
|
|
|
|
mineWindowOpen(mine); //hour and minute match, time to open the window
|
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
//mine is active right now
|
|
|
|
|
if (LocalDateTime.now().isBefore(liveTime.plusMinutes(30))) |
|
|
|
|
continue; // window is not over yet
|
|
|
|
|
|
|
|
|
|
if(tower.getRank() == 1 || mine.lastClaimer != null) |
|
|
|
|
mineWindowClose(mine); |
|
|
|
|
//check to see if the window shoul dbe closing now
|
|
|
|
|
if(currentTime.isAfter(openTime.plusMinutes(29))) { |
|
|
|
|
//check to see if the tower was destoryed
|
|
|
|
|
boolean towerDestroyed = tower.getRank() < 1; |
|
|
|
|
if(towerDestroyed){ |
|
|
|
|
//check if a valid claimer exists to close the window and claim the mine since the tower was destroyed
|
|
|
|
|
if(mine.lastClaimer != null) |
|
|
|
|
mineWindowClose(mine); |
|
|
|
|
}else{ |
|
|
|
|
//tower was not destroyed, mine window closes
|
|
|
|
|
mineWindowClose(mine); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
nextPulse = nextPulse.plusMinutes(30); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|