Subversion Repositories AndroidProjects

Rev

Blame | Last modification | View Log | RSS feed

package com.gebauz.bauzoid.menu;

import com.gebauz.bauzoid.game.Game;
import com.gebauz.bauzoid.graphics.sprite.Sprite;
import com.gebauz.bauzoid.parser.ScanException;
import com.gebauz.bauzoid.parser.Tokenizer;

/** Implements a Button using an Image and Text.
 *
 * This kind of button has several semantic changes over the regular Button class:
 * - position, size, align refer to the image used
 * - The text has its own position (relative to the upper-left edge of the Image)
 * - The text has its own alignment
 *
 *
 * @author chiu
 *
 */

public class ImageButton extends Button
{
        // Constants========================================================================================

        // Embedded Types===================================================================================

        // Fields===========================================================================================
       
        private String mTextureName = "";
        private String mPushTextureName = "";

        private Sprite mImage = null;
        private Sprite mPushImage = null;

        // Methods==========================================================================================

        public ImageButton(Game game, Menu parent, String name)
        {
                super(game, parent, name);
        }
       
        @Override
        public void init()
        {
                super.init();
               
                //mImage = new Sprite(getGame().getGraphics(), new Texture(Gdx.files.internal(mTextureName)));
                mImage = new Sprite(getGame().getGraphics(), mTextureName);
                mImage.init();
                Image.setSpriteProperties(mImage, this);
               
                if (!mPushTextureName.isEmpty())
                {
                        //mPushImage = new Sprite(getGame().getGraphics(), new Texture(Gdx.files.internal(mPushTextureName)));
                        mPushImage = new Sprite(getGame().getGraphics(), mPushTextureName);
                        mPushImage.init();
               
                        if (mPushImage != null)
                                Image.setSpriteProperties(mPushImage, this);
                }
        }
       
        @Override
        public void exit()
        {
                if (mImage != null)
                {
                        mImage.dispose();
                        mImage = null;
                }
               
                if (mPushImage != null)
                {
                        mPushImage.dispose();
                        mPushImage = null;
                }
               
                super.exit();
        }
       
        @Override
        public void update(float deltaTime)
        {
                super.update(deltaTime);
               
                mImage.update(deltaTime);              
                Image.setSpriteProperties(mImage, this);
                if (mPushImage != null)
                {
                        Image.setSpriteProperties(mPushImage, this);
                        mPushImage.update(deltaTime);
                }
        }
       
        @Override
        public void render()
        {
                if (isButtonDown() && (mPushImage != null))
                        mPushImage.render();
                else
                        mImage.render();

                super.render();
        }
       
        public boolean parseLine(String identifier, Tokenizer tokenizer) throws ScanException  
        {
                if (identifier.equalsIgnoreCase("texture"))
                {
                        mTextureName = MenuUtil.parseString(tokenizer);
                }
                else if (identifier.equalsIgnoreCase("pushTexture"))
                {
                        mPushTextureName = MenuUtil.parseString(tokenizer);
                }
                else
                {
                        return super.parseLine(identifier, tokenizer);
                }              
                return true;
        }
       
        // Getters/Setters==================================================================================
       
}