@ -319,6 +319,15 @@ public class Mine extends AbstractGameObject {
@@ -319,6 +319,15 @@ public class Mine extends AbstractGameObject {
return true ;
}
public static ArrayList < Mine > getMinesToTeleportTo ( PlayerCharacter player ) {
ArrayList < Mine > mines = new ArrayList < > ( ) ;
for ( Mine mine : Mine . getMines ( ) )
if ( mine . getOwningGuild ( ) ! = null & & mine . getOwningGuild ( ) . getNation ( ) . equals ( player . getGuild ( ) . getNation ( ) ) )
mines . add ( mine ) ;
return mines ;
}
public boolean changeProductionType ( Resource resource ) {
if ( ! this . validForMine ( resource ) )
return false ;
@ -661,4 +670,136 @@ public class Mine extends AbstractGameObject {
@@ -661,4 +670,136 @@ public class Mine extends AbstractGameObject {
_playerMemory . removeAll ( toRemove ) ;
}
public static Building getTower ( Mine mine ) {
return null ;
}
public static void serializeForClientMsgTeleport ( Mine mine , ByteBufferWriter writer ) {
AbstractCharacter guildRuler ;
Guild rulingGuild ;
Guild rulingNation ;
java . time . LocalDateTime dateTime1900 ;
// Cities aren't a mine without a TOL. Time to early exit.
// No need to spam the log here as non-existant TOL's are indicated
// during bootstrap routines.
if ( Mine . getTower ( mine ) = = null ) {
Logger . error ( "NULL TOL FOR " + mine . zoneName + " mine" ) ;
}
// Assign mine owner
if ( Mine . getTower ( mine ) ! = null & & Mine . getTower ( mine ) . getOwner ( ) ! = null )
guildRuler = Mine . getTower ( mine ) . getOwner ( ) ;
else
guildRuler = null ;
// If is an errant tree, use errant guild for serialization.
// otherwise we serialize the soverign guild
if ( guildRuler = = null )
rulingGuild = Guild . getErrantGuild ( ) ;
else
rulingGuild = guildRuler . getGuild ( ) ;
rulingNation = rulingGuild . getNation ( ) ;
// Begin Serialzing soverign guild data
writer . putInt ( mine . getObjectType ( ) . ordinal ( ) ) ;
writer . putInt ( mine . getObjectUUID ( ) ) ;
writer . putString ( Mine . getTower ( mine ) . getName ( ) ) ;
writer . putInt ( rulingGuild . getObjectType ( ) . ordinal ( ) ) ;
writer . putInt ( rulingGuild . getObjectUUID ( ) ) ;
writer . putString ( rulingGuild . getName ( ) ) ;
writer . putString ( "" ) ;
writer . putString ( rulingGuild . getLeadershipType ( ) ) ;
// Serialize guild ruler's name
// If tree is abandoned blank out the name
// to allow them a rename.
if ( guildRuler = = null )
writer . putString ( "" ) ;
else
writer . putString ( guildRuler . getFirstName ( ) + ' ' + guildRuler . getLastName ( ) ) ;
writer . putInt ( rulingGuild . getCharter ( ) ) ;
writer . putInt ( 0 ) ; // always 00000000
writer . put ( ( byte ) 0 ) ;
writer . put ( ( byte ) 1 ) ;
writer . put ( ( byte ) 1 ) ; // *** Refactor: What are these flags?
writer . put ( ( byte ) 1 ) ;
writer . put ( ( byte ) 1 ) ;
writer . put ( ( byte ) 1 ) ;
GuildTag . _serializeForDisplay ( rulingGuild . getGuildTag ( ) , writer ) ;
GuildTag . _serializeForDisplay ( rulingNation . getGuildTag ( ) , writer ) ;
writer . putInt ( 0 ) ; // TODO Implement description text
writer . put ( ( byte ) 1 ) ;
writer . put ( ( byte ) 0 ) ;
writer . put ( ( byte ) 1 ) ;
// Begin serializing nation guild info
if ( rulingNation . isEmptyGuild ( ) ) {
writer . putInt ( rulingGuild . getObjectType ( ) . ordinal ( ) ) ;
writer . putInt ( rulingGuild . getObjectUUID ( ) ) ;
} else {
writer . putInt ( rulingNation . getObjectType ( ) . ordinal ( ) ) ;
writer . putInt ( rulingNation . getObjectUUID ( ) ) ;
}
// Serialize nation name
if ( rulingNation . isEmptyGuild ( ) )
writer . putString ( "None" ) ;
else
writer . putString ( rulingNation . getName ( ) ) ;
if ( Mine . getTower ( mine ) ! = null ) {
writer . putInt ( Mine . getTower ( mine ) . getRank ( ) ) ;
} else {
writer . putInt ( 1 ) ;
}
writer . putInt ( 0xFFFFFFFF ) ;
writer . putInt ( 0 ) ;
if ( rulingNation . isEmptyGuild ( ) )
writer . putString ( " " ) ;
else
writer . putString ( Guild . GetGL ( rulingNation ) . getFirstName ( ) + ' ' + Guild . GetGL ( rulingNation ) . getLastName ( ) ) ;
writer . putLocalDateTime ( LocalDateTime . now ( ) ) ;
// writer.put((byte) mine.established.getDayOfMonth());
// writer.put((byte) mine.established.minusMonths(1).getMonth().getValue());
// writer.putInt((int) years);
// writer.put((byte) hours);
// writer.put((byte) minutes);
// writer.put((byte) seconds);
writer . putFloat ( Mine . getTower ( mine ) . loc . x ) ;
writer . putFloat ( Mine . getTower ( mine ) . loc . y ) ;
writer . putFloat ( Mine . getTower ( mine ) . loc . z ) ;
writer . putInt ( 0 ) ;
writer . put ( ( byte ) 1 ) ;
writer . put ( ( byte ) 0 ) ;
writer . putInt ( 0x64 ) ;
writer . put ( ( byte ) 0 ) ;
writer . put ( ( byte ) 0 ) ;
writer . put ( ( byte ) 0 ) ;
}
}