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 ENEMY_HP_W = GameConsts.
VIRTUAL_SCREEN_WIDTH -
40;
public static final float ENEMY_HP_H =
10;
public static final float ENEMY_HP_X =
20;
public static final float ENEMY_HP_Y = GameConsts.
VIRTUAL_SCREEN_HEIGHT - ENEMY_HP_H -
20;
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 float mCurrentEnemyHp = 0.0f
;
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();*/
renderHealthBar
(GameConsts.
VIRTUAL_SCREEN_WIDTH-HP_X, HP_Y, HEALTH_BAR_OUTER_WIDTH, HEALTH_BAR_OUTER_HEIGHT,
(float)getGameLogic
().
getShipParameters().
getHealth() /
(float)ShipParameters.
DEFAULT_HEALTH);
if (mCurrentEnemyHp
> 0.0f
)
{
renderHealthBar
(ENEMY_HP_X, ENEMY_HP_Y, ENEMY_HP_W, ENEMY_HP_H, mCurrentEnemyHp
);
}
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
);
}
public void renderHealthBar
(float x,
float y,
float w,
float h,
float health
)
{
mHealthBarOuter.
color = FONT_COLOR
;
mHealthBar.
color = FONT_COLOR
;
mHealthBarOuter.
transform.
set(x, y, w, h,
0,
0,
false,
false);
mHealthBarOuter.
render();
float hpWidth = w -
2*HEALTH_BAR_INNER_OFFSET
;
hpWidth
*= health
;
mHealthBar.
transform.
set(x + HEALTH_BAR_INNER_OFFSET, y + HEALTH_BAR_INNER_OFFSET,
hpWidth, h -
2*HEALTH_BAR_INNER_OFFSET,
0,
0,
false,
false);
mHealthBar.
render();
}
public void setCurrentEnemyHp
(float health
)
{
mCurrentEnemyHp = health
;
}
// Getters/Setters==================================================================================
}