Subversion Repositories AndroidProjects

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package com.gebauz.burutaru.game.entities;

import com.gebauz.bauzoid.graphics.Font;
import com.gebauz.bauzoid.graphics.sprite.Sprite;
import com.gebauz.bauzoid.graphics.sprite.SpriteInstance;
import com.gebauz.bauzoid.math.Vector4;
import com.gebauz.burutaru.BurutaruCustomServices;
import com.gebauz.burutaru.GameConsts;
import com.gebauz.burutaru.game.GameLogic;
import com.gebauz.burutaru.game.ShipParameters;

public class Hud extends Entity
{
        // Constants========================================================================================
       
        public static final float DIVIDER_WIDTH = 256;
        public static final float DIVIDER_HEIGHT = 32;
       
        public static final float HEALTH_BAR_OUTER_WIDTH = 148;
        public static final float HEALTH_BAR_OUTER_HEIGHT = 14;

        public static final float HEALTH_BAR_INNER_OFFSET = 3;
       
        public static final float DIVIDER_OFFSET = 50;
       
        public static final float SCORE_X = 210 - DIVIDER_OFFSET;
        public static final float SCORE_Y = 5;
       
        public static final float HP_X = 210 - DIVIDER_OFFSET;
        public static final float HP_Y = 8;
       
       
        public static final float FONT_SCALE = 0.7f;
       
        public static final Vector4 FONT_COLOR = new Vector4(0.43f, 0.87f, 0.96f, 0.6f);

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

        // Fields===========================================================================================
       
        private Sprite mHudSprite = null;
        private SpriteInstance mDivider = null;
        private SpriteInstance mHealthBarOuter = null;
        private SpriteInstance mHealthBar = null;
       
        private Font mFont = null;

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

        public Hud(GameLogic gameLogic)
        {
                super(gameLogic);
                mHudSprite = new Sprite(getGraphics(), "data/textures/ui/hud.png", "data/textures/ui/hud.txt");
        }

        @Override
        public void initAsync()
        {
                mHudSprite.initAsync();
        }

        @Override
        public void init()
        {
                mHudSprite.init();
               
                mDivider = mHudSprite.createSpriteInstance(0);
                mHealthBarOuter = mHudSprite.createSpriteInstance(1);
                mHealthBar = mHudSprite.createSpriteInstance(2);
               
                BurutaruCustomServices s = ((BurutaruCustomServices)getGame().getCustomServices());
                mFont = s.getPrettyFont();
        }

        @Override
        public void exit()
        {
                mHudSprite.dispose();
                mDivider = null;
                mHealthBarOuter = null;
                mHealthBar = null;
        }

        @Override
        public void update(float deltaTime)
        {

        }

        @Override
        public void render()
        {
                mDivider.color = FONT_COLOR;
                mHealthBarOuter.color = FONT_COLOR;
                mHealthBar.color = FONT_COLOR;
               
                /*mDivider.transform.set(-DIVIDER_OFFSET, 0, DIVIDER_WIDTH, DIVIDER_HEIGHT, 0, 0, false, false);
                mDivider.render();

                mDivider.transform.set(GameConsts.VIRTUAL_SCREEN_WIDTH+DIVIDER_OFFSET, 0, DIVIDER_WIDTH, DIVIDER_HEIGHT, DIVIDER_WIDTH, 0, true, false);
                mDivider.render();*/

               
                mHealthBarOuter.transform.set(GameConsts.VIRTUAL_SCREEN_WIDTH-HP_X, HP_Y, HEALTH_BAR_OUTER_WIDTH, HEALTH_BAR_OUTER_HEIGHT, 0, 0, false, false);
                mHealthBarOuter.render();
               
                float hpWidth = HEALTH_BAR_OUTER_WIDTH - 2*HEALTH_BAR_INNER_OFFSET;
               
                hpWidth *= (float)getGameLogic().getShipParameters().getHealth() / (float)ShipParameters.DEFAULT_HEALTH;
               
                mHealthBar.transform.set(GameConsts.VIRTUAL_SCREEN_WIDTH-HP_X + HEALTH_BAR_INNER_OFFSET, HP_Y + HEALTH_BAR_INNER_OFFSET,
                                hpWidth, HEALTH_BAR_OUTER_HEIGHT - 2*HEALTH_BAR_INNER_OFFSET, 0, 0, false, false);
               
                mHealthBar.render();
               
                String score = String.format("%012d", 29800);
                float w = mFont.getTextWidth(score, FONT_SCALE);
                mFont.drawText(score, SCORE_X - w, SCORE_Y, FONT_COLOR, FONT_SCALE);
        }
       
        // Getters/Setters==================================================================================

}