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 FloatValuePart extends ValuePart
{
private float _float;
public FloatValuePart(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");
_float = buf.getFloat();
// sets the raw bytes
_bytes = new byte[4];
buf.position(buf.position()-4);
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(_float);
}
public void setFloatValue(float d)
{
if(this.getMode() == DataPacketMode.PARSING)
throw new IllegalStateException("Can not set value on a Parsing mode Data Packet Tree element");
_float = d;
}
public float getFloatValue()
{
return _float;
}
@Override
public String getValueAsString()
{
return String.valueOf(_float);
}
}