Compare commits

..

2 Commits

Author SHA1 Message Date
ivan tkachenko c6118862d4 Sync playback to the actual beat count rather than relying on BPM 2025-07-13 02:33:48 +03:00
ivan tkachenko caa4b9ccbd Reorder some statements to make them visually more grouped together
Postfix patch went from 5 if-blocks down to only 3 \o/

There is no need to stop the creatureVoice and start it delayed in two
separate condition blocks. Also, the code should only rely on state
transitions, and not on AudioSource.isPlaying property.
2025-07-13 01:03:41 +03:00
48 changed files with 123 additions and 1690 deletions

BIN
Assets/ChereshnyaLoop.ogg (Stored with Git LFS)

Binary file not shown.

BIN
Assets/ChereshnyaStart.ogg (Stored with Git LFS)

Binary file not shown.

BIN
Assets/DeployDestroyLoop.mp3 (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Assets/DeployDestroyLoop.ogg (Stored with Git LFS)

Binary file not shown.

BIN
Assets/DeployDestroyStart.mp3 (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Assets/DeployDestroyStart.ogg (Stored with Git LFS)

Binary file not shown.

BIN
Assets/DurochkaLoop.mp3 (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Assets/DurochkaLoop.ogg (Stored with Git LFS)

Binary file not shown.

BIN
Assets/DurochkaStart.mp3 (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Assets/DurochkaStart.ogg (Stored with Git LFS)

Binary file not shown.

BIN
Assets/GodModeLoop.ogg (Stored with Git LFS)

Binary file not shown.

BIN
Assets/GodModeStart.ogg (Stored with Git LFS)

Binary file not shown.

BIN
Assets/GorgorodLoop.mp3 (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Assets/GorgorodLoop.ogg (Stored with Git LFS)

Binary file not shown.

BIN
Assets/GorgorodStart.mp3 (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Assets/GorgorodStart.ogg (Stored with Git LFS)

Binary file not shown.

BIN
Assets/KachLoop.ogg (Stored with Git LFS)

Binary file not shown.

BIN
Assets/KachStart.ogg (Stored with Git LFS)

Binary file not shown.

BIN
Assets/MoyaZhittyaLoop.mp3 (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Assets/MoyaZhittyaLoop.ogg (Stored with Git LFS)

Binary file not shown.

BIN
Assets/MoyaZhittyaStart.mp3 (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Assets/MoyaZhittyaStart.ogg (Stored with Git LFS)

Binary file not shown.

BIN
Assets/MuzikaGromcheLoop.mp3 (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Assets/MuzikaGromcheLoop.ogg (Stored with Git LFS)

Binary file not shown.

BIN
Assets/MuzikaGromcheStart.mp3 (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Assets/MuzikaGromcheStart.ogg (Stored with Git LFS)

Binary file not shown.

BIN
Assets/PWNEDLoop.ogg (Stored with Git LFS)

Binary file not shown.

BIN
Assets/PWNEDStart.ogg (Stored with Git LFS)

Binary file not shown.

BIN
Assets/PeretasovkaLoop.ogg (Stored with Git LFS)

Binary file not shown.

BIN
Assets/PeretasovkaStart.ogg (Stored with Git LFS)

Binary file not shown.

BIN
Assets/RiseAndShineLoop.ogg (Stored with Git LFS)

Binary file not shown.

BIN
Assets/RiseAndShineStart.ogg (Stored with Git LFS)

Binary file not shown.

BIN
Assets/Song2Loop.ogg (Stored with Git LFS)

Binary file not shown.

BIN
Assets/Song2Start.ogg (Stored with Git LFS)

Binary file not shown.

BIN
Assets/VseVZaleLoop.mp3 (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Assets/VseVZaleLoop.ogg (Stored with Git LFS)

Binary file not shown.

BIN
Assets/VseVZaleStart.mp3 (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Assets/VseVZaleStart.ogg (Stored with Git LFS)

Binary file not shown.

BIN
Assets/YalgaarLoop.ogg (Stored with Git LFS)

Binary file not shown.

BIN
Assets/YalgaarStart.ogg (Stored with Git LFS)

Binary file not shown.

BIN
Assets/ZmeiGorynichLoop.ogg (Stored with Git LFS)

Binary file not shown.

BIN
Assets/ZmeiGorynichStart.ogg (Stored with Git LFS)

Binary file not shown.

View File

@ -2,13 +2,9 @@
<Project> <Project>
<PropertyGroup> <PropertyGroup>
<!-- Copy this file to MuzikaGromche.props.user and uncomment one of two paths below: --> <!-- Copy this file to MuzikaGromche.props.user and uncomment one of two paths below: -->
<!-- On Linux: --> <!-- On Linux: -->
<!-- <LethalCompanyDir>$(HOME)/.local/share/Steam/steamapps/common/Lethal Company/</LethalCompanyDir> --> <!-- <LethalCompanyDir>$(HOME)/.local/share/Steam/steamapps/common/Lethal Company/</LethalCompanyDir> -->
<!-- <WavExportDir>\home\ratijas\Music\SFX\Export</WavExportDir> -->
<!-- On Windows: --> <!-- On Windows: -->
<!-- <LethalCompanyDir>C:/Program Files (x86)/Steam/steamapps/common/Lethal Company/</LethalCompanyDir> --> <!-- <LethalCompanyDir>C:/Program Files (x86)/Steam/steamapps/common/Lethal Company/</LethalCompanyDir> -->
<!-- <WavExportDir>D:\Code\MuzikaGromcheAudio\Export</WavExportDir> -->
</PropertyGroup> </PropertyGroup>
</Project> </Project>

View File

@ -1,90 +0,0 @@
using DunGen;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using UnityEngine;
namespace MuzikaGromche
{
public class DiscoBallManager : MonoBehaviour
{
// A struct holding a disco ball container object and the name of a tile for which it was designed.
public readonly record struct Data(string TileName, GameObject DiscoBallContainer)
{
// We are specifically looking for cloned tiles, not the original prototypes.
public readonly string TileCloneName = $"{TileName}(Clone)";
}
public static readonly List<Data> Containers = [];
private static readonly List<GameObject> InstantiatedContainers = [];
public static void Initialize()
{
string assetdir = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "muzikagromche");
var bundle = AssetBundle.LoadFromFile(assetdir);
foreach ((string prefabPath, string tileName) in new[] {
("Assets/LethalCompany/Mods/MuzikaGromche/DiscoBallContainerManor.prefab", "ManorStartRoomSmall"),
("Assets/LethalCompany/Mods/MuzikaGromche/DiscoBallContainerFactory.prefab", "StartRoom"),
("Assets/LethalCompany/Mods/MuzikaGromche/DiscoBallContainerMineShaft.prefab", "MineshaftStartTile"),
("Assets/LethalCompany/Mods/MuzikaGromche/DiscoBallContainerLargeForkTileB.prefab", "LargeForkTileB"),
("Assets/LethalCompany/Mods/MuzikaGromche/DiscoBallContainerBirthdayRoomTile.prefab", "BirthdayRoomTile"),
})
{
var container = bundle.LoadAsset<GameObject>(prefabPath);
Containers.Add(new(tileName, container));
}
}
public static void Enable()
{
// Just in case
Disable();
var query = from tile in Resources.FindObjectsOfTypeAll<Tile>()
join container in Containers
on tile.gameObject.name equals container.TileCloneName
select (tile, container);
foreach (var (tile, container) in query)
{
Enable(tile, container);
}
}
private static readonly string[] animatorNames = [
"DiscoBallProp/AnimContainer",
"DiscoBallProp1/AnimContainer",
"DiscoBallProp2/AnimContainer",
"DiscoBallProp3/AnimContainer",
"DiscoBallProp4/AnimContainer",
"DiscoBallProp5/AnimContainer",
];
private static void Enable(Tile tile, Data container)
{
Debug.Log($"{nameof(MuzikaGromche)} {nameof(DiscoBallManager)} Enabling at '{tile.gameObject.name}'");
var discoBall = Instantiate(container.DiscoBallContainer, tile.transform);
InstantiatedContainers.Add(discoBall);
foreach (var animatorName in animatorNames)
{
if (discoBall.transform.Find(animatorName)?.gameObject is GameObject animator)
{
animator.GetComponent<Animator>().SetBool("on", true);
}
}
}
public static void Disable()
{
foreach (var discoBall in InstantiatedContainers)
{
Debug.Log($"{nameof(MuzikaGromche)} {nameof(DiscoBallManager)}: Disabling {discoBall.name}");
Destroy(discoBall);
}
InstantiatedContainers.Clear();
}
}
}

View File

@ -4,7 +4,7 @@
<TargetFramework>netstandard2.1</TargetFramework> <TargetFramework>netstandard2.1</TargetFramework>
<AssemblyName>MuzikaGromche</AssemblyName> <AssemblyName>MuzikaGromche</AssemblyName>
<Description>Opa che tut u nas</Description> <Description>Opa che tut u nas</Description>
<Version>13.37.420</Version> <Version>13.37.6</Version>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks> <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<LangVersion>latest</LangVersion> <LangVersion>latest</LangVersion>
</PropertyGroup> </PropertyGroup>
@ -49,7 +49,6 @@
<PackagedResources Include="$(SolutionDir)README.md" /> <PackagedResources Include="$(SolutionDir)README.md" />
<PackagedResources Include="$(SolutionDir)icon.png" /> <PackagedResources Include="$(SolutionDir)icon.png" />
<PackagedResources Include="$(SolutionDir)manifest.json" /> <PackagedResources Include="$(SolutionDir)manifest.json" />
<PackagedResources Include="$(ProjectDir)UnityAssets\muzikagromche" />
<PackagedResources Include="$(TargetDir)MuzikaGromche.dll" /> <PackagedResources Include="$(TargetDir)MuzikaGromche.dll" />
</ItemGroup> </ItemGroup>
@ -74,18 +73,4 @@
DestinationFolder="$(SolutionDir)dist\" DestinationFolder="$(SolutionDir)dist\"
/> />
</Target> </Target>
<!--
Usage:
Set WavExportDir in props.user file.
Run
> dotnet msbuild /t:wav2ogg /p:TrackName=GodMode
-->
<Target Name="wav2ogg">
<ItemGroup>
<TrackNames Include="$(TrackName)Start" />
<TrackNames Include="$(TrackName)Loop" />
</ItemGroup>
<Exec Command="ffmpeg -bitexact -y -i $(WavExportDir)%(TrackNames.Identity).wav $(SolutionDir)Assets\%(TrackNames.Identity).ogg"/>
</Target>
</Project> </Project>

File diff suppressed because it is too large Load Diff

View File

@ -1,13 +1,12 @@
{ {
"name": "MuzikaGromche", "name": "MuzikaGromche",
"version_number": "13.37.420", "version_number": "13.37.6",
"author": "Oflor", "author": "Oflor",
"description": "Glaza zakryvaj", "description": "Glaza zakryvaj",
"website_url": "https://git.vilunov.me/nikita/muzika-gromche", "website_url": "https://git.vilunov.me/nikita/muzika-gromche",
"dependencies": [ "dependencies": [
"BepInEx-BepInExPack-5.4.2100", "BepInEx-BepInExPack-5.4.2100",
"Sigurd-CSync-5.0.1", "Sigurd-CSync-5.0.1",
"ainavt.lc.lethalconfig-1.4.6", "ainavt.lc.lethalconfig-1.4.6"
"WaterGun-V70PoweredLights_Fix-1.0.0"
] ]
} }