From 636b92205b178fd9a9de8c46f34c5f2edee7c994 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 1 Aug 2019 16:54:36 -0400 Subject: [PATCH] Implemented sound volume --- .../anuke/mindustry/entities/type/Player.java | 6 +++- .../io/anuke/mindustry/game/MusicControl.java | 16 +++++++--- .../ui/dialogs/SettingsMenuDialog.java | 31 +++++++++---------- 3 files changed, 31 insertions(+), 22 deletions(-) diff --git a/core/src/io/anuke/mindustry/entities/type/Player.java b/core/src/io/anuke/mindustry/entities/type/Player.java index 3283415e00..36e48edc20 100644 --- a/core/src/io/anuke/mindustry/entities/type/Player.java +++ b/core/src/io/anuke/mindustry/entities/type/Player.java @@ -338,7 +338,7 @@ public class Player extends Unit implements BuilderMinerTrait, ShooterTrait{ rotation - 90); } - float backTrns = 4f; + float backTrns = 5f; if(item.amount > 0){ ItemStack stack = item; int stored = Mathf.clamp(stack.amount / 6, 1, 8); @@ -351,6 +351,10 @@ public class Player extends Unit implements BuilderMinerTrait, ShooterTrait{ y + Angles.trnsy(rotation + 180f + angT, backTrns + lenT), itemSize, itemSize, rotation); } + + Lines.stroke(1f, Pal.accent); + Lines.circle(x + Angles.trnsx(rotation + 180f, backTrns), + y + Angles.trnsy(rotation + 180f, backTrns), 3f + Mathf.absin(Time.time(), 4f, 1f)); } Draw.reset(); diff --git a/core/src/io/anuke/mindustry/game/MusicControl.java b/core/src/io/anuke/mindustry/game/MusicControl.java index ca1b902475..53c4ba4351 100644 --- a/core/src/io/anuke/mindustry/game/MusicControl.java +++ b/core/src/io/anuke/mindustry/game/MusicControl.java @@ -1,6 +1,7 @@ package io.anuke.mindustry.game; import io.anuke.annotations.Annotations.*; +import io.anuke.arc.*; import io.anuke.arc.audio.*; import io.anuke.arc.math.*; import io.anuke.arc.util.*; @@ -9,24 +10,29 @@ import io.anuke.arc.util.*; public class MusicControl{ private static final float finTime = 80f, foutTime = 80f; private @Nullable Music current; + private float fade; public void play(@Nullable Music music){ + if(current != null){ + current.setVolume(fade * Core.settings.getInt("musicvol") / 100f); + } + if(current == null && music != null){ current = music; current.setLooping(true); - current.setVolume(0f); + current.setVolume(fade = 0f); current.play(); }else if(current == music && music != null){ - current.setVolume(Mathf.clamp(current.getVolume() + Time.delta()/finTime)); + fade = Mathf.clamp(fade + Time.delta()/finTime); }else if(current != null){ - current.setVolume(Mathf.clamp(current.getVolume() - Time.delta()/foutTime)); + fade = Mathf.clamp(fade - Time.delta()/foutTime); - if(current.getVolume() <= 0.01f){ + if(fade <= 0.01f){ current.stop(); current = null; if(music != null){ current = music; - current.setVolume(0f); + current.setVolume(fade = 0f); current.setLooping(true); current.play(); } diff --git a/core/src/io/anuke/mindustry/ui/dialogs/SettingsMenuDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/SettingsMenuDialog.java index 4d0c13284c..75e9fb8805 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/SettingsMenuDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/SettingsMenuDialog.java @@ -1,22 +1,22 @@ package io.anuke.mindustry.ui.dialogs; -import io.anuke.arc.Core; -import io.anuke.arc.collection.ObjectMap; -import io.anuke.arc.files.FileHandle; -import io.anuke.arc.function.Consumer; -import io.anuke.arc.input.KeyCode; -import io.anuke.arc.scene.Element; -import io.anuke.arc.scene.event.InputEvent; -import io.anuke.arc.scene.event.InputListener; +import io.anuke.arc.*; +import io.anuke.arc.collection.*; +import io.anuke.arc.files.*; +import io.anuke.arc.function.*; +import io.anuke.arc.input.*; +import io.anuke.arc.scene.*; +import io.anuke.arc.scene.event.*; import io.anuke.arc.scene.ui.*; -import io.anuke.arc.scene.ui.SettingsDialog.SettingsTable.Setting; -import io.anuke.arc.scene.ui.layout.Table; +import io.anuke.arc.scene.ui.SettingsDialog.SettingsTable.*; +import io.anuke.arc.scene.ui.layout.*; import io.anuke.arc.util.*; -import io.anuke.mindustry.core.GameState.State; -import io.anuke.mindustry.core.Platform; -import io.anuke.mindustry.graphics.Pal; +import io.anuke.mindustry.core.GameState.*; +import io.anuke.mindustry.core.*; +import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.net.Net; +import static io.anuke.arc.Core.bundle; import static io.anuke.mindustry.Vars.*; public class SettingsMenuDialog extends SettingsDialog{ @@ -127,9 +127,8 @@ public class SettingsMenuDialog extends SettingsDialog{ } void addSettings(){ - //TODO add when sound works again - //sound.volumePrefs(); - sound.add("[LIGHT_GRAY]there is no sound implemented in v4 yet"); + sound.sliderPref("musicvol", bundle.get("setting.musicvol.name", "Music Volume"), 100, 0, 100, 1, i -> i + "%"); + sound.sliderPref("sfxvol", bundle.get("setting.sfxvol.name", "SFX Volume"), 100, 0, 100, 1, i -> i + "%"); game.screenshakePref(); if(mobile){