@ -22,127 +22,147 @@ import java.time.LocalDateTime;
@@ -22,127 +22,147 @@ 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 {
private static int hotzoneCount = 0 ;
private static final int hotzoneCount = 0 ;
public HourlyJobThread ( ) {
}
public void run ( ) {
// *** REFACTOR: TRY TRY TRY TRY {{{{{{{{{{{ OMG
Logger . info ( "Hourly job is now running." ) ;
try {
public HourlyJobThread ( ) {
ZoneManager . generateAndSetRandomHotzone ( ) ;
Zone hotzone = ZoneManager . getHotZone ( ) ;
}
if ( hotzone = = null ) {
Logger . error ( "Null hotzone returned from mapmanager" ) ;
} else {
Logger . info ( "new hotzone: " + hotzone . getName ( ) ) ;
WorldServer . setLastHZChange ( System . currentTimeMillis ( ) ) ;
}
public void run ( ) {
} catch ( Exception e ) {
Logger . error ( e . toString ( ) ) ;
}
// *** REFACTOR: TRY TRY TRY TRY {{{{{{{{{{{ OMG
// Open or Close mines for the current mine window.
Logger . info ( "Hourly job is now running." ) ;
processMineWindow ( ) ;
try {
// Deposit mine resources to Guilds
ZoneManager . generateAndSetRandomHotzone ( ) ;
Zone hotzone = ZoneManager . getHotZone ( ) ;
for ( Mine mine : Mine . getMines ( ) ) {
if ( hotzone = = null ) {
Logger . error ( "Null hotzone returned from mapmanager" ) ;
} else {
Logger . info ( "new hotzone: " + hotzone . getName ( ) ) ;
WorldServer . setLastHZChange ( System . currentTimeMillis ( ) ) ;
}
try {
mine . depositMineResources ( ) ;
} catch ( Exception e ) {
Logger . info ( e . getMessage ( ) + " for Mine " + mine . getObjectUUID ( ) ) ;
}
}
} catch ( Exception e ) {
Logger . error ( e . toString ( ) ) ;
}
// Reset time-gated access to WOO slider.
// *** Do this after the mines open/close!
// Open or Close mines for the current mine window.
if ( LocalDateTime . now ( ) . getHour ( ) = = MINE_LATE_WINDOW ) {
Guild guild ;
processMineWindow ( ) ;
for ( AbstractGameObject dbObject : DbManager . getList ( Enum . GameObjectType . Guild ) ) {
guild = ( Guild ) dbObject ;
for ( Mine mine : Mine . getMines ( ) ) {
if ( guild ! = null )
guild . wooWasModified = false ;
}
}
try {
mine . depositMineResources ( ) ;
} catch ( Exception e ) {
Logger . info ( e . getMessage ( ) + " for Mine " + mine . getObjectUUID ( ) ) ;
}
}
// Mines can only be claimed once per cycle.
// This will reset at 1am after the last mine
// window closes.
// Update city population values
if ( LocalDateTime . now ( ) . getHour ( ) = = MINE_LATE_WINDOW + 1 ) {
ConcurrentHashMap < Integer , AbstractGameObject > map = DbManager . getMap ( Enum . GameObjectType . City ) ;
for ( Mine mine : Mine . getMines ( ) ) {
if ( map ! = null ) {
if ( mine . wasClaimed = = true )
mine . wasClaimed = false ;
}
}
for ( AbstractGameObject ago : map . values ( ) ) {
// Update city population values
City city = ( City ) ago ;
ConcurrentHashMap < Integer , AbstractGameObject > map = DbManager . getMap ( Enum . GameObjectType . City ) ;
if ( city ! = null )
if ( city . getGuild ( ) ! = null ) {
ArrayList < PlayerCharacter > guildList = Guild . GuildRoster ( city . getGuild ( ) ) ;
city . setPopulation ( guildList . size ( ) ) ;
}
}
City . lastCityUpdate = System . currentTimeMillis ( ) ;
} else {
Logger . error ( "missing city map" ) ;
}
if ( map ! = null ) {
// Log metrics to console
Logger . info ( WorldServer . getUptimeString ( ) ) ;
Logger . info ( SimulationManager . getPopulationString ( ) ) ;
Logger . info ( MessageDispatcher . getNetstatString ( ) ) ;
Logger . info ( PurgeOprhans . recordsDeleted . toString ( ) + "orphaned items deleted" ) ;
}
for ( AbstractGameObject ago : map . values ( ) ) {
public static void processMineWindow ( ) {
City city = ( City ) ago ;
try {
if ( city ! = null )
if ( city . getGuild ( ) ! = null ) {
ArrayList < PlayerCharacter > guildList = Guild . GuildRoster ( city . getGuild ( ) ) ;
city . setPopulation ( guildList . size ( ) ) ;
}
}
City . lastCityUpdate = System . currentTimeMillis ( ) ;
} else {
Logger . error ( "missing city map" ) ;
}
ArrayList < Mine > mines = Mine . getMines ( ) ;
// Log metrics to console
Logger . info ( WorldServer . getUptimeString ( ) ) ;
Logger . info ( SimulationManager . getPopulationString ( ) ) ;
Logger . info ( MessageDispatcher . getNetstatString ( ) ) ;
Logger . info ( PurgeOprhans . recordsDeleted . toString ( ) + "orphaned items deleted" ) ;
}
for ( Mine mine : mines ) {
try {
public static void processMineWindow ( ) {
// Mines can only be claimed once a cycle.
// The cycle resets at 01:00hrs after the
// Last mine window closes.
try {
if ( mine . wasClaimed = = true ) {
ArrayList < Mine > mines = Mine . getMines ( ) ;
if ( LocalDateTime . now ( ) . getHour ( ) = = 01 )
mine . wasClaimed = false ;
for ( Mine mine : mines ) {
continue ;
}
try {
// Open Errant Mines
// Open Errant Mines
if ( mine . getOwningGuild ( ) . isErrant ( ) ) {
mine . handleStartMineWindow ( ) ;
Mine . setLastChange ( System . currentTimeMillis ( ) ) ;
continue ;
}
if ( mine . getOwningGuild ( ) . isErrant ( ) ) {
mine . handleStartMineWindow ( ) ;
Mine . setLastChange ( System . currentTimeMillis ( ) ) ;
continue ;
}
// Open Mines with a current guild hour
// Open Mines with a current guild hour
if ( mine . getOwningGuild ( ) . getNation ( ) . getMineTime ( ) = =
LocalDateTime . now ( ) . getHour ( ) ) {
mine . handleStartMineWindow ( ) ;
Mine . setLastChange ( System . currentTimeMillis ( ) ) ;
continue ;
}
if ( mine . getOwningGuild ( ) . getNation ( ) . getMineTime ( ) = =
LocalDateTime . now ( ) . getHour ( ) ) {
mine . handleStartMineWindow ( ) ;
Mine . setLastChange ( System . currentTimeMillis ( ) ) ;
continue ;
}
// Close all remaining mines
// Close all remaining mines
if ( mine . handleEndMineWindow ( ) )
Mine . setLastChange ( System . currentTimeMillis ( ) ) ;
if ( mine . handleEndMineWindow ( ) )
Mine . setLastChange ( System . currentTimeMillis ( ) ) ;
} catch ( Exception e ) {
Logger . error ( "mineID: " + mine . getObjectUUID ( ) , e . toString ( ) ) ;
}
}
} catch ( Exception e ) {
Logger . error ( e . toString ( ) ) ;
}
}
} catch ( Exception e ) {
Logger . error ( "mineID: " + mine . getObjectUUID ( ) , e . toString ( ) ) ;
}
}
} catch ( Exception e ) {
Logger . error ( e . toString ( ) ) ;
}
}
}