Subversion Repositories AndroidProjects

Rev

Blame | Last modification | View Log | RSS feed

package com.gebauz.burutaru.game.entities;

import java.util.Vector;

import com.gebauz.bauzoid.graphics.sprite.Sprite;
import com.gebauz.bauzoid.graphics.sprite.SpriteInstance;
import com.gebauz.bauzoid.math.MathUtil;
import com.gebauz.burutaru.game.GameLogic;

public class Explosions extends Entity
{

        // Constants========================================================================================
       
        public static final float EXPLO_LIFETIME = 1.0f;
        public static final float EXPLO_SIZE = 80.0f;
       
        // Embedded Types===================================================================================
       
        public class Instance
        {
                // Fields=======================================================================================
               
                private float mLifeTime = 0.0f;
                private SpriteInstance mSpriteInstance = null;

                // Methods======================================================================================
               
                public Instance(float x, float y, float size)
                {
                        mSpriteInstance = mExploSprite.createSpriteInstanceForAll();
                       
                        mSpriteInstance.transform.x = x;
                        mSpriteInstance.transform.y = y;
                        mSpriteInstance.transform.w = size;
                        mSpriteInstance.transform.h = size;
                        mSpriteInstance.transform.centerPivot();
                }
               
                public void update(float deltaTime)
                {
                        if (isAlive())
                        {
                                mLifeTime += deltaTime;

                                int frame = (int)(MathUtil.clamp(mLifeTime / EXPLO_LIFETIME, 0.0f, 1.0f) * mSpriteInstance.getNumFrames());
                                mSpriteInstance.setCurrentFrame(frame);
                        }
                }
               
                public void render()
                {
                        if (isAlive())
                        {                              
                                mSpriteInstance.render();
                        }
                }
               
                // Getters/Setters==============================================================================
               
                public final boolean isAlive()
                {
                        return (mLifeTime <= EXPLO_LIFETIME);
                }
               
        }

        // Fields===========================================================================================
       
        private Sprite mExploSprite = null;
       
        private Vector<Instance> mExplosions = new Vector<Instance>();

        // Methods==========================================================================================
       
        public Explosions(GameLogic gameLogic)
        {
                super(gameLogic);
                mExploSprite = new Sprite(getGraphics(), "data/textures/explosion.png", "data/textures/explosion.txt");
        }

        @Override
        public void initAsync()
        {
                mExploSprite.initAsync();

        }

        @Override
        public void init()
        {
                mExploSprite.init();

        }

        @Override
        public void exit()
        {
                mExploSprite.dispose();
        }

        @Override
        public void update(float deltaTime)
        {
                int i = 0;
                while (i < mExplosions.size())
                {
                        mExplosions.get(i).update(deltaTime);
                       
                        if (!mExplosions.get(i).isAlive())
                        {
                                mExplosions.remove(i);
                                continue;
                        }
                        ++i;
                }
        }

        @Override
        public void render()
        {
                for (int i = 0; i < mExplosions.size(); i++)
                {
                        mExplosions.get(i).render();
                }
        }
       
        public void spawn(float x, float y, float size)
        {
                mExplosions.add(new Instance(x, y, size));
               
                //mExploSound.play();
        }
       
        // Getters/Setters==================================================================================

}