/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package transientlibs.preui.objects.states;
import transientlibs.processors.misc.Detonator;
import transientlibs.preui.objects.gui.elements.ButtonGroup;
import transientlibs.preui.objects.gui.interfaces.IFont;
import transientlibs.preui.objects.gui.interfaces.IImage;
import transientlibs.preui.objects.gui.interfaces.IMarker;
import transientlibs.preui.objects.gui.elements.InfoGroup;
import transientlibs.preui.objects.gui.elements.Marker;
import transientlibs.preui.objects.gui.elements.Menu;
import transientlibs.preui.objects.gui.elements.TextInfo;
import transientlibs.preui.objects.gui.elements.TextMarker;
import transientlibs.preui.objects.gui.misc.RenderList;
/**
*
* @author kibertoad
*/
public class StateElementManager {
private IState state;
public StateElementManager(IState setState) {
state = setState;
}
public void passGroup(ButtonGroup group) {
group.currentState = state;
Menu.LastMenu = group;
passMarker(group);
}
public TextMarker addTextMarker(int setx, int sety, String setText) {
TextMarker.lastTextMarker = new TextMarker(null, null, setx, sety, -1);
TextMarker.lastTextMarker.setFont(state.getTextFont());
TextMarker.lastTextMarker.setText(setText);
TextMarker.lastTextMarker.imageWidth = TextMarker.lastTextMarker.textWidth();
TextMarker.lastTextMarker.imageHeight = TextMarker.lastTextMarker.textHeight();
state.getDrawStorage().add(TextMarker.lastTextMarker);
state.getHoverStorage().add(TextMarker.lastTextMarker);
TextMarker.lastTextMarker.maximizeCompositionPriority(state.getHoverStorage());
return TextMarker.lastTextMarker;
}
public void removeFromDrawStorage(RenderList r) {
for (IMarker m : r.markers) {
if (state.getDrawStorage().contains(m)) {
state.getDrawStorage().remove(m);
}
}
for (Menu m2 : r.menus) {
if (state.getDrawStorage().contains(m2)) {
state.getDrawStorage().remove(m2);
}
}
}
void removeFromHoverStorage(RenderList r) {
for (IMarker m : r.markers) {
if (state.getHoverStorage().contains(m)) {
state.getHoverStorage().remove(m);
}
}
for (Menu m2 : r.menus) {
if (state.getHoverStorage().contains(m2)) {
state.getHoverStorage().remove(m2);
}
}
}
public void removeChildrenFromDrawStorage(Menu m) {
for (IMarker m2 : m.elements) {
if (state.getDrawStorage().contains(m2)) {
state.getDrawStorage().remove(m2);
}
}
}
public InfoGroup addInfoGroup(int setX, int setY) {
InfoGroup.lastInfoGroup = new InfoGroup(setX, setY, state.getButtonFont(), state);
passMarker(InfoGroup.lastInfoGroup);
return InfoGroup.lastInfoGroup;
}
public IMarker addTextMarker(IFont setFont, IImage setImage, IImage setHoveredImage, String setText, int setX, int setY, int setID) {
state.getDrawStorage().add(new TextMarker(setImage, setHoveredImage, setX, setY, setID));
TextMarker.lastTextMarker = (TextMarker) state.getDrawStorage().get((state.getDrawStorage().size() - 1));
state.getHoverStorage().add(0, TextMarker.lastTextMarker);
TextMarker.lastTextMarker.textCapsule.text = setText;
TextMarker.lastTextMarker.setFont(setFont); //also rewraps
return TextMarker.lastTextMarker;
}
public void passMarker(IMarker marker) {
state.getHoverStorage().add(0, marker);
state.getDrawStorage().add(marker);
}
void passMarkerHoverOnly(IMarker marker) {
if (!(state.getHoverStorage().contains(marker))) {
state.getHoverStorage().add(0, marker);
}
}
public void storeInfo() {
}
public TextInfo addInfo(int x, int y, String setText) {
return addInfo(x, y, setText, state.getTextFont());
}
public TextInfo addInfo(int x, int y, String setText, IFont setFont) {
state.getDrawStorage().add(new TextInfo(x, y, setText, -1, setFont));
TextMarker.lastTextMarker = (TextMarker) state.getDrawStorage().get((state.getDrawStorage()).size() - 1);
state.getHoverStorage().add(TextMarker.lastTextMarker);
return (TextInfo) TextMarker.lastTextMarker;
}
public ButtonGroup addGroup(int setX, int setY, IImage setImage, IFont font) {
ButtonGroup.lastButtonGroup = new ButtonGroup(setX, setY, setImage, font, state);
Menu.LastMenu = ButtonGroup.lastButtonGroup;
passMarker(ButtonGroup.lastButtonGroup);
return ButtonGroup.lastButtonGroup;
}
ButtonGroup addGroup(int x, int y) {
return addGroup(x, y, null, state.getButtonFont());
}
public IMarker addMarker(IImage setImage, IImage setHoveredImage, int setX, int setY) {
state.getDrawStorage().add(new Marker(setImage, setHoveredImage, setX, setY));
Marker.lastMarker = state.getDrawStorage().get((state.getDrawStorage().size() - 1));
state.getHoverStorage().add(0, TextMarker.lastMarker);
return Marker.lastMarker;
}
void removeFromDrawStorage(IMarker m) {
if (state.getDrawStorage().contains(m)) {
state.getDrawStorage().remove(m);
}
}
void passMarkerMinorHoverOnly(IMarker passedMarker) {
state.getMinorHoverStorage().add(passedMarker);
}
}