From 0aed4f862501cd074a72286c2a55f4aef5ea6ad5 Mon Sep 17 00:00:00 2001 From: Ivory Date: Wed, 11 Jan 2023 03:32:43 -0500 Subject: [PATCH] some arch changes for better sound support --- .../valnet/hadean/gameobjects/BottomBar.java | 1 + .../inputlayer/SelectionLayer.java | 23 ++++++++++++------- .../hadean/gameobjects/ui/tabs/BuildTab.java | 9 +++++++- .../hadean/gameobjects/ui/tabs/Tab.java | 5 ++++ .../java/xyz/valnet/hadean/input/Button.java | 9 +++++++- .../hadean/interfaces/IBottomBarItem.java | 2 ++ 6 files changed, 39 insertions(+), 10 deletions(-) diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/BottomBar.java b/src/main/java/xyz/valnet/hadean/gameobjects/BottomBar.java index d8e0408..8834128 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/BottomBar.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/BottomBar.java @@ -39,6 +39,7 @@ public class BottomBar extends GameObject implements IButtonListener, ITransient int w = r - l; Button btn = new SimpleButton(item.getTabName(), l, 576 - bottomBarHeight, w, bottomBarHeight, Layers.BOTTOM_BAR); + if(item.isButtonClickSilent()) btn = btn.setClickSound(false); btn.registerClickListener(this); add(btn); diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/inputlayer/SelectionLayer.java b/src/main/java/xyz/valnet/hadean/gameobjects/inputlayer/SelectionLayer.java index e30a5bc..417c6d8 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/inputlayer/SelectionLayer.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/inputlayer/SelectionLayer.java @@ -107,7 +107,8 @@ public class SelectionLayer extends GameObject implements IMouseCaptureArea, ITr private List selected = new ArrayList(); private void makeSelection(Vector4f a) { - selected.clear(); + List newSelection = new ArrayList(); + Vector4f normalizedSelectionBoxScreen = sortVector(a); Vector2f selectionBoxWorldMin = camera.screen2world(normalizedSelectionBoxScreen.x, normalizedSelectionBoxScreen.y); Vector2f selectionBoxWorldMax = camera.screen2world(normalizedSelectionBoxScreen.z, normalizedSelectionBoxScreen.w); @@ -122,19 +123,19 @@ public class SelectionLayer extends GameObject implements IMouseCaptureArea, ITr thingBox.x, thingBox.y, thingBox.z, thingBox.w )) { - selected.add(thing); + newSelection.add(thing); } } animation = 0; - broadcastSelectionChanged(); + updateSelection(newSelection); } private void broadcastSelectionChanged() { - Assets.sndSelectionChanged.play(); - // if(selected.size() > 0) Assets.sndBubble.play(); - // if(selected.size() == 0) Assets.sndCancel.play(); + // Assets.sndSelectionChanged.play(); + if(selected.size() > 0) Assets.sndBubble.play(); + if(selected.size() == 0) Assets.sndCancel.play(); for(ISelectionChangeListener listener : listeners) { listener.selectionChanged(selected); @@ -142,6 +143,7 @@ public class SelectionLayer extends GameObject implements IMouseCaptureArea, ITr } public void updateSelection(List newSelection) { + if(selected.size() == 0 && newSelection.size() == 0) return; selected = newSelection; broadcastSelectionChanged(); } @@ -191,12 +193,17 @@ public class SelectionLayer extends GameObject implements IMouseCaptureArea, ITr if(selected.size() == 0) { buildTab.evoke(); } else { - selected.clear(); - broadcastSelectionChanged(); + clearSelection(); } } } + public void clearSelection() { + if(selected.size() == 0) return; + selected.clear(); + broadcastSelectionChanged(); + } + @Override public void mouseUp(int button) { if(initialCoords != null && button == 0) { diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/ui/tabs/BuildTab.java b/src/main/java/xyz/valnet/hadean/gameobjects/ui/tabs/BuildTab.java index d4b4e34..a06a6ae 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/ui/tabs/BuildTab.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/ui/tabs/BuildTab.java @@ -135,11 +135,13 @@ public class BuildTab extends Tab implements ISelectionChangeListener, IMouseCap @Override public void rise() { + Assets.sndBubble.play(); activate(); } @Override public void fall() { + Assets.sndCancel.play(); deactiveate(); } @@ -264,7 +266,7 @@ public class BuildTab extends Tab implements ISelectionChangeListener, IMouseCap opened.toggle(); if(opened.value()) { - selection.updateSelection(new ArrayList()); + selection.clearSelection(); } } @@ -336,4 +338,9 @@ public class BuildTab extends Tab implements ISelectionChangeListener, IMouseCap selectBuildable(newBuildableRecord); } } + + @Override + public boolean isButtonClickSilent() { + return true; + } } diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/ui/tabs/Tab.java b/src/main/java/xyz/valnet/hadean/gameobjects/ui/tabs/Tab.java index 11bd03a..d6e5f13 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/ui/tabs/Tab.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/ui/tabs/Tab.java @@ -18,4 +18,9 @@ public abstract class Tab extends GameObject implements IBottomBarItem, ITransie protected void start() { bottombar.registerButton(this); } + + @Override + public boolean isButtonClickSilent() { + return false; + } } diff --git a/src/main/java/xyz/valnet/hadean/input/Button.java b/src/main/java/xyz/valnet/hadean/input/Button.java index 905bcc2..ce388f3 100644 --- a/src/main/java/xyz/valnet/hadean/input/Button.java +++ b/src/main/java/xyz/valnet/hadean/input/Button.java @@ -13,6 +13,8 @@ import xyz.valnet.hadean.util.Assets; public class Button extends GameObject implements IMouseCaptureArea, ITransient { + private boolean clickSound = true; + private int x, y, width, height; private String text; protected Tile9 frame; @@ -42,6 +44,11 @@ public class Button extends GameObject implements IMouseCaptureArea, ITransient layer = l; } + public Button setClickSound(boolean b) { + this.clickSound = b; + return this; + } + public String getText() { return text; } @@ -146,7 +153,7 @@ public class Button extends GameObject implements IMouseCaptureArea, ITransient state = HOVER; } listener.click(this); - Assets.sndBubble.play(); + if (clickSound) Assets.sndBubble.play(); } } else if (state == ACTIVE_NO_HOVER) { if(hovered) { diff --git a/src/main/java/xyz/valnet/hadean/interfaces/IBottomBarItem.java b/src/main/java/xyz/valnet/hadean/interfaces/IBottomBarItem.java index cabcab3..a68ac2b 100644 --- a/src/main/java/xyz/valnet/hadean/interfaces/IBottomBarItem.java +++ b/src/main/java/xyz/valnet/hadean/interfaces/IBottomBarItem.java @@ -4,4 +4,6 @@ public interface IBottomBarItem { public void evoke(); public String getTabName(); + + public boolean isButtonClickSilent(); }