package com.aionemu.packetsamurai.parser.datatree; import java.io.DataOutput; import java.io.IOException; import java.nio.ByteBuffer; import com.aionemu.packetsamurai.parser.DataStructure.DataPacketMode; import com.aionemu.packetsamurai.parser.formattree.Part; /** * * @author Gilles Duboscq * */ public class DoubleValuePart extends ValuePart { private double _double; public DoubleValuePart(DataTreeNodeContainer parent, Part part) { super(parent, part); } @Override public void parse(ByteBuffer buf) { if(this.getMode() == DataPacketMode.FORGING) throw new IllegalStateException("Can not parse on a Forging mode Data Packet Tree element"); _double = buf.getDouble(); // sets the raw bytes _bytes = new byte[8]; buf.position(buf.position()-8); buf.get(_bytes); } @Override public void forge(DataOutput stream) throws IOException { if(this.getMode() == DataPacketMode.PARSING) throw new IllegalStateException("Can not call forge on a Parsing mode Data Packet Tree element"); stream.writeDouble(_double); } public void setDoubleValue(double d) { if(this.getMode() == DataPacketMode.PARSING) throw new IllegalStateException("Can not set value on a Parsing mode Data Packet Tree element"); _double = d; } public double getDoubleValue() { return _double; } @Override public String getValueAsString() { return String.valueOf(_double); } }