You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
195 lines
6.0 KiB
195 lines
6.0 KiB
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ . |
|
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌· |
|
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀ |
|
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌ |
|
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀ |
|
// Magicbane Emulator Project © 2013 - 2022 |
|
// www.magicbane.com |
|
|
|
|
|
package engine.net.client.msg; |
|
|
|
import engine.Enum; |
|
import engine.gameManager.DbManager; |
|
import engine.net.AbstractConnection; |
|
import engine.net.ByteBufferReader; |
|
import engine.net.ByteBufferWriter; |
|
import engine.net.client.Protocol; |
|
import engine.objects.*; |
|
|
|
|
|
public class ViewResourcesMessage extends ClientNetMsg { |
|
|
|
//resource hashes |
|
//0001240F |
|
//002339C7 (locked) |
|
//00263669 |
|
//00270DC3 |
|
//002D6DEF |
|
//047636B3 (locked) |
|
//047B0CC1 |
|
//04AB3761 |
|
//1AF5DB3A |
|
//47033237 |
|
//4F8EFB0F |
|
//5B57C3E4 |
|
//86A0AC24 |
|
//9705591E |
|
//98378CB4 |
|
//98D78D15 |
|
//A0703E8C (locked) |
|
//A0DA3807 |
|
//A1723A93 |
|
//A26E59CF |
|
//D665C60F |
|
//E3D05AE3 |
|
//ED13904D |
|
|
|
private Guild guild; |
|
private Building warehouseBuilding; |
|
private Warehouse warehouseObject; |
|
private PlayerCharacter player; |
|
private City city; |
|
|
|
/** |
|
* This is the general purpose constructor. |
|
*/ |
|
|
|
public ViewResourcesMessage(PlayerCharacter player) { |
|
super(Protocol.VIEWRESOURCES); |
|
this.guild = null; |
|
this.player = player; |
|
} |
|
|
|
/** |
|
* 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 ViewResourcesMessage(AbstractConnection origin, ByteBufferReader reader) { |
|
super(Protocol.VIEWRESOURCES, origin, reader); |
|
} |
|
|
|
public boolean configure() { |
|
|
|
if (this.warehouseBuilding.getParentZone() == null) |
|
return false; |
|
|
|
this.city = (City) DbManager.getObject(Enum.GameObjectType.City, this.warehouseBuilding.getParentZone().getPlayerCityUUID()); |
|
|
|
if (this.city == null) |
|
return false; |
|
|
|
this.warehouseObject = this.city.getWarehouse(); |
|
|
|
return this.warehouseObject != null; |
|
} |
|
|
|
/** |
|
* Serializes the subclass specific items to the supplied NetMsgWriter. |
|
*/ |
|
@Override |
|
protected void _serialize(ByteBufferWriter writer) { |
|
|
|
writer.putInt(warehouseObject.getResources().size()); |
|
|
|
for (ItemBase ib : (warehouseObject.getResources().keySet())) { |
|
|
|
writer.putInt(ib.getHashID()); |
|
writer.putInt((warehouseObject.getResources().get(ib))); |
|
|
|
|
|
if (warehouseObject.isResourceLocked(ib) == true) |
|
writer.put((byte) 1); |
|
else |
|
writer.put((byte) 0); |
|
} |
|
|
|
writer.putInt(warehouseObject.getResources().size()); |
|
|
|
for (ItemBase ib : warehouseObject.getResources().keySet()) { |
|
writer.putInt(ib.getHashID()); |
|
writer.putInt(0); //available? |
|
writer.putInt(Warehouse.getMaxResources().get(ib.getUUID())); //max? |
|
} |
|
GuildTag._serializeForDisplay(guild.getGuildTag(), writer); |
|
|
|
// Serialize what tags? Errant? |
|
|
|
writer.putInt(16); |
|
writer.putInt(16); |
|
writer.putInt(16); |
|
writer.putInt(0); |
|
writer.putInt(0); |
|
|
|
if (GuildStatusController.isTaxCollector(player.getGuildStatus())) { |
|
writer.putInt(1); |
|
writer.putString("Deposit"); |
|
writer.putInt(-1760114543); |
|
writer.putInt(1); |
|
writer.put((byte) 0); |
|
|
|
} else if (this.player.getGuild().equals(warehouseBuilding.getGuild()) && (GuildStatusController.isInnerCouncil(this.player.getGuildStatus()))) { |
|
writer.putInt(4); |
|
writer.putString("Lock"); |
|
writer.putInt(2393548); |
|
writer.putInt(1); //locked? on/off |
|
writer.put((byte) 0); |
|
writer.putString("Deposit"); |
|
writer.putInt(-1760114543); |
|
|
|
writer.putInt(1); |
|
writer.put((byte) 0); |
|
writer.putString("Manage Mines"); |
|
writer.putInt(-820683698); |
|
writer.putInt(1); |
|
writer.put((byte) 0); |
|
writer.putString("Withdraw"); |
|
writer.putInt(-530228289); |
|
writer.putInt(1); |
|
writer.put((byte) 0); |
|
} else { |
|
writer.putInt(2); |
|
writer.putString("Lock"); |
|
writer.putInt(2393548); |
|
writer.putInt(0); //locked? on/off |
|
writer.put((byte) 0); |
|
writer.putString("Deposit"); |
|
writer.putInt(-1760114543); |
|
writer.putInt(1); |
|
writer.put((byte) 0); |
|
} |
|
|
|
} |
|
|
|
/** |
|
* Deserializes the subclass specific items from the supplied NetMsgReader. |
|
*/ |
|
@Override |
|
protected void _deserialize(ByteBufferReader reader) { |
|
reader.getInt(); |
|
reader.getInt(); |
|
reader.getInt(); |
|
reader.getInt(); |
|
reader.getInt(); |
|
reader.getInt(); |
|
reader.getInt(); |
|
reader.getInt(); |
|
reader.getInt(); |
|
reader.getInt(); |
|
reader.getInt(); |
|
reader.getInt(); |
|
reader.getInt(); |
|
// this.locX = reader.getFloat(); |
|
// this.locY = reader.getFloat(); |
|
// this.locZ = reader.getFloat(); |
|
// this.name = reader.getString(); |
|
// this.unknown01 = reader.getInt(); |
|
} |
|
|
|
public void setGuild(Guild guild) { |
|
this.guild = guild; |
|
} |
|
|
|
public void setWarehouseBuilding(Building warehouseBuilding) { |
|
this.warehouseBuilding = warehouseBuilding; |
|
} |
|
}
|
|
|