Initial commit

This commit is contained in:
pan.codes 2024-05-02 19:07:24 +02:00
commit c7b2028f4d
20 changed files with 898 additions and 0 deletions

2
.gitattributes vendored Normal file
View file

@ -0,0 +1,2 @@
# Auto detect text files and perform LF normalization
* text=auto

398
.gitignore vendored Normal file
View file

@ -0,0 +1,398 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Mono auto generated files
mono_crash.*
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Ww][Ii][Nn]32/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
[Ll]ogs/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# ASP.NET Scaffolding
ScaffoldingReadMe.txt
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.tlog
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Coverlet is a free, cross platform Code Coverage Tool
coverage*.json
coverage*.xml
coverage*.info
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio 6 auto-generated project file (contains which files were open etc.)
*.vbp
# Visual Studio 6 workspace and project file (working project files containing files to include in project)
*.dsw
*.dsp
# Visual Studio 6 technical files
*.ncb
*.aps
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# Visual Studio History (VSHistory) files
.vshistory/
# BeatPulse healthcheck temp database
healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder
.ionide/
# Fody - auto-generated XML schema
FodyWeavers.xsd
# VS Code files for those working on multiple tools
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
*.code-workspace
# Local History for Visual Studio Code
.history/
# Windows Installer files from build outputs
*.cab
*.msi
*.msix
*.msm
*.msp
# JetBrains Rider
*.sln.iml

39
AudioSettings.csproj Normal file
View file

@ -0,0 +1,39 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<AssemblyName>AudioSettings</AssemblyName>
<Description>My first plugin</Description>
<Version>1.0.0</Version>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<LangVersion>latest</LangVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="BepInEx.Analyzers" Version="1.*" PrivateAssets="all" />
<PackageReference Include="BepInEx.AssemblyPublicizer.MSBuild" Version="0.4.2">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="BepInEx.Core" Version="5.*" />
<PackageReference Include="BepInEx.PluginInfoProps" Version="1.*" />
<PackageReference Include="HarmonyX" Version="2.12.0" />
<PackageReference Include="UnityEngine.Modules" Version="2021.3.3" IncludeAssets="compile" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework.TrimEnd(`0123456789`))' == 'net'">
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.2" PrivateAssets="all" />
</ItemGroup>
<ItemGroup>
<Reference Include="Assembly-CSharp" Publicize="true">
<HintPath>D:\SteamLibrary\steamapps\common\Supermarket Simulator\Supermarket Simulator_Data\Managed\Assembly-CSharp.dll</HintPath>
</Reference>
<Reference Include="MyBox">
<HintPath>D:\SteamLibrary\steamapps\common\Supermarket Simulator\Supermarket Simulator_Data\Managed\MyBox.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.UI">
<HintPath>D:\SteamLibrary\steamapps\common\Supermarket Simulator\Supermarket Simulator_Data\Managed\UnityEngine.UI.dll</HintPath>
</Reference>
</ItemGroup>
</Project>

121
AudioVolumeSlider.cs Normal file
View file

