MXD-Server/src/client/inventory/Item.java

302 lines
7.6 KiB
Java

package client.inventory;
import constants.GameConstants;
import server.MapleItemInformationProvider;
import java.io.Serializable;
public class Item implements IItem, Serializable {
private int id;
private short position;
private short quantity;
private byte flag;
private long expiration;
private long inventoryitemid;
private MaplePet pet;
private int uniqueid;
private long equipOnlyId;
private String owner;
private String GameMaster_log;
private String giftFrom;
protected MapleRing ring;
public Item(final int id, final short position, final short quantity, final byte flag, final int uniqueid) {
this.expiration = -1L;
this.inventoryitemid = 0L;
this.pet = null;
this.uniqueid = -1;
this.equipOnlyId = -1L;
this.owner = "";
this.GameMaster_log = null;
this.giftFrom = "";
this.ring = null;
this.id = id;
this.position = position;
this.quantity = quantity;
this.flag = flag;
this.uniqueid = uniqueid;
this.equipOnlyId = -1L;
}
public Item(final int id, final short position, final short quantity, final byte flag) {
this.expiration = -1L;
this.inventoryitemid = 0L;
this.pet = null;
this.uniqueid = -1;
this.equipOnlyId = -1L;
this.owner = "";
this.GameMaster_log = null;
this.giftFrom = "";
this.ring = null;
this.id = id;
this.position = position;
this.quantity = quantity;
this.flag = flag;
this.equipOnlyId = -1L;
}
@Override
public Item copyWithQuantity(final short qq) {
final Item ret = new Item(this.id, this.position, qq, this.flag, this.uniqueid);
ret.pet = this.pet;
ret.owner = this.owner;
ret.GameMaster_log = this.GameMaster_log;
ret.expiration = this.expiration;
ret.giftFrom = this.giftFrom;
ret.equipOnlyId = this.equipOnlyId;
return ret;
}
public Item(final int id, final byte position, final short quantity) {
this.expiration = -1L;
this.inventoryitemid = 0L;
this.pet = null;
this.uniqueid = -1;
this.equipOnlyId = -1L;
this.owner = "";
this.GameMaster_log = null;
this.giftFrom = "";
this.ring = null;
this.id = id;
this.position = (short) position;
this.quantity = quantity;
this.equipOnlyId = -1L;
}
@Override
public IItem copy() {
final Item ret = new Item(this.id, this.position, this.quantity, this.flag, this.uniqueid);
ret.pet = this.pet;
ret.owner = this.owner;
ret.GameMaster_log = this.GameMaster_log;
ret.expiration = this.expiration;
ret.giftFrom = this.giftFrom;
ret.quantity = this.quantity;
ret.equipOnlyId = this.equipOnlyId;
return ret;
}
@Override
public final void setPosition(final short position) {
this.position = position;
if (this.pet != null) {
this.pet.setInventoryPosition(position);
}
}
@Override
public void setQuantity(final short quantity) {
this.quantity = quantity;
}
@Override
public final int getItemId() {
return this.id;
}
@Override
public void setItemId(final int ui) {
this.id = ui;
}
@Override
public final short getPosition() {
return this.position;
}
@Override
public final byte getFlag() {
return this.flag;
}
@Override
public final short getQuantity() {
return this.quantity;
}
@Override
public byte getType() {
return 2;
}
@Override
public final String getOwner() {
return this.owner;
}
@Override
public final void setOwner(final String owner) {
this.owner = owner;
}
@Override
public final void setFlag(final byte flag) {
this.flag = flag;
}
public final void setLocked(final byte flag) {
if (flag == 1) {
this.setFlag((byte) ItemFlag.LOCK.getValue());
} else if (flag == 0) {
this.setFlag((byte) (this.getFlag() - ItemFlag.LOCK.getValue()));
}
}
public final boolean getLocked() {
return this.flag == ItemFlag.LOCK.getValue();
}
@Override
public final long getExpiration() {
return this.expiration;
}
@Override
public final void setExpiration(final long expire) {
this.expiration = expire;
}
@Override
public final String getGMLog() {
return this.GameMaster_log;
}
@Override
public void setGMLog(final String GameMaster_log) {
this.GameMaster_log = GameMaster_log;
}
@Override
public final int getUniqueId() {
return this.uniqueid;
}
@Override
public final void setUniqueId(final int id) {
this.uniqueid = id;
}
@Override
public boolean hasSetOnlyId() {
final MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance();
return this.uniqueid <= 0 && !ii.isCash(this.id) && this.id / 1000000 == 1 && this.equipOnlyId <= 0L;
}
@Override
public long getEquipOnlyId() {
return this.equipOnlyId;
}
@Override
public void setEquipOnlyId(final long OnlyId) {
this.equipOnlyId = OnlyId;
}
@Override
public final long getInventoryId() {
return this.inventoryitemid;
}
@Override
public void setInventoryId(final long ui) {
this.inventoryitemid = ui;
}
@Override
public final MaplePet getPet() {
return this.pet;
}
public final void setPet(final MaplePet pet) {
this.pet = pet;
}
@Override
public void setGiftFrom(final String gf) {
this.giftFrom = gf;
}
@Override
public String getGiftFrom() {
return this.giftFrom;
}
@Override
public int compareTo(final IItem other) {
if (Math.abs((int) this.position) < Math.abs((int) other.getPosition())) {
return -1;
}
if (Math.abs((int) this.position) == Math.abs((int) other.getPosition())) {
return 0;
}
return 1;
}
@Override
public boolean equals(final Object obj) {
if (!(obj instanceof IItem)) {
return false;
}
final IItem ite = (IItem) obj;
return this.uniqueid == ite.getUniqueId() && this.id == ite.getItemId() && this.quantity == ite.getQuantity() && Math.abs((int) this.position) == Math.abs((int) ite.getPosition());
}
@Override
public int hashCode() {
int hash = 3;
hash = 97 * hash + this.id;
hash = 97 * hash + this.position;
hash = 97 * hash + this.quantity;
hash = 97 * hash + this.uniqueid;
return hash;
}
@Override
public String toString() {
return "物品: " + this.id + " 数量: " + (int) this.quantity;
}
@Override
public MapleRing getRing() {
if (!GameConstants.isEffectRing(this.id) || this.getUniqueId() <= 0) {
return null;
}
if (this.ring == null) {
this.ring = MapleRing.loadFromDb(this.getUniqueId(), this.position < 0);
}
return this.ring;
}
public void setRing(final MapleRing ring) {
this.ring = ring;
}
public final void setLoEQed(final byte flag) {
if (flag == 1) {
this.setFlag((byte) ItemFlag.KARMA_EQ.getValue());
} else if (flag == 0) {
this.setFlag((byte) (this.getFlag() - ItemFlag.KARMA_EQ.getValue()));
}
}
}