|
|
|
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
|
|
|
|
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
|
|
|
|
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
|
|
|
|
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
|
|
|
|
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
|
|
|
|
// Magicbane Emulator Project © 2013 - 2022
|
|
|
|
// www.magicbane.com
|
|
|
|
|
|
|
|
|
|
|
|
package engine.net.client.msg.guild;
|
|
|
|
|
|
|
|
|
|
|
|
import engine.Enum.GameObjectType;
|
|
|
|
import engine.gameManager.NPCManager;
|
|
|
|
import engine.gameManager.PlayerManager;
|
|
|
|
import engine.net.AbstractConnection;
|
|
|
|
import engine.net.ByteBufferReader;
|
|
|
|
import engine.net.ByteBufferWriter;
|
|
|
|
import engine.net.client.Protocol;
|
|
|
|
import engine.net.client.msg.ClientNetMsg;
|
|
|
|
import engine.objects.*;
|
|
|
|
import org.joda.time.DateTime;
|
|
|
|
|
|
|
|
|
|
|
|
public class GuildInfoMsg extends ClientNetMsg {
|
|
|
|
|
|
|
|
private int msgType;
|
|
|
|
private int objectUUID;
|
|
|
|
private int objectType;
|
|
|
|
private Guild guild;
|
|
|
|
private AbstractGameObject ago;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This is the general purpose constructor.
|
|
|
|
*/
|
|
|
|
public GuildInfoMsg() {
|
|
|
|
super(Protocol.UPDATEGUILD);
|
|
|
|
this.msgType = 4;
|
|
|
|
this.objectType = 0;
|
|
|
|
this.objectUUID = 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
public GuildInfoMsg(AbstractGameObject ago, Guild guild, int unknown01) {
|
|
|
|
super(Protocol.UPDATEGUILD);
|
|
|
|
this.msgType = unknown01;
|
|
|
|
this.objectType = ago.getObjectType().ordinal();
|
|
|
|
this.objectUUID = ago.getObjectUUID();
|
|
|
|
this.ago = ago;
|
|
|
|
|
|
|
|
this.guild = guild;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This constructor is used by NetMsgFactory. It attempts to deserialize the
|
|
|
|
* ByteBuffer into a message. If a BufferUnderflow occurs (based on reading
|
|
|
|
* past the limit) then this constructor Throws that Exception to the
|
|
|
|
* caller.
|
|
|
|
*/
|
|
|
|
public GuildInfoMsg(AbstractConnection origin, ByteBufferReader reader) {
|
|
|
|
super(Protocol.UPDATEGUILD, origin, reader);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Serializes the subclass specific items to the supplied ByteBufferWriter.
|
|
|
|
*/
|
|
|
|
@Override
|
|
|
|
protected void _serialize(ByteBufferWriter writer) {
|
|
|
|
writer.putInt(this.msgType);
|
|
|
|
|
|
|
|
if (this.msgType == 2) {
|
|
|
|
new GuildInfoMessageType2(this.ago, guild)._serialize(writer);
|
|
|
|
} else if (this.msgType == 5) {
|
|
|
|
new GuildInfoMessageType5(this.ago, guild)._serialize(writer);
|
|
|
|
} else if (this.msgType == 4) {
|
|
|
|
new GuildInfoMessageType4(this.ago, guild)._serialize(writer);
|
|
|
|
} else {
|
|
|
|
writer.putLong(0);
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.put((byte) 0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Deserializes the subclass specific items from the supplied ByteBufferReader.
|
|
|
|
*/
|
|
|
|
@Override
|
|
|
|
protected void _deserialize(ByteBufferReader reader) {
|
|
|
|
this.msgType = reader.getInt();
|
|
|
|
this.objectType = reader.getInt();
|
|
|
|
this.objectUUID = reader.getInt();
|
|
|
|
|
|
|
|
if (this.msgType == 1)
|
|
|
|
reader.getInt();
|
|
|
|
reader.getInt(); // PAdding
|
|
|
|
reader.getInt();
|
|
|
|
reader.getInt();
|
|
|
|
reader.getInt();
|
|
|
|
reader.getInt();
|
|
|
|
reader.getInt();
|
|
|
|
reader.getInt();
|
|
|
|
reader.get();
|
|
|
|
|
|
|
|
//default guild tag deserializations.
|
|
|
|
if (this.msgType == 5) {
|
|
|
|
reader.getInt();
|
|
|
|
reader.getInt();
|
|
|
|
reader.getInt();
|
|
|
|
reader.getInt();
|
|
|
|
reader.getInt();
|
|
|
|
|
|
|
|
reader.getInt();
|
|
|
|
reader.getInt();
|
|
|
|
reader.getInt();
|
|
|
|
reader.getInt();
|
|
|
|
reader.getInt();
|
|
|
|
|
|
|
|
reader.getInt();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @return the unknown01
|
|
|
|
*/
|
|
|
|
public int getMsgType() {
|
|
|
|
return msgType;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setMsgType(int msgType) {
|
|
|
|
this.msgType = msgType;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @return the objectUUID
|
|
|
|
*/
|
|
|
|
public int getObjectID() {
|
|
|
|
return objectUUID;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getObjectType() {
|
|
|
|
return objectType;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setObjectType(int objectType) {
|
|
|
|
this.objectType = objectType;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
abstract class GuildInfoMessageType {
|
|
|
|
protected int objectType;
|
|
|
|
protected int objectID;
|
|
|
|
protected Guild g;
|
|
|
|
protected AbstractGameObject ago;
|
|
|
|
|
|
|
|
public GuildInfoMessageType(AbstractGameObject ago, Guild g) {
|
|
|
|
this.objectType = ago.getObjectType().ordinal();
|
|
|
|
this.objectID = ago.getObjectUUID();
|
|
|
|
this.ago = ago;
|
|
|
|
this.g = g;
|
|
|
|
}
|
|
|
|
|
|
|
|
abstract void _serialize(ByteBufferWriter writer);
|
|
|
|
}
|
|
|
|
|
|
|
|
class GuildInfoMessageType2 extends GuildInfoMessageType {
|
|
|
|
|
|
|
|
public GuildInfoMessageType2(AbstractGameObject ago, Guild g) {
|
|
|
|
super(ago, g);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
void _serialize(ByteBufferWriter writer) {
|
|
|
|
writer.putInt(this.objectType);
|
|
|
|
writer.putInt(this.objectID);
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putInt(1);
|
|
|
|
|
|
|
|
Guild nation = null;
|
|
|
|
if (this.g != null) {
|
|
|
|
writer.putInt(GameObjectType.Guild.ordinal());
|
|
|
|
writer.putInt(g.getObjectUUID());
|
|
|
|
writer.putString(g.getName());
|
|
|
|
|
|
|
|
if (this.objectType == GameObjectType.PlayerCharacter.ordinal()) {
|
|
|
|
PlayerCharacter pc = PlayerManager.getFromCache(this.objectID);
|
|
|
|
|
|
|
|
if (pc != null) {
|
|
|
|
writer.putInt(GuildStatusController.getRank(pc.getGuildStatus()));
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
writer.putInt(5);
|
|
|
|
}
|
|
|
|
GuildTag._serializeForDisplay(g.getGuildTag(), writer);
|
|
|
|
nation = this.g.getNation();
|
|
|
|
} else {
|
|
|
|
writer.putLong(0L);
|
|
|
|
writer.putString("");
|
|
|
|
GuildTag._serializeForDisplay(GuildTag.ERRANT, writer);
|
|
|
|
}
|
|
|
|
|
|
|
|
writer.putInt(1);
|
|
|
|
if (nation != null) {
|
|
|
|
writer.putInt(GameObjectType.Guild.ordinal());
|
|
|
|
writer.putInt(nation.getObjectUUID());
|
|
|
|
|
|
|
|
City city = g.getOwnedCity();
|
|
|
|
if (city != null) {
|
|
|
|
writer.putString(city.getCityName());
|
|
|
|
writer.putInt(city.getObjectType().ordinal());
|
|
|
|
writer.putInt(city.getObjectUUID());
|
|
|
|
} else {
|
|
|
|
writer.putString(""); //city name
|
|
|
|
writer.putLong(0L); //should be city ID
|
|
|
|
}
|
|
|
|
|
|
|
|
GuildTag._serializeForDisplay(nation.getGuildTag(), writer);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
writer.putLong(0L);
|
|
|
|
writer.putString("");
|
|
|
|
writer.putLong(0L);
|
|
|
|
GuildTag._serializeForDisplay(GuildTag.ERRANT, writer);
|
|
|
|
}
|
|
|
|
writer.putInt(0);
|
|
|
|
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.put((byte) 0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class GuildInfoMessageType4 extends GuildInfoMessageType {
|
|
|
|
|
|
|
|
public GuildInfoMessageType4(AbstractGameObject ago, Guild g) {
|
|
|
|
super(ago, g);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
void _serialize(ByteBufferWriter writer) {
|
|
|
|
String cityName = "";
|
|
|
|
writer.putInt(this.objectType);
|
|
|
|
writer.putInt(this.objectID);
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putInt(0);
|
|
|
|
PlayerCharacter pc = PlayerManager.getFromCache(this.objectID);
|
|
|
|
if (this.g == null || pc == null) {
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.put((byte) 0);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
writer.putInt(1);
|
|
|
|
Guild nation = this.g.getNation();
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putString(g.getName());
|
|
|
|
writer.putInt(0);
|
|
|
|
GuildTag._serializeForDisplay(g.getGuildTag(), writer);
|
|
|
|
writer.putInt(1);
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putInt(0);
|
|
|
|
City city = g.getOwnedCity();
|
|
|
|
if (city != null)
|
|
|
|
cityName = city.getCityName();
|
|
|
|
writer.putString(nation.getName());
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putInt(0);
|
|
|
|
|
|
|
|
GuildTag._serializeForDisplay(nation.getGuildTag(), writer);
|
|
|
|
writer.putInt(1);
|
|
|
|
|
|
|
|
writer.putString(g.getName());
|
|
|
|
writer.putString(g.getMotto());
|
|
|
|
writer.putString(nation.getName());
|
|
|
|
writer.putInt(GuildStatusController.getRank(pc.getGuildStatus()));
|
|
|
|
writer.putInt(GuildStatusController.getTitle(pc.getGuildStatus()));
|
|
|
|
writer.putInt(g.getCharter());
|
|
|
|
writer.putString(cityName); //Shows City Name FUCK
|
|
|
|
AbstractCharacter guildLeader;
|
|
|
|
String guildLeaderName = "";
|
|
|
|
if (g.isNPCGuild()) {
|
|
|
|
guildLeader = NPCManager.getFromCache(g.getGuildLeaderUUID());
|
|
|
|
if (guildLeader != null)
|
|
|
|
guildLeaderName = guildLeader.getName();
|
|
|
|
} else {
|
|
|
|
guildLeader = PlayerManager.getFromCache(g.getGuildLeaderUUID());
|
|
|
|
if (guildLeader != null)
|
|
|
|
guildLeaderName = ((PlayerCharacter) guildLeader).getCombinedName();
|
|
|
|
}
|
|
|
|
|
|
|
|
writer.putString(guildLeaderName);
|
|
|
|
writer.putString(pc.getName());
|
|
|
|
|
|
|
|
writer.putDateTime(DateTime.now());
|
|
|
|
writer.put((byte) 1);
|
|
|
|
writer.put((byte) 1);
|
|
|
|
writer.put((byte) 1);
|
|
|
|
writer.put((byte) 0);
|
|
|
|
writer.putInt(0);
|
|
|
|
|
|
|
|
|
|
|
|
// writer.put((byte)0);
|
|
|
|
|
|
|
|
|
|
|
|
// writer.putString(cityName);
|
|
|
|
// writer.putInt(10);
|
|
|
|
// writer.putInt(6);
|
|
|
|
// writer.putInt(10);
|
|
|
|
// writer.putString(cityName);
|
|
|
|
// writer.putString(pc.getFirstName());
|
|
|
|
// writer.putString("Nation Leader");
|
|
|
|
// writer.putDateTime(DateTime.now());
|
|
|
|
// writer.put((byte)1);
|
|
|
|
// writer.put((byte)1);
|
|
|
|
// writer.putInt(1);
|
|
|
|
// writer.putInt(this.objectType);
|
|
|
|
// writer.putInt(this.objectID);
|
|
|
|
// writer.putInt(0);
|
|
|
|
// writer.putInt(0);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class GuildInfoMessageType5 extends GuildInfoMessageType {
|
|
|
|
|
|
|
|
public GuildInfoMessageType5(AbstractGameObject ago, Guild g) {
|
|
|
|
super(ago, g);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
void _serialize(ByteBufferWriter writer) {
|
|
|
|
|
|
|
|
PlayerCharacter pc = null;
|
|
|
|
|
|
|
|
if (ago.getObjectType().equals(GameObjectType.PlayerCharacter)) {
|
|
|
|
pc = (PlayerCharacter) ago;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (pc != null && g != null && g.getObjectUUID() != 0) {
|
|
|
|
Guild n = g.getNation();
|
|
|
|
if (n == null) {
|
|
|
|
n = Guild.getErrantNation();
|
|
|
|
}
|
|
|
|
|
|
|
|
writer.putInt(ago.getObjectType().ordinal());
|
|
|
|
writer.putInt(ago.getObjectUUID());
|
|
|
|
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putInt(0);
|
|
|
|
|
|
|
|
writer.putInt(1);
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putInt(0);
|
|
|
|
|
|
|
|
writer.putString(g.getName()); //No Effect?
|
|
|
|
writer.putInt(0); //Pad
|
|
|
|
|
|
|
|
GuildTag._serializeForDisplay(g.getGuildTag(), writer); //Also a waste of space...
|
|
|
|
|
|
|
|
writer.putInt(1);
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putString(n.getName()); //No Effect?
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putInt(0);
|
|
|
|
|
|
|
|
GuildTag._serializeForDisplay(n.getGuildTag(), writer);
|
|
|
|
|
|
|
|
writer.putInt(1);
|
|
|
|
|
|
|
|
writer.putString(g.getName()); //Guild Name
|
|
|
|
writer.putString(g.getMotto()); //TODO Motto
|
|
|
|
writer.putString(n.getName()); //Nation Name
|
|
|
|
|
|
|
|
writer.putInt(GuildStatusController.getRank(pc.getGuildStatus())); //Rank
|
|
|
|
writer.putInt(GuildStatusController.getTitle(pc.getGuildStatus())); //Title
|
|
|
|
writer.putInt(g.getCharter());
|
|
|
|
|
|
|
|
if (g.getNation().equals(Guild.getErrantNation()))
|
|
|
|
writer.putString("Errant");
|
|
|
|
else
|
|
|
|
writer.putString("City");
|
|
|
|
writer.putString("Guild Leader");
|
|
|
|
writer.putString(""); //Nation Leader - I believe
|
|
|
|
|
|
|
|
DateTime now = DateTime.now();
|
|
|
|
writer.putDateTime(now);
|
|
|
|
|
|
|
|
writer.put((byte) 1);
|
|
|
|
writer.put((byte) 1);
|
|
|
|
writer.put((byte) 0);
|
|
|
|
writer.put((byte) 0);
|
|
|
|
|
|
|
|
GuildTag._serializeForDisplay(g.getGuildTag(), writer);
|
|
|
|
GuildTag._serializeForDisplay(g.getNation().getGuildTag(), writer);
|
|
|
|
writer.putInt(0);
|
|
|
|
} else {
|
|
|
|
writer.putLong(0);
|
|
|
|
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putInt(0);
|
|
|
|
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putInt(0);
|
|
|
|
writer.putInt(0);
|
|
|
|
|
|
|
|
writer.put((byte) 0);
|
|
|
|
|
|
|
|
GuildTag._serializeForDisplay(GuildTag.ERRANT, writer);
|
|
|
|
GuildTag._serializeForDisplay(GuildTag.ERRANT, writer);
|
|
|
|
|
|
|
|
writer.putInt(0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|