@ -0,0 +1,121 @@
using BepInEx.Configuration;
using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
namespace AudioSettings
{
public class AudioVolumeSlider
{
public static GUIStyleState font { get; set; } = new GUIStyleState { textColor = Color.white };
public static int SliderCount = 0;
public List<(AudioSource source, float multiplier)> Sources = new List<(AudioSource source, float multiplier)>();
private float ValueLastTick { get; set; }
private string Name { get; set; }
private string Description { get; set; }
public static void Reset()
{
SliderCount = 0;
}
public ConfigEntry<float> Volume { get; set; }
public void Add(AudioSource source, float multiplier)
{
if (Sources.Any(x => x.source == source))
{
return;
}
Console.WriteLine("AudioSource on \"" + source.gameObject.name + "\" sorted into \"" + Name + "\".");
Sources.Add((source, multiplier));
Apply();
}
public void Apply()
{
var vol = Volume.Value;
Console.WriteLine("Applying volume setting \"" + Name + "\": " + vol + ", " + Sources.Count + " sources, " + Plugin.Sliders.Count + " sliders.");
foreach (var item in Sources)
{
item.source.volume = item.multiplier * vol;
}
}
public AudioVolumeSlider(ConfigFile Config, string name, string description)
{
Name = name;
Description = description;
Console.WriteLine("Volume slider \"" + name + "\" initiated.");
Volume = Config.Bind(name, "Volume", 1f, description + "\nValue goes from 0 to 1.");
Volume.SettingChanged += Volume_SettingChanged;
ValueLastTick = Volume.Value;
}
public void Volume_SettingChanged(object sender, EventArgs e)
{
Apply();
}
public void InitUI(int width)
{
//var go = GameObject.Find("Ingame Canvas");
//if (go == null) return null;
//var slider = DefaultControls.CreateSlider(DefaultControls.Resources.);
////slider.SetActive(false);
//slider.transform.position = new Vector3(0, 0, SliderCount * 25);
//slider.transform.SetParent(go.transform);
//return slider;
var rectNameLabel = new Rect(10, SliderCount * 50 + 10, width * (2f / 7f), 25);
var rectDescLabel = new Rect(10, SliderCount * 50 + 30, width, 25);
var rectPercLabel = new Rect(width * (2f / 7f), SliderCount * 50 + 10, width * (0.5f / 7f), 25);
GUI.Label(rectNameLabel, Name, new GUIStyle { alignment = TextAnchor.MiddleLeft, normal = font });
GUI.Label(rectPercLabel, Volume.Value.ToString("##0%"), new GUIStyle { alignment = TextAnchor.MiddleRight, normal = font });
GUI.Label(rectDescLabel, Description, new GUIStyle { alignment = TextAnchor.MiddleLeft, normal = font });
var rect = new Rect(width * (2.5f / 7f) + 10, SliderCount * 50 + 16, width * (4.5f / 7f), 25);
var style = new GUIStyle(GUI.skin.horizontalSlider);
style.normal.background = MakeTex(600, 1, Volume.Value, Color.white, Color.gray);
style.alignment = TextAnchor.MiddleLeft;
var value = GUI.HorizontalSlider(rect, Volume.Value, 0, 1, style, GUI.skin.horizontalScrollbarThumb);
if (value != ValueLastTick)
{
Volume.Value = value;
ValueLastTick = value;
}
SliderCount++;
}
Dictionary<string, Texture2D> TextureCache { get; set; } = new();
private Texture2D MakeTex(int width, int height, float midPointPercentage, Color col1, Color col2)
{
string texKey = width + "x" + height + ":" + midPointPercentage;
if(TextureCache.ContainsKey(texKey)) return TextureCache[texKey];
Color[] pix = new Color[width * height];
int midPoint = (int)(width * midPointPercentage);
// Left side is white
for (int x = 0; x < midPoint; x++)
{
for (int y = 0; y < height; y++)
{
pix[x + y * width] = col1;
}
}
// Right side is dark gray
for (int x = midPoint; x < width; x++)
{
for (int y = 0; y < height; y++)
{
pix[x + y * width] = col2;
}
}
Texture2D result = new Texture2D(width, height);
result.SetPixels(pix);
result.Apply();
TextureCache.Add(texKey, result);
return result;
}
}
}

6
NuGet.Config Normal file
View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="BepInEx" value="https://nuget.bepinex.dev/v3/index.json" />
</packageSources>
</configuration>

View file

@ -0,0 +1,15 @@
using HarmonyLib;
using System;
using UnityEngine;
namespace AudioSettings.Patches
{
[HarmonyPatch(typeof(CarSpawnListener), "OnEnable")]
public static class CarSpawnListener_OnEnable_Patch
{
public static void Postfix(CarSpawnListener __instance)
{
Plugin.CarVolume.Add(__instance.GetComponent<AudioSource>(), 0.1f);
}
}
}

View file

@ -0,0 +1,6 @@
namespace AudioSettings.Patches
{
public static partial class SFXInstance_Patches
{
}
}

View file

@ -0,0 +1,17 @@
using HarmonyLib;
using UnityEngine;
namespace AudioSettings.Patches
{
public static partial class SFXInstance_Patches
{
[HarmonyPatch(typeof(SFXInstance), "PlayCheckoutSFX")]
public static class SFXInstance_PlayCheckoutSFX_Patch
{
public static void Prefix(SFXInstance __instance)
{
Plugin.CheckoutCompleteVolume.Add(__instance.transform.GetChild(1).GetComponent<AudioSource>(), 0.3f);
}
}
}
}

View file

@ -0,0 +1,17 @@
using HarmonyLib;
using UnityEngine;
namespace AudioSettings.Patches
{
public static partial class SFXInstance_Patches
{
[HarmonyPatch(typeof(SFXInstance), "PlayScanningProductSFX")]
public static class SFXInstance_PlayScanningProductSFX_Patch
{
public static void Prefix(SFXInstance __instance)
{
Plugin.ScanningProductVolume.Add(__instance.transform.GetChild(0).GetComponent<AudioSource>(), 0.3f);
}
}
}
}

View file

@ -0,0 +1,6 @@
namespace AudioSettings.Patches
{
public static partial class SFXManager_Patches
{
}
}

View file

