package org.terasology.rendering.gui.components; import org.terasology.components.CharacterMovementComponent; import org.terasology.components.CuredComponent; import org.terasology.components.SpeedBoostComponent; import org.terasology.entitySystem.EntityManager; import org.terasology.entitySystem.EntityRef; import org.terasology.game.CoreRegistry; import org.terasology.logic.LocalPlayer; import org.terasology.logic.manager.AssetManager; import org.terasology.rendering.gui.framework.UIDisplayContainer; import org.terasology.rendering.gui.framework.UIGraphicsElement; import javax.vecmath.Vector2f; /* * For Status Effects that don't affect the hearts */ public class UIBuff extends UIDisplayContainer { private final UIGraphicsElement _speedbuff; private final UIGraphicsElement _curedbuff; protected EntityRef entity; protected EntityManager entityManager; public UIBuff() { setSize(new Vector2f(280f, 28f)); // Create speed buff icon. _speedbuff = new UIGraphicsElement(AssetManager.loadTexture("engine:buffs")); _speedbuff.getTextureSize().set(new Vector2f(16f / 256f, 16f / 256f)); _speedbuff.getTextureOrigin().set(new Vector2f(0.0f / 256f, 16f / 256f)); _speedbuff.setSize(new Vector2f(18f, 18f)); _speedbuff.setPosition(new Vector2f(18f, 18f)); // Create speed buff icon. _curedbuff = new UIGraphicsElement(AssetManager.loadTexture("engine:buffs")); _curedbuff.getTextureSize().set(new Vector2f(16f / 256f, 16f / 256f)); _curedbuff.getTextureOrigin().set(new Vector2f(16f / 256f, 0.0f / 256f)); _curedbuff.setSize(new Vector2f(18f, 18f)); _curedbuff.setPosition(new Vector2f(50f, 18f)); addDisplayElement(_curedbuff); addDisplayElement(_speedbuff); } @Override public void update() { super.update(); SpeedBoostComponent speed = CoreRegistry.get(LocalPlayer.class).getEntity().getComponent(SpeedBoostComponent.class); CharacterMovementComponent charmov = CoreRegistry.get(LocalPlayer.class).getEntity().getComponent(CharacterMovementComponent.class); CuredComponent cured = CoreRegistry.get(LocalPlayer.class).getEntity().getComponent(CuredComponent.class); entityManager = CoreRegistry.get(EntityManager.class); //Speed Boost for (EntityRef entity : entityManager.iteratorEntities(SpeedBoostComponent.class)) { if (speed.speedBoostDuration >= 1) { _speedbuff.setVisible(true); if (charmov.isRunning) { _speedbuff.getTextureOrigin().set(new Vector2f(16f / 256f, 16f / 256f)); } else _speedbuff.getTextureOrigin().set(new Vector2f(0.0f / 256f, 16f / 256f)); } else _speedbuff.setVisible(false); } //Poison Immunity for (EntityRef entity : entityManager.iteratorEntities(CuredComponent.class)) { if (cured.cureDuration >= 1) { _curedbuff.setVisible(true); _curedbuff.getTextureOrigin().set(new Vector2f(16f / 256f, 0.0f / 256f)); } else _curedbuff.setVisible(false); } } }