package com.alastar.game.gui; import ru.alastar.net.Client; import com.alastar.game.GameManager; import com.alastar.game.MainScreen; import com.alastar.game.gui.net.NetGUIAnswer; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.math.Vector3; import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.EventListener; import com.badlogic.gdx.scenes.scene2d.ui.SelectBox; import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; import com.badlogic.gdx.utils.Array; public class GUIDropdown implements GUIElement { private String name; private SelectBox<String> box; public GUIDropdown() { this.name = "GenericBox"; this.box = new SelectBox<String>( GameManager.getSkin(GameManager.selectedSkin), "box"); this.box.setItems("Close"); this.box.setSelectedIndex(0); ChangeListener listener = new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { NetGUIAnswer r = new NetGUIAnswer(); r.name = name; r.value = box.getSelected(); System.out.println(r.value); Client.Send(r); } }; this.box.addListener(listener); } public GUIDropdown(final String n, SelectBox<String> l, EventListener e) { this.name = n; this.box = l; this.box.addListener(e); this.box.setItems("Close"); this.box.setSelectedIndex(0); } @Override public Actor getElementAsActor() { return box; } @Override public String getName() { return name; } @Override public void setName(String s) { this.name = s; } @Override public void Destroy() { // box.remove(); Hide(); box.clear(); } @Override public void Hide() { box.setVisible(false); } @Override public void Show() { box.setVisible(true); } @Override public void Update(String val) { } @Override public String getHandledVariable() { return ""; } @Override public void setHandledVariable(String val) { } @Override public EventListener getEventListener() { return null; } @Override public void setEventListener(EventListener val) { } @Override public Float getHeight() { return box.getHeight(); } @Override public void setHeight(float val) { box.setHeight(val); } @Override public Float getWidth() { return box.getWidth(); } @Override public void setWidth(float val) { box.setWidth(val); } @Override public Vector2 getPosition() { return new Vector2(box.getX(), box.getY()); } @Override public void setPosition(Vector2 val) { Vector3 vec = MainScreen.camera.project(new Vector3( (float) (val.x + 0.5) * GameManager.textureResolution, (float) (val.y - 0.5) * GameManager.textureResolution, 0)); box.setX(vec.x); box.setY(vec.y); } @Override public Vector2 getPadTB() { return null; } @Override public void setPadTB(Vector2 val) { } @Override public Vector2 getPadRL() { return null; } @Override public void setPadRL(Vector2 val) { } @Override public Vector2 getMinHW() { return new Vector2(box.getMinHeight(), box.getMinWidth()); } @Override public void setMinHW(Vector2 val) { } @Override public Vector2 getMaxHW() { return new Vector2(box.getMaxHeight(), box.getMaxWidth()); } @Override public void setMaxHW(Vector2 val) { } @Override public void setText(String text) { } @Override public String getText() { return ""; } @Override public void addChild(GUIElement o) { System.out.println("Adding " + o.getText() + " to selectBox"); Array<String> a = new Array<String>(); for (String old : box.getItems()) { a.add(old); } a.add(o.getText()); box.setItems(a); box.pack(); } }