@ -0,0 +1,17 @@
using HarmonyLib;
namespace AudioSettings.Patches
{
public static partial class SFXManager_Patches
{
[HarmonyPatch(typeof(SFXManager), "PlayCashRegister")]
public static class SFXManager_PlayCashRegister_Patch
{
public static void Prefix(SFXManager __instance)
{
Plugin.CashRegisterVolume.Add(__instance.m_CashRegisterOpen, 0.7f);
Plugin.CashRegisterVolume.Add(__instance.m_CashRegisterClose, 0.7f);
}
}
}
}

View file

@ -0,0 +1,16 @@
using HarmonyLib;
namespace AudioSettings.Patches
{
public static partial class SFXManager_Patches
{
[HarmonyPatch(typeof(SFXManager), "PlayCheckoutSFX")]
public static class SFXManager_PlayCheckoutSFX_Patch
{
public static void Prefix(SFXManager __instance)
{
Plugin.CheckoutCompleteVolume.Add(__instance.m_Checkout, 0.7f);
}
}
}
}

View file

@ -0,0 +1,16 @@
using HarmonyLib;
namespace AudioSettings.Patches
{
public static partial class SFXManager_Patches
{
[HarmonyPatch(typeof(SFXManager), "PlayCheckoutWarningSFX")]
public static class SFXManager_PlayCheckoutWarningSFX_Patch
{
public static void Prefix(SFXManager __instance)
{
Plugin.CheckoutWarningVolume.Add(__instance.m_CheckoutWarning, 0.5f);
}
}
}
}

View file

@ -0,0 +1,18 @@
using HarmonyLib;
namespace AudioSettings.Patches
{
public static partial class SFXManager_Patches
{
[HarmonyPatch(typeof(SFXManager), "PlayCoinSFX")]
[HarmonyPatch(typeof(SFXManager), "PlayMoneyPaperSFX")]
public static class SFXManager_PlayCoinSFX_Patch
{
public static void Prefix(SFXManager __instance)
{
Plugin.TakingChangeVolume.Add(__instance.m_CoinSFX, 1);
Plugin.TakingChangeVolume.Add(__instance.m_MoneyPaperSFX, 1);
}
}
}
}

View file

@ -0,0 +1,18 @@
using HarmonyLib;
namespace AudioSettings.Patches
{
public static partial class SFXManager_Patches
{
[HarmonyPatch(typeof(SFXManager), "PlayDroppingBoxSFX")]
[HarmonyPatch(typeof(SFXManager), "PlayPickingUpBoxSFX")]
public static class SFXManager_PlayDroppingBoxSFX_Patch
{
public static void Prefix(SFXManager __instance)
{
Plugin.BoxSoundsVolume.Add(__instance.m_DroppingBoxSFX, 0.8f);
Plugin.BoxSoundsVolume.Add(__instance.m_PickingUpBox, 0.2f);
}
}
}
}

View file

@ -0,0 +1,16 @@
using HarmonyLib;
namespace AudioSettings.Patches
{
public static partial class SFXManager_Patches
{
[HarmonyPatch(typeof(SFXManager), "PlayMouseClickSFX")]
public static class SFXManager_PlayMouseClickSFX_Patch
{
public static void Prefix(SFXManager __instance)
{
Plugin.MouseClickVolume.Add(__instance.m_MouseClick, 0.5f);
}
}
}
}

View file

@ -0,0 +1,16 @@
using HarmonyLib;
namespace AudioSettings.Patches
{
public static partial class SFXManager_Patches
{
[HarmonyPatch(typeof(SFXManager), "PlayPlacingProductSFX")]
public static class SFXManager_PlayPlacingProductSFX_Patch
{
public static void Prefix(SFXManager __instance)
{
Plugin.MovingProductVolume.Add(__instance.m_PlacingProduct, 0.7f);
}
}
}
}

View file

@ -0,0 +1,16 @@
using HarmonyLib;
namespace AudioSettings.Patches
{
public static partial class SFXManager_Patches
{
[HarmonyPatch(typeof(SFXManager), "PlayScanningProductSFX")]
public static class SFXManager_PlayScanningProductSFX_Patch
{
public static void Prefix(SFXManager __instance)
{
Plugin.ScanningProductVolume.Add(__instance.m_ScanningProduct, 0.2f);
}
}
}
}

View file

@ -0,0 +1,17 @@
using HarmonyLib;
namespace AudioSettings.Patches
{
public static partial class SFXManager_Patches
{
[HarmonyPatch(typeof(SFXManager), "PlaySwitchSFX")]
public static class SFXManager_PlaySwitchSFX_Patch
{
public static void Prefix(SFXManager __instance)
{
Plugin.LightSwitchVolume.Add(__instance.m_SwitchOn, 1);
Plugin.LightSwitchVolume.Add(__instance.m_SwitchOff, 1);
}
}
}
}

121
Plugin.cs Normal file
View file

