From eec5861944f85bc2f82777161170af1af49d809c Mon Sep 17 00:00:00 2001 From: FatBoy-DOTC Date: Mon, 27 May 2024 21:14:27 -0500 Subject: [PATCH] invisible cities on map logging --- src/engine/objects/City.java | 204 ++++++++++++++++++----------------- 1 file changed, 104 insertions(+), 100 deletions(-) diff --git a/src/engine/objects/City.java b/src/engine/objects/City.java index 99f74311..4da34f2c 100644 --- a/src/engine/objects/City.java +++ b/src/engine/objects/City.java @@ -199,117 +199,118 @@ public class City extends AbstractWorldObject { } public static void serializeForClientMsg(City city, ByteBufferWriter writer) { - AbstractCharacter guildRuler; - Guild rulingGuild; - Guild rulingNation; - java.time.LocalDateTime dateTime1900; + try { + AbstractCharacter guildRuler; + Guild rulingGuild; + Guild rulingNation; + java.time.LocalDateTime dateTime1900; - // Cities aren't a city without a TOL. Time to early exit. - // No need to spam the log here as non-existant TOL's are indicated - // during bootstrap routines. + // Cities aren't a city 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 (city.getTOL() == null) { + if (city.getTOL() == null) { - Logger.error("NULL TOL FOR " + city.cityName); - } + Logger.error("NULL TOL FOR " + city.cityName); + } - // Assign city owner + // Assign city owner - if (city.getTOL() != null) - guildRuler = city.getTOL().getOwner(); - else - guildRuler = null; + if (city.getTOL() != null) + guildRuler = city.getTOL().getOwner(); + else + guildRuler = null; - // If is an errant tree, use errant guild for serialization. - // otherwise we serialize the soverign guild + // 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(); + if (guildRuler == null) + rulingGuild = Guild.getErrantGuild(); + else + rulingGuild = guildRuler.getGuild(); - rulingNation = rulingGuild.getNation(); + rulingNation = rulingGuild.getNation(); - // Begin Serialzing soverign guild data - writer.putInt(city.getObjectType().ordinal()); - writer.putInt(city.getObjectUUID()); - writer.putString(city.cityName); - writer.putInt(rulingGuild.getObjectType().ordinal()); - writer.putInt(rulingGuild.getObjectUUID()); - - writer.putString(rulingGuild.getName()); - writer.putString(city.motto); - 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(city.isSafeHold); - - 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); - - if (city.isCapital > 0) - writer.put((byte) 1); - else - writer.put((byte) 0); - - writer.put((byte) 1); - - // Begin serializing nation guild info - - if (rulingNation.isEmptyGuild()) { + // Begin Serialzing soverign guild data + writer.putInt(city.getObjectType().ordinal()); + writer.putInt(city.getObjectUUID()); + writer.putString(city.cityName); writer.putInt(rulingGuild.getObjectType().ordinal()); writer.putInt(rulingGuild.getObjectUUID()); - } else { - writer.putInt(rulingNation.getObjectType().ordinal()); - writer.putInt(rulingNation.getObjectUUID()); - } + + writer.putString(rulingGuild.getName()); + writer.putString(city.motto); + 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(city.isSafeHold); + + 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); + + if (city.isCapital > 0) + writer.put((byte) 1); + else + 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 + // Serialize nation name - if (rulingNation.isEmptyGuild()) - writer.putString("None"); - else - writer.putString(rulingNation.getName()); + if (rulingNation.isEmptyGuild()) + writer.putString("None"); + else + writer.putString(rulingNation.getName()); - writer.putInt(city.getTOL().getRank()); + writer.putInt(city.getTOL().getRank()); - if (city.isNoobIsle > 0) - writer.putInt(1); - else - writer.putInt(0xFFFFFFFF); + if (city.isNoobIsle > 0) + writer.putInt(1); + else + writer.putInt(0xFFFFFFFF); - writer.putInt(city.population); + writer.putInt(city.population); - if (rulingNation.isEmptyGuild()) - writer.putString(" "); - else - writer.putString(Guild.GetGL(rulingNation).getFirstName() + ' ' + Guild.GetGL(rulingNation).getLastName()); + if (rulingNation.isEmptyGuild()) + writer.putString(" "); + else + writer.putString(Guild.GetGL(rulingNation).getFirstName() + ' ' + Guild.GetGL(rulingNation).getLastName()); - writer.putLocalDateTime(city.established); + writer.putLocalDateTime(city.established); // writer.put((byte) city.established.getDayOfMonth()); // writer.put((byte) city.established.minusMonths(1).getMonth().getValue()); @@ -318,16 +319,19 @@ public class City extends AbstractWorldObject { // writer.put((byte) minutes); // writer.put((byte) seconds); - writer.putFloat(city.location.x); - writer.putFloat(city.location.y); - writer.putFloat(city.location.z); - writer.putInt(ZergManager.getBaneCap(city.getGuild())); - writer.put((byte) 1); - writer.put((byte) 0); - writer.putInt(0x64); - writer.put((byte) 0); - writer.put((byte) 0); - writer.put((byte) 0); + writer.putFloat(city.location.x); + writer.putFloat(city.location.y); + writer.putFloat(city.location.z); + writer.putInt(ZergManager.getBaneCap(city.getGuild())); + writer.put((byte) 1); + writer.put((byte) 0); + writer.putInt(0x64); + writer.put((byte) 0); + writer.put((byte) 0); + writer.put((byte) 0); + }catch(Exception e){ + Logger.error(city.getObjectUUID() + " failed ot serialize because: " + e.getMessage()); + } } public static Vector3fImmutable getBindLoc(int cityID) {