2022-04-30 09:41:17 -04:00
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// 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 {
2023-07-15 09:23:48 -04:00
//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
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
private Guild guild ;
private Building warehouseBuilding ;
private Warehouse warehouseObject ;
private PlayerCharacter player ;
private City city ;
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
/**
* This is the general purpose constructor.
*/
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
public ViewResourcesMessage ( PlayerCharacter player ) {
super ( Protocol . VIEWRESOURCES );
this . guild = null ;
this . player = player ;
}
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
/**
* 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 );
}
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
public boolean configure () {
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
if ( this . warehouseBuilding . getParentZone () == null )
return false ;
2022-04-30 09:41:17 -04:00
2023-09-20 15:53:41 -04:00
this . city = ( City ) DbManager . getObject ( Enum . GameObjectType . City , this . warehouseBuilding . getParentZone (). playerCityUUID );
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
if ( this . city == null )
return false ;
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
this . warehouseObject = this . city . getWarehouse ();
2022-04-30 09:41:17 -04:00
return this . warehouseObject != null ;
}
2023-07-15 09:23:48 -04:00
/**
* Serializes the subclass specific items to the supplied NetMsgWriter.
*/
@Override
protected void _serialize ( ByteBufferWriter writer ) {
2022-04-30 09:41:17 -04:00
2024-01-24 20:03:27 -06:00
writer . putInt ( warehouseObject . resources . size ());
2022-04-30 09:41:17 -04:00
2024-03-15 10:01:22 -04:00
for ( Enum . ResourceType resourceType : ( warehouseObject . resources . keySet ())) {
2022-04-30 09:41:17 -04:00
2024-03-11 17:10:34 -04:00
writer . putInt ( resourceType . hash );
2024-03-15 10:01:22 -04:00
writer . putInt (( warehouseObject . resources . get ( resourceType )));
2022-04-30 09:41:17 -04:00
2024-03-15 10:01:22 -04:00
if ( Warehouse . isResourceLocked ( warehouseObject , resourceType ) == true )
2023-07-15 09:23:48 -04:00
writer . put (( byte ) 1 );
else
writer . put (( byte ) 0 );
}
2022-04-30 09:41:17 -04:00
2024-01-24 20:03:27 -06:00
writer . putInt ( warehouseObject . resources . size ());
2022-04-30 09:41:17 -04:00
2024-03-15 10:01:22 -04:00
for ( Enum . ResourceType resourceType : warehouseObject . resources . keySet ()) {
2024-03-11 17:10:34 -04:00
writer . putInt ( resourceType . hash );
2023-07-15 09:23:48 -04:00
writer . putInt ( 0 ); //available?
2024-03-15 10:01:22 -04:00
writer . putInt ( resourceType . deposit_limit ); //max?
2023-07-15 09:23:48 -04:00
}
GuildTag . _serializeForDisplay ( guild . getGuildTag (), writer );
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
// Serialize what tags? Errant?
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
writer . putInt ( 16 );
writer . putInt ( 16 );
writer . putInt ( 16 );
writer . putInt ( 0 );
writer . putInt ( 0 );
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
if ( GuildStatusController . isTaxCollector ( player . getGuildStatus ())) {
writer . putInt ( 1 );
writer . putString ( "Deposit" );
writer . putInt ( - 1760114543 );
writer . putInt ( 1 );
writer . put (( byte ) 0 );
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
} 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 );
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
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 );
}
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
}
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
/**
* 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();
}
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
public void setGuild ( Guild guild ) {
this . guild = guild ;
}
2022-04-30 09:41:17 -04:00
2023-07-15 09:23:48 -04:00
public void setWarehouseBuilding ( Building warehouseBuilding ) {
this . warehouseBuilding = warehouseBuilding ;
}
2022-04-30 09:41:17 -04:00
}