package NET.worlds.scape; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; public class NumberAttribute extends Attribute { float value = 0.0F; private static Object classCookie = new Object(); public NumberAttribute(int attrID) { super(attrID); } public NumberAttribute() { } public void set(float x) { this.value = x; this.noteChange(); } public float get() { return this.value; } @Override public void generateNetData(DataOutputStream s) throws IOException { s.writeFloat(this.value); } @Override public void setFromNetData(DataInputStream ds, int len) throws IOException { this.value = ds.readFloat(); } @Override public Object properties(int index, int offset, int mode, Object value) throws NoSuchPropertyException { Object ret = null; switch (index - offset) { case 0: if (mode == 0) { ret = FloatPropertyEditor.make(new Property(this, index, "value")); } else if (mode == 1) { ret = new Float(this.get()); } else if (mode == 2) { this.set((Float)value); } break; default: ret = super.properties(index, offset + 1, mode, value); } return ret; } @Override public void saveState(Saver s) throws IOException { s.saveVersion(0, classCookie); super.saveState(s); s.saveFloat(this.value); } @Override public void restoreState(Restorer r) throws IOException, TooNewException { switch (r.restoreVersion(classCookie)) { case 0: super.restoreState(r); this.value = r.restoreFloat(); this.set(this.value); return; default: throw new TooNewException(); } } @Override public String toString() { return super.toString() + "[" + this.get() + "]"; } }