Search in sources :

Example 1 with AnimationPackParseException

use of org.andengine.util.animationpack.exception.AnimationPackParseException in project AndEngine by nicolasgramlich.

the class AnimationPackLoader method load.

public AnimationPack load(final InputStream pInputStream, final String pAssetBasePath) throws AnimationPackParseException {
    try {
        final SAXParserFactory spf = SAXParserFactory.newInstance();
        final SAXParser sp = spf.newSAXParser();
        final XMLReader xr = sp.getXMLReader();
        final AnimationPackParser animationPackParser = new AnimationPackParser(this.mAssetManager, pAssetBasePath, this.mTextureManager);
        xr.setContentHandler(animationPackParser);
        xr.parse(new InputSource(new BufferedInputStream(pInputStream)));
        return animationPackParser.getAnimationPack();
    } catch (final SAXException e) {
        throw new AnimationPackParseException(e);
    } catch (final ParserConfigurationException pe) {
        /* Doesn't happen. */
        return null;
    } catch (final IOException e) {
        throw new AnimationPackParseException(e);
    } finally {
        StreamUtils.close(pInputStream);
    }
}
Also used : InputSource(org.xml.sax.InputSource) BufferedInputStream(java.io.BufferedInputStream) AnimationPackParseException(org.andengine.util.animationpack.exception.AnimationPackParseException) SAXParser(javax.xml.parsers.SAXParser) ParserConfigurationException(javax.xml.parsers.ParserConfigurationException) IOException(java.io.IOException) XMLReader(org.xml.sax.XMLReader) SAXParserFactory(javax.xml.parsers.SAXParserFactory) SAXException(org.xml.sax.SAXException)

Example 2 with AnimationPackParseException

use of org.andengine.util.animationpack.exception.AnimationPackParseException in project AndEngine by nicolasgramlich.

the class AnimationPackParser method endElement.

@Override
public void endElement(final String pUri, final String pLocalName, final String pQualifiedName) throws SAXException {
    if (pLocalName.equals(AnimationPackParser.TAG_ANIMATIONPACK)) {
    /* Nothing. */
    } else if (pLocalName.equals(AnimationPackParser.TAG_TEXTUREPACKS)) {
    /* Nothing. */
    } else if (pLocalName.equals(AnimationPackParser.TAG_TEXTUREPACK)) {
    /* Nothing. */
    } else if (pLocalName.equals(AnimationPackParser.TAG_ANIMATIONS)) {
    /* Nothing. */
    } else if (pLocalName.equals(AnimationPackParser.TAG_ANIMATION)) {
        final int currentAnimationFrameFrameCount = this.mCurrentAnimationFrameDurations.size();
        final long[] frameDurations = this.mCurrentAnimationFrameDurations.toArray();
        final TexturePackTextureRegion[] textureRegions = new TexturePackTextureRegion[currentAnimationFrameFrameCount];
        this.mCurrentAnimationFrameTexturePackTextureRegions.toArray(textureRegions);
        final AnimationPackTiledTextureRegion animationPackTiledTextureRegion = new AnimationPackTiledTextureRegion(this.mCurrentAnimationName, frameDurations, this.mCurrentAnimationLoopCount, textureRegions[0].getTexture(), textureRegions);
        this.mAnimationPackTiledTextureRegionLibrary.put(animationPackTiledTextureRegion);
        this.mCurrentAnimationName = null;
        this.mCurrentAnimationLoopCount = IAnimationData.LOOP_CONTINUOUS;
        this.mCurrentAnimationFrameDurations.clear();
        this.mCurrentAnimationFrameTexturePackTextureRegions.clear();
    } else if (pLocalName.equals(AnimationPackParser.TAG_ANIMATIONFRAME)) {
    /* Nothing. */
    } else {
        throw new AnimationPackParseException("Unexpected end tag: '" + pLocalName + "'.");
    }
}
Also used : TexturePackTextureRegion(org.andengine.util.texturepack.TexturePackTextureRegion) AnimationPackParseException(org.andengine.util.animationpack.exception.AnimationPackParseException)

Example 3 with AnimationPackParseException

use of org.andengine.util.animationpack.exception.AnimationPackParseException in project AndEngine by nicolasgramlich.

the class AnimationPackParser method startElement.

