package org.terasology.model;
import org.terasology.logic.manager.AssetManager;
import org.terasology.rendering.gui.framework.UIGraphicsElement;
import javax.vecmath.Vector2f;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
/*
* @author bi0hax
* Icons for showing status effects in the buff bar.
*/
public class BuffIcon {
private static Map<String, BuffIcon> bufficons;
private UIGraphicsElement _element;
private int _x;
private int _y;
public BuffIcon() {
_element = new UIGraphicsElement(AssetManager.loadTexture("engine:buffs"));
_element.setSize(new Vector2f(32, 32));
_element.getTextureSize().set(new Vector2f(0.0624f, 0.0624f));
_element.setVisible(true);
_element.setPosition(new Vector2f(-10f, -16f));
setAtlasPosition(0, 0);
}
public static BuffIcon get(String name) {
if (bufficons == null) {
loadIcons();
}
return bufficons.get(name.toLowerCase(Locale.ENGLISH));
}
private static void loadIcons() {
bufficons = new HashMap<String, BuffIcon>();
//* BUFFS & DE·BUFFS *//
BuffIcon poisoned = new BuffIcon();
BuffIcon cured = new BuffIcon();
BuffIcon speed = new BuffIcon();
BuffIcon maxspeed = new BuffIcon();
//* ATLAS POSITIONS *//
//DeBuffs
poisoned.setAtlasPosition(0, 0);
//Buffs
cured.setAtlasPosition(1, 0);
speed.setAtlasPosition(0, 1);
maxspeed.setAtlasPosition(1, 1);
bufficons.put("poisoned", poisoned);
bufficons.put("cured", cured);
bufficons.put("speed", speed);
bufficons.put("maxspeed", maxspeed);
}
//@return x-offset in icon sheet
public int getX() {
return _x;
}
//@return y-offset in icon sheet
public int getY() {
return _y;
}
private void setAtlasPosition(int x, int y) {
_x = x;
_y = y;
if (_element == null) {
return;
}
_element.getTextureOrigin().set(new Vector2f(x * 0.0625f, y * 0.0625f));
}
}