@ -0,0 +1,121 @@
using BepInEx;
using HarmonyLib;
using MyBox;
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using UnityEngine.UIElements;
namespace AudioSettings
{
[BepInPlugin(PluginInfo.PLUGIN_GUID, PluginInfo.PLUGIN_NAME, PluginInfo.PLUGIN_VERSION)]
public class Plugin : BaseUnityPlugin
{
public static AudioVolumeSlider CarVolume { get; set; }
public static AudioVolumeSlider AmbienceVolume { get; set; }
public static AudioVolumeSlider CashRegisterVolume { get; set; }
public static AudioVolumeSlider CheckoutCompleteVolume { get; set; }
public static AudioVolumeSlider ScanningProductVolume { get; set; }
public static AudioVolumeSlider CheckoutWarningVolume { get; set; }
public static AudioVolumeSlider TakingChangeVolume { get; set; }
public static AudioVolumeSlider BoxSoundsVolume { get; set; }
public static AudioVolumeSlider MouseClickVolume { get; set; }
public static AudioVolumeSlider MovingProductVolume { get; set; }
public static AudioVolumeSlider LightSwitchVolume { get; set; }
public static AudioVolumeSlider MainMenuVolume { get; set; }
public static List<AudioVolumeSlider> Sliders { get; set; } = new();
private void Awake()
{
Logger.LogInfo($"Plugin {PluginInfo.PLUGIN_GUID} is loaded!");
Harmony harmony = new Harmony(PluginInfo.PLUGIN_GUID);
harmony.PatchAll();
SceneManager.sceneLoaded += (a, b) =>
{
Sliders.ForEach(x =>
{
x.Volume.SettingChanged -= x.Volume_SettingChanged;
});
CarVolume = new AudioVolumeSlider(Config, "Cars", "The volume of the cars on the roads.");
AmbienceVolume = new AudioVolumeSlider(Config, "Ambience", "The volume of the background noises.");
CashRegisterVolume = new AudioVolumeSlider(Config, "Cash Register", "The volume of the opening and closing of cash registers.");
CheckoutCompleteVolume = new AudioVolumeSlider(Config, "Checkout Complete", "The volume of the sound effect for a completed checkout.");
ScanningProductVolume = new AudioVolumeSlider(Config, "Scanning Product", "The volume of the beeping sound when scanning a product.");
CheckoutWarningVolume = new AudioVolumeSlider(Config, "Checkout Ding", "The volume of the ding sound that's played when a customer is waiting for checkout.");
TakingChangeVolume = new AudioVolumeSlider(Config, "Taking Change", "The volume of taking coins or bills out of the cash register.");
BoxSoundsVolume = new AudioVolumeSlider(Config, "Box Sounds", "The volume of the sounds of dropping and picking up boxes.");
MouseClickVolume = new AudioVolumeSlider(Config, "Mouse Clicks", "The volume of the mouse click sounds played when using the computer.");
MovingProductVolume = new AudioVolumeSlider(Config, "Moving Product", "The volume of moving products from and to shelves.");
LightSwitchVolume = new AudioVolumeSlider(Config, "Light Switch", "The volume of pressing the light switch.");
MainMenuVolume = new AudioVolumeSlider(Config, "Main Menu Music", "The volume of the music in the main menu.");
Sliders = new() {
CarVolume,
AmbienceVolume,
CashRegisterVolume,
CheckoutCompleteVolume,
ScanningProductVolume,
CheckoutWarningVolume,
TakingChangeVolume,
BoxSoundsVolume,
MouseClickVolume,
MovingProductVolume,
LightSwitchVolume,
MainMenuVolume
};
Sliders.ForEach(x => x.Apply());
};
}
public void OnGUI()
{
int width = 730; // In-Game Width
if (Singleton<EscapeMenuManager>.Instance != null)
{
if (!Singleton<EscapeMenuManager>.Instance.m_Paused) return;
} else
{
width = 625; // Main Menu Width
}
AudioVolumeSlider.Reset();
Sliders.ForEach(x => x.InitUI(width));
}
static AudioSource backgroundSfx;
static AudioSource mainMenuSfx;
public void Update()
{
if (Singleton<EscapeMenuManager>.Instance != null)
{
if (backgroundSfx == null)
{
Console.WriteLine("Looking for ambience object");
var go = GameObject.Find("Background SFX");
if (go != null)
{
backgroundSfx = go.GetComponent<AudioSource>();
if (backgroundSfx != null)
{
AmbienceVolume.Add(backgroundSfx, 0.8f);
}
}
}
}
else
{
if (mainMenuSfx == null)
{
Console.WriteLine("Looking for music object");
var go = GameObject.Find("Main Menu Music");
if (go != null)
{
mainMenuSfx = go.GetComponent<AudioSource>();
if (mainMenuSfx != null)
{
MainMenuVolume.Add(mainMenuSfx, 0.2f);
}
}
}
}
}
}
}