// ===========================================================
// Methods for/from SuperClass/Interfaces
// ===========================================================
@Override
public void startElement(final String pUri, final String pLocalName, final String pQualifiedName, final Attributes pAttributes) throws SAXException {
    if (pLocalName.equals(AnimationPackParser.TAG_ANIMATIONPACK)) {
        final int version = SAXUtils.getIntAttributeOrThrow(pAttributes, AnimationPackParser.TAG_ANIMATIONPACK_ATTRIBUTE_VERSION);
        if (version != 1) {
            throw new AnimationPackParseException("Unexpected version: '" + version + "'.");
        }
        this.mTexturePackLoader = new TexturePackLoader(this.mAssetManager, this.mTextureManager);
        this.mTexturePackLibrary = new TexturePackLibrary();
        this.mAnimationPackTiledTextureRegionLibrary = new AnimationPackTiledTextureRegionLibrary();
        this.mAnimationPack = new AnimationPack(this.mTexturePackLibrary, this.mAnimationPackTiledTextureRegionLibrary);
    } else if (pLocalName.equals(AnimationPackParser.TAG_TEXTUREPACKS)) {
    /* Nothing. */
    } else if (pLocalName.equals(AnimationPackParser.TAG_TEXTUREPACK)) {
        final String texturePackName = SAXUtils.getAttributeOrThrow(pAttributes, AnimationPackParser.TAG_TEXTUREPACK_ATTRIBUTE_FILENAME);
        final String texturePackPath = this.mAssetBasePath + texturePackName;
        final TexturePack texturePack = this.mTexturePackLoader.loadFromAsset(texturePackPath, this.mAssetBasePath);
        this.mTexturePackLibrary.put(texturePackName, texturePack);
        texturePack.loadTexture();
    } else if (pLocalName.equals(AnimationPackParser.TAG_ANIMATIONS)) {
    /* Nothing. */
    } else if (pLocalName.equals(AnimationPackParser.TAG_ANIMATION)) {
        this.mCurrentAnimationName = SAXUtils.getAttributeOrThrow(pAttributes, AnimationPackParser.TAG_ANIMATION_ATTRIBUTE_NAME);
        this.mCurrentAnimationLoopCount = SAXUtils.getIntAttribute(pAttributes, AnimationPackParser.TAG_ANIMATION_ATTRIBUTE_LOOPCOUNT, IAnimationData.LOOP_CONTINUOUS);
    } else if (pLocalName.equals(AnimationPackParser.TAG_ANIMATIONFRAME)) {
        final int duration = SAXUtils.getIntAttributeOrThrow(pAttributes, AnimationPackParser.TAG_ANIMATIONFRAME_ATTRIBUTE_DURATION);
        this.mCurrentAnimationFrameDurations.add(duration);
        final String textureRegionName = SAXUtils.getAttributeOrThrow(pAttributes, AnimationPackParser.TAG_ANIMATIONFRAME_ATTRIBUTE_TEXTUREREGION);
        final TexturePackTextureRegion texturePackTextureRegion = this.mTexturePackLibrary.getTexturePackTextureRegion(textureRegionName);
        this.mCurrentAnimationFrameTexturePackTextureRegions.add(texturePackTextureRegion);
    } else {
        throw new AnimationPackParseException("Unexpected tag: '" + pLocalName + "'.");
    }
}
Also used : TexturePackLoader(org.andengine.util.texturepack.TexturePackLoader) TexturePack(org.andengine.util.texturepack.TexturePack) AnimationPackParseException(org.andengine.util.animationpack.exception.AnimationPackParseException) TexturePackTextureRegion(org.andengine.util.texturepack.TexturePackTextureRegion) TexturePackLibrary(org.andengine.util.texturepack.TexturePackLibrary)

Aggregations

AnimationPackParseException (org.andengine.util.animationpack.exception.AnimationPackParseException)3 TexturePackTextureRegion (org.andengine.util.texturepack.TexturePackTextureRegion)2 BufferedInputStream (java.io.BufferedInputStream)1 IOException (java.io.IOException)1 ParserConfigurationException (javax.xml.parsers.ParserConfigurationException)1 SAXParser (javax.xml.parsers.SAXParser)1 SAXParserFactory (javax.xml.parsers.SAXParserFactory)1 TexturePack (org.andengine.util.texturepack.TexturePack)1 TexturePackLibrary (org.andengine.util.texturepack.TexturePackLibrary)1 TexturePackLoader (org.andengine.util.texturepack.TexturePackLoader)1 InputSource (org.xml.sax.InputSource)1 SAXException (org.xml.sax.SAXException)1 XMLReader (org.xml.sax.XMLReader)1