diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/SelectionUI.java b/src/main/java/xyz/valnet/hadean/gameobjects/SelectionUI.java index ffe2a69..01393b6 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/SelectionUI.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/SelectionUI.java @@ -5,12 +5,16 @@ import java.util.HashMap; import java.util.List; import xyz.valnet.engine.scenegraph.GameObject; +import xyz.valnet.hadean.input.Button; +import xyz.valnet.hadean.input.IButtonListener; import xyz.valnet.hadean.util.Assets; -public class SelectionUI extends GameObject implements ISelectionChangeListener { +public class SelectionUI extends GameObject implements ISelectionChangeListener, IButtonListener { private List selected = new ArrayList(); private HashMap selectedTypes = new HashMap(); + private HashMap narrowButtons = new HashMap(); + private HashMap> narrowBuckets = new HashMap>(); private Selection selectionManager; @@ -24,26 +28,60 @@ public class SelectionUI extends GameObject implements ISelectionChangeListener Assets.uiFrame.draw(10, 366, 300, 200); - int i = 0; - for(String name : selectedTypes.keySet()) { - int n = selectedTypes.get(name); - Assets.font.drawString("" + n + "x " + name, 26, 376 + 16 * i); - i ++; + // int i = 0; + // for(String name : selectedTypes.keySet()) { + // int n = selectedTypes.get(name); + // Assets.font.drawString("" + n + "x " + name, 26, 376 + 16 * i); + // i ++; + // } + + for(Button btn : narrowButtons.values()) { + btn.draw(); + } + } + + @Override + public void tick(float dTime) { + for(Button btn : narrowButtons.values()) { + btn.update(); } } @Override public void selectionChanged(List selected) { this.selected = selected; - + selectedTypes.clear(); + narrowButtons.clear(); + narrowBuckets.clear(); for(ISelectable selectable : selected) { String name = selectable.getClass().getName(); + System.out.println(name); + String[] splitName = name.split("\\."); + for(String s : splitName) { + System.out.println(s); + } + String shortName = splitName[splitName.length - 1]; + if(selectedTypes.containsKey(name)) { selectedTypes.replace(name, selectedTypes.get(name) + 1); + Button btn = narrowButtons.get(name); + List items = narrowBuckets.get(btn); + items.add(selectable); } else { + Button btn = new Button(Assets.uiFrame, shortName, 20, 376 + 30 * selectedTypes.size(), 280, 24); + btn.registerClickListener(this); selectedTypes.put(name, 1); + narrowButtons.put(name, btn); + List list = new ArrayList(); + list.add(selectable); + narrowBuckets.put(btn, list); } } } + + @Override + public void click(Button target) { + + } }