mirror of
https://git.krews.org/morningstar/Arcturus-Community.git
synced 2025-03-06 18:22:36 +01:00
264 lines
7.6 KiB
Java
264 lines
7.6 KiB
Java
package com.eu.habbo.habbohotel.items;
|
|
|
|
import com.eu.habbo.Emulator;
|
|
import com.eu.habbo.habbohotel.items.interactions.InteractionMultiHeight;
|
|
import com.eu.habbo.habbohotel.users.HabboItem;
|
|
import com.eu.habbo.messages.ISerialize;
|
|
import com.eu.habbo.messages.ServerMessage;
|
|
import gnu.trove.list.array.TIntArrayList;
|
|
|
|
import java.sql.ResultSet;
|
|
import java.sql.SQLException;
|
|
|
|
public class Item implements ISerialize {
|
|
|
|
private int id;
|
|
private int spriteId;
|
|
private String name;
|
|
private String fullName;
|
|
private FurnitureType type;
|
|
private short width;
|
|
private short length;
|
|
private double height;
|
|
private boolean allowStack;
|
|
private boolean allowWalk;
|
|
private boolean allowSit;
|
|
private boolean allowLay;
|
|
private boolean allowRecyle;
|
|
private boolean allowTrade;
|
|
private boolean allowMarketplace;
|
|
private boolean allowGift;
|
|
private boolean allowInventoryStack;
|
|
private short stateCount;
|
|
private short effectM;
|
|
private short effectF;
|
|
private TIntArrayList vendingItems;
|
|
private double[] multiHeights;
|
|
private String customParams;
|
|
private String clothingOnWalk;
|
|
|
|
private ItemInteraction interactionType;
|
|
private int rotations;
|
|
|
|
public Item(ResultSet set) throws SQLException {
|
|
this.load(set);
|
|
}
|
|
|
|
public static boolean isPet(Item item) {
|
|
return item.getName().toLowerCase().startsWith("a0 pet");
|
|
}
|
|
|
|
public static double getCurrentHeight(HabboItem item) {
|
|
if (item instanceof InteractionMultiHeight && item.getBaseItem().getMultiHeights().length > 0) {
|
|
if (item.getExtradata().isEmpty()) {
|
|
item.setExtradata("0");
|
|
}
|
|
|
|
try {
|
|
int index = Integer.valueOf(item.getExtradata()) % (item.getBaseItem().getMultiHeights().length);
|
|
return item.getBaseItem().getMultiHeights()[(item.getExtradata().isEmpty() ? 0 : index)];
|
|
} catch (NumberFormatException e) {
|
|
|
|
}
|
|
}
|
|
|
|
return item.getBaseItem().getHeight();
|
|
}
|
|
|
|
public void update(ResultSet set) throws SQLException {
|
|
this.load(set);
|
|
}
|
|
|
|
private void load(ResultSet set) throws SQLException {
|
|
this.id = set.getInt("id");
|
|
this.spriteId = set.getInt("sprite_id");
|
|
this.name = set.getString("item_name");
|
|
this.fullName = set.getString("public_name");
|
|
this.type = FurnitureType.fromString(set.getString("type"));
|
|
this.width = set.getShort("width");
|
|
this.length = set.getShort("length");
|
|
this.height = set.getDouble("stack_height");
|
|
if (this.height == 0) {
|
|
this.height = 1e-6;
|
|
}
|
|
this.allowStack = set.getBoolean("allow_stack");
|
|
this.allowWalk = set.getBoolean("allow_walk");
|
|
this.allowSit = set.getBoolean("allow_sit");
|
|
this.allowLay = set.getBoolean("allow_lay");
|
|
this.allowRecyle = set.getBoolean("allow_recycle");
|
|
this.allowTrade = set.getBoolean("allow_trade");
|
|
this.allowMarketplace = set.getBoolean("allow_marketplace_sell");
|
|
this.allowGift = set.getBoolean("allow_gift");
|
|
this.allowInventoryStack = set.getBoolean("allow_inventory_stack");
|
|
|
|
this.interactionType = Emulator.getGameEnvironment().getItemManager().getItemInteraction(set.getString("interaction_type").toLowerCase());
|
|
|
|
this.stateCount = set.getShort("interaction_modes_count");
|
|
this.effectM = set.getShort("effect_id_male");
|
|
this.effectF = set.getShort("effect_id_female");
|
|
this.customParams = set.getString("customparams");
|
|
this.clothingOnWalk = set.getString("clothing_on_walk");
|
|
|
|
if (!set.getString("vending_ids").isEmpty()) {
|
|
this.vendingItems = new TIntArrayList();
|
|
String[] vendingIds = set.getString("vending_ids").replace(";", ",").split(",");
|
|
for (String s : vendingIds) {
|
|
this.vendingItems.add(Integer.valueOf(s.replace(" ", "")));
|
|
}
|
|
}
|
|
|
|
//if(this.interactionType.getType() == InteractionMultiHeight.class || this.interactionType.getType().isAssignableFrom(InteractionMultiHeight.class))
|
|
{
|
|
if (set.getString("multiheight").contains(";")) {
|
|
String[] s = set.getString("multiheight").split(";");
|
|
this.multiHeights = new double[s.length];
|
|
|
|
for (int i = 0; i < s.length; i++) {
|
|
this.multiHeights[i] = Double.parseDouble(s[i]);
|
|
}
|
|
} else {
|
|
this.multiHeights = new double[0];
|
|
}
|
|
}
|
|
|
|
this.rotations = 4;
|
|
|
|
try {
|
|
this.rotations = set.getInt("rotations");
|
|
}
|
|
catch (SQLException ignored) { }
|
|
}
|
|
|
|
public int getId() {
|
|
return this.id;
|
|
}
|
|
|
|
public int getSpriteId() {
|
|
return this.spriteId;
|
|
}
|
|
|
|
public String getName() {
|
|
return this.name;
|
|
}
|
|
|
|
public String getFullName() {
|
|
return this.fullName;
|
|
}
|
|
|
|
public FurnitureType getType() {
|
|
return this.type;
|
|
}
|
|
|
|
public int getWidth() {
|
|
return this.width;
|
|
}
|
|
|
|
public int getLength() {
|
|
return this.length;
|
|
}
|
|
|
|
public double getHeight() {
|
|
return this.height;
|
|
}
|
|
|
|
public boolean allowStack() {
|
|
return this.allowStack;
|
|
}
|
|
|
|
public boolean allowWalk() {
|
|
return this.allowWalk;
|
|
}
|
|
|
|
public boolean allowSit() {
|
|
return this.allowSit;
|
|
}
|
|
|
|
public boolean allowLay() {
|
|
return this.allowLay;
|
|
}
|
|
|
|
public boolean allowRecyle() {
|
|
return this.allowRecyle;
|
|
}
|
|
|
|
public boolean allowTrade() {
|
|
return this.allowTrade;
|
|
}
|
|
|
|
public boolean allowMarketplace() {
|
|
return this.allowMarketplace;
|
|
}
|
|
|
|
public boolean allowGift() {
|
|
return this.allowGift;
|
|
}
|
|
|
|
public boolean allowInventoryStack() {
|
|
return this.allowInventoryStack;
|
|
}
|
|
|
|
public int getStateCount() {
|
|
return this.stateCount;
|
|
}
|
|
|
|
public int getEffectM() {
|
|
return this.effectM;
|
|
}
|
|
|
|
public int getEffectF() {
|
|
return this.effectF;
|
|
}
|
|
|
|
public ItemInteraction getInteractionType() {
|
|
return this.interactionType;
|
|
}
|
|
|
|
public TIntArrayList getVendingItems() {
|
|
return this.vendingItems;
|
|
}
|
|
|
|
public int getRandomVendingItem() {
|
|
return this.vendingItems.get(Emulator.getRandom().nextInt(this.vendingItems.size()));
|
|
}
|
|
|
|
public double[] getMultiHeights() {
|
|
return this.multiHeights;
|
|
}
|
|
|
|
public String getCustomParams() {
|
|
return customParams;
|
|
}
|
|
|
|
public String getClothingOnWalk() { return clothingOnWalk; }
|
|
|
|
public int getRotations() {
|
|
return rotations;
|
|
}
|
|
|
|
@Override
|
|
public void serialize(ServerMessage message) {
|
|
message.appendString(this.type.code.toLowerCase());
|
|
|
|
if (type == FurnitureType.BADGE) {
|
|
message.appendString(this.customParams);
|
|
} else {
|
|
message.appendInt(this.spriteId);
|
|
|
|
if (this.getName().contains("wallpaper_single") || this.getName().contains("floor_single") || this.getName().contains("landscape_single")) {
|
|
message.appendString(this.name.split("_")[2]);
|
|
} else if (type == FurnitureType.ROBOT) {
|
|
message.appendString(this.customParams);
|
|
} else if (name.equalsIgnoreCase("poster")) {
|
|
message.appendString(this.customParams);
|
|
} else if (name.startsWith("SONG ")) {
|
|
message.appendString(this.customParams);
|
|
} else {
|
|
message.appendString("");
|
|
}
|
|
|
|
message.appendInt(1); // productCount
|
|
message.appendBoolean(false);
|
|
}
|
|
}
|
|
}
|