/* * Copyright (C) 2010 Medo <smaxein@googlemail.com> * * This file is part of GmkSplitter. * GmkSplitter is free software and comes with ABSOLUTELY NO WARRANTY. * See LICENSE for details. */ package com.ganggarrison.gmdec.xml; import org.lateralgm.resources.Sound; import org.lateralgm.resources.Sound.PSound; import com.ganggarrison.easyxml.XmlReader; import com.ganggarrison.easyxml.XmlWriter; import com.ganggarrison.gmdec.DeferredReferenceCreatorNotifier; public class SoundXmlFormat extends XmlFormat<Sound> { @Override public void write(Sound sound, XmlWriter writer) { writer.startElement("sound"); { writeIdAttribute(sound, writer); writer.putElement("filename", sound.get(PSound.FILE_NAME)); writer.putElement("filetype", sound.get(PSound.FILE_TYPE)); writer.putElement("kind", sound.get(PSound.KIND)); writer.putElement("pan", sound.get(PSound.PAN)); writer.putElement("volume", sound.get(PSound.VOLUME)); writer.putElement("preload", sound.get(PSound.PRELOAD)); writer.startElement("effects"); { writer.putElement("chorus", sound.get(PSound.CHORUS)); writer.putElement("echo", sound.get(PSound.ECHO)); writer.putElement("flanger", sound.get(PSound.FLANGER)); writer.putElement("gargle", sound.get(PSound.GARGLE)); writer.putElement("reverb", sound.get(PSound.REVERB)); } writer.endElement(); } writer.endElement(); } @Override public Sound read(XmlReader reader, DeferredReferenceCreatorNotifier notifier) { Sound sound = new Sound(); reader.enterElement("sound"); { readIdAttribute(sound, reader); sound.put(PSound.FILE_NAME, reader.getStringElement("filename")); sound.put(PSound.FILE_TYPE, reader.getStringElement("filetype")); String kind = reader.getStringElement("kind"); sound.put(PSound.KIND, Sound.SoundKind.valueOf(kind)); sound.put(PSound.PAN, reader.getDoubleElement("pan")); sound.put(PSound.VOLUME, reader.getDoubleElement("volume")); sound.put(PSound.PRELOAD, reader.getBoolElement("preload")); reader.enterElement("effects"); { sound.put(PSound.CHORUS, reader.getBoolElement("chorus")); sound.put(PSound.ECHO, reader.getBoolElement("echo")); sound.put(PSound.FLANGER, reader.getBoolElement("flanger")); sound.put(PSound.GARGLE, reader.getBoolElement("gargle")); sound.put(PSound.REVERB, reader.getBoolElement("reverb")); } reader.leaveElement(); } reader.leaveElement(); return sound; } }