Skip to content

Commit

Permalink
1.19 update
Browse files Browse the repository at this point in the history
  • Loading branch information
Hermanest committed Jan 14, 2022
1 parent 4abd0cf commit d74fb78
Show file tree
Hide file tree
Showing 8 changed files with 156 additions and 158 deletions.
3 changes: 0 additions & 3 deletions DiColors/Config.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,6 @@ public class Config
public virtual string Name { get; set; } = "Default";*/

[NonNullable, UseConverter(typeof(HiveVersionConverter))]
public Version Version { get; set; } = new Version("1.0.0");

[NonNullable]
public Game GameSettings { get; set; } = new Game();

Expand Down
5 changes: 0 additions & 5 deletions DiColors/DiColors.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -81,11 +81,6 @@
<HintPath>$(BeatSaberDir)\Beat Saber_Data\Managed\HMUI.dll</HintPath>
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="MediaLoader, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<Private>False</Private>
<HintPath>$(BeatSaberDir)\Beat Saber_Data\Managed\MediaLoader.dll</HintPath>
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<Private>False</Private>
<HintPath>$(BeatSaberDir)\Libs\Newtonsoft.Json.dll</HintPath>
Expand Down
2 changes: 1 addition & 1 deletion DiColors/Installers/DiCMenuInstaller.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public override void InstallBindings()
Container.Bind<DiColorsInfoView>().FromNewComponentAsViewController().AsSingle();
Container.Bind<DiColorsMenuColorView>().FromNewComponentAsViewController().AsSingle();
Container.Bind<DiColorsGameColorView>().FromNewComponentAsViewController().AsSingle();
Container.Bind<DiColorsFlowCoordinator>().FromNewComponentOnNewGameObject(nameof(DiColorsFlowCoordinator)).AsSingle();
Container.Bind<DiColorsFlowCoordinator>().FromNewComponentOnNewGameObject(/*nameof(DiColorsFlowCoordinator)*/).AsSingle();
Container.BindInterfacesTo<MenuButtonManager>().AsSingle();
}
}
Expand Down
8 changes: 3 additions & 5 deletions DiColors/Plugin.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,9 @@ public Plugin(Conf conf, IPALogger logger, Zenjector zenjector, PluginMetadata m
Log = logger;
Config config = conf.Generated<Config>();
_harmony = new Harmony("dev.auros.dicolors");
config.Version = metadata.HVersion;

zenjector.OnApp<DiCInstaller>().WithParameters(config, metadata.HVersion);
zenjector.Install<DiCInstaller>(Location.App, config, metadata.HVersion);
zenjector.Install<DiCMenuInstaller>(Location.Menu);
//zenjector.OnGame<DiCGameInstaller>(false);
zenjector.OnMenu<DiCMenuInstaller>();
}

[OnEnable]
Expand All @@ -38,7 +36,7 @@ public void OnEnable()
[OnDisable]
public void OnDisable()
{
_harmony.UnpatchAll("dev.auros.dicolors");
_harmony.UnpatchSelf();
}
}
}
284 changes: 145 additions & 139 deletions DiColors/Services/MenuColorSwapper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,151 +6,157 @@

namespace DiColors.Services
{
public class MenuColorSwapper : IInitializable, IColorable
{
private readonly Config.Menu _menuConfig;
private readonly MenuLightsManager _menuLightsManager;
private readonly MainFlowCoordinator _mainFlowCoordinator;
private readonly CampaignFlowCoordinator _campaignFlowCoordinator;
private readonly CenterStageScreenController _centerStageScreenController;
private readonly SoloFreePlayFlowCoordinator _soloFreePlayFlowCoordinator;
private readonly PartyFreePlayFlowCoordinator _partyFreePlayFlowCoordinator;
private readonly Dictionary<Color, SimpleColorSO> _colorDict = new Dictionary<Color, SimpleColorSO>();
private readonly Dictionary<Color, MenuLightsPresetSO> _lightsDict = new Dictionary<Color, MenuLightsPresetSO>();
public class MenuColorSwapper : IInitializable, IColorable
{
private readonly Config.Menu _menuConfig;
private readonly MenuLightsManager _menuLightsManager;
private readonly MainFlowCoordinator _mainFlowCoordinator;
private readonly CampaignFlowCoordinator _campaignFlowCoordinator;
private readonly CenterStageScreenController _centerStageScreenController;
private readonly SoloFreePlayFlowCoordinator _soloFreePlayFlowCoordinator;
private readonly PartyFreePlayFlowCoordinator _partyFreePlayFlowCoordinator;
private readonly Dictionary<Color, SimpleColorSO> _colorDict = new Dictionary<Color, SimpleColorSO>();
private readonly Dictionary<Color, MenuLightsPresetSO> _lightsDict = new Dictionary<Color, MenuLightsPresetSO>();

private SpriteRenderer feetSprite;
private MenuLightsPresetSO defaultMenuLights;
private SpriteRenderer feetSprite;
private MenuLightsPresetSO defaultMenuLights;

public MenuColorSwapper(Config.Menu menuConfig, MenuLightsManager menuLightsManager, MainFlowCoordinator mainFlowCoordinator, CampaignFlowCoordinator campaignFlowCoordinator,
SoloFreePlayFlowCoordinator soloFreePlayFlowCoordinator, PartyFreePlayFlowCoordinator partyFreePlayFlowCoordinator, CenterStageScreenController centerStageScreenController)
{
_menuConfig = menuConfig;
_menuLightsManager = menuLightsManager;
_mainFlowCoordinator = mainFlowCoordinator;
_campaignFlowCoordinator = campaignFlowCoordinator;
_centerStageScreenController = centerStageScreenController;
_soloFreePlayFlowCoordinator = soloFreePlayFlowCoordinator;
_partyFreePlayFlowCoordinator = partyFreePlayFlowCoordinator;
}
public MenuColorSwapper(Config.Menu menuConfig, MenuLightsManager menuLightsManager, MainFlowCoordinator mainFlowCoordinator, CampaignFlowCoordinator campaignFlowCoordinator,
SoloFreePlayFlowCoordinator soloFreePlayFlowCoordinator, PartyFreePlayFlowCoordinator partyFreePlayFlowCoordinator, CenterStageScreenController centerStageScreenController)
{
_menuConfig = menuConfig;
_menuLightsManager = menuLightsManager;
_mainFlowCoordinator = mainFlowCoordinator;
_campaignFlowCoordinator = campaignFlowCoordinator;
_centerStageScreenController = centerStageScreenController;
_soloFreePlayFlowCoordinator = soloFreePlayFlowCoordinator;
_partyFreePlayFlowCoordinator = partyFreePlayFlowCoordinator;
}

public Color Color => _menuConfig.Enabled ? _menuConfig.DefaultColor : defaultMenuLights.lightIdColorPairs[0].baseColor;
public Color Color
{
get
{
return _menuConfig.Enabled ? _menuConfig.DefaultColor : defaultMenuLights.lightIdColorPairs[0].baseColor;
}
set { }
}
public void Initialize()
{
defaultMenuLights = _menuLightsManager.GetField<MenuLightsPresetSO, MenuLightsManager>("_defaultPreset");
var playersPlace = GameObject.Find("PlayersPlace");
feetSprite = playersPlace.GetComponentInChildren<SpriteRenderer>();
UpdateColors(_menuConfig);
}

public void Initialize()
{
defaultMenuLights = _menuLightsManager.GetField<MenuLightsPresetSO, MenuLightsManager>("_defaultPreset");
var playersPlace = GameObject.Find("PlayersPlace");
feetSprite = playersPlace.GetComponentInChildren<SpriteRenderer>();
UpdateColors(_menuConfig);
}
public void UpdateColors(Config.Menu menuConfig)
{
var defaultColor = CachedColor(Color);
defaultMenuLights = CreateMenuLights(defaultColor);
if (menuConfig.ColorPairs.TryGetValue("PlayersPlaceFeet", out Config.ColorPair playersFeetColorPair))
{
feetSprite.color = playersFeetColorPair.Enabled ? playersFeetColorPair.Color : defaultColor.color;
}
if (menuConfig.ColorPairs.TryGetValue("Freeplay", out Config.ColorPair freeplay))
{
if (freeplay.Enabled)
{
var lights = CreateMenuLights(freeplay.Color);
_soloFreePlayFlowCoordinator.SetField("_defaultLightsPreset", lights);
_partyFreePlayFlowCoordinator.SetField("_defaultLightsPreset", lights);
}
else
{
_soloFreePlayFlowCoordinator.SetField("_defaultLightsPreset", defaultMenuLights);
_partyFreePlayFlowCoordinator.SetField("_defaultLightsPreset", defaultMenuLights);
}
}
if (menuConfig.ColorPairs.TryGetValue("Results", out Config.ColorPair results))
{
if (results.Enabled)
{
var lights = CreateMenuLights(results.Color);
_soloFreePlayFlowCoordinator.SetField("_resultsClearedLightsPreset", lights);
_partyFreePlayFlowCoordinator.SetField("_resultsClearedLightsPreset", lights);
}
else
{
_soloFreePlayFlowCoordinator.SetField("_resultsClearedLightsPreset", defaultMenuLights);
_partyFreePlayFlowCoordinator.SetField("_resultsClearedLightsPreset", defaultMenuLights);
}
}
if (menuConfig.ColorPairs.TryGetValue("Campaigns", out Config.ColorPair campaigns))
{
if (campaigns.Enabled)
{
var lights = CreateMenuLights(campaigns.Color);
_campaignFlowCoordinator.SetField("_defaultLightsPreset", lights);
}
else
{
_campaignFlowCoordinator.SetField("_defaultLightsPreset", defaultMenuLights);
}
}
_centerStageScreenController.SetField("_defaultMenuLightsPreset", defaultMenuLights);
if (menuConfig.ColorPairs.TryGetValue("Multiplayer", out Config.ColorPair multiplayer))
{
if (multiplayer.Enabled)
{
var lights = CreateMenuLights(multiplayer.Color);
_centerStageScreenController.SetField("_lobbyLightsPreset", lights);
}
}
if (menuConfig.ColorPairs.TryGetValue("MultiplayerCountdown", out Config.ColorPair multiplayerCountdown))
{
if (multiplayerCountdown.Enabled)
{
var lights = CreateMenuLights(multiplayerCountdown.Color);
_centerStageScreenController.SetField("_countdownMenuLightsPreset", lights);
}
}
_mainFlowCoordinator.SetField("_defaultLightsPreset", defaultMenuLights);
}

public void UpdateColors(Config.Menu menuConfig)
{
var defaultColor = CachedColor(Color);
defaultMenuLights = CreateMenuLights(defaultColor);
if (menuConfig.ColorPairs.TryGetValue("PlayersPlaceFeet", out Config.ColorPair playersFeetColorPair))
{
feetSprite.color = playersFeetColorPair.Enabled ? playersFeetColorPair.Color : defaultColor.color;
}
if (menuConfig.ColorPairs.TryGetValue("Freeplay", out Config.ColorPair freeplay))
{
if (freeplay.Enabled)
{
var lights = CreateMenuLights(freeplay.Color);
_soloFreePlayFlowCoordinator.SetField("_defaultLightsPreset", lights);
_partyFreePlayFlowCoordinator.SetField("_defaultLightsPreset", lights);
}
else
{
_soloFreePlayFlowCoordinator.SetField("_defaultLightsPreset", defaultMenuLights);
_partyFreePlayFlowCoordinator.SetField("_defaultLightsPreset", defaultMenuLights);
}
}
if (menuConfig.ColorPairs.TryGetValue("Results", out Config.ColorPair results))
{
if (results.Enabled)
{
var lights = CreateMenuLights(results.Color);
_soloFreePlayFlowCoordinator.SetField("_resultsClearedLightsPreset", lights);
_partyFreePlayFlowCoordinator.SetField("_resultsClearedLightsPreset", lights);
}
else
{
_soloFreePlayFlowCoordinator.SetField("_resultsClearedLightsPreset", defaultMenuLights);
_partyFreePlayFlowCoordinator.SetField("_resultsClearedLightsPreset", defaultMenuLights);
}
}
if (menuConfig.ColorPairs.TryGetValue("Campaigns", out Config.ColorPair campaigns))
{
if (campaigns.Enabled)
{
var lights = CreateMenuLights(campaigns.Color);
_campaignFlowCoordinator.SetField("_defaultLightsPreset", lights);
}
else
{
_campaignFlowCoordinator.SetField("_defaultLightsPreset", defaultMenuLights);
}
}
_centerStageScreenController.SetField("_defaultMenuLightsPreset", defaultMenuLights);
if (menuConfig.ColorPairs.TryGetValue("Multiplayer", out Config.ColorPair multiplayer))
{
if (multiplayer.Enabled)
{
var lights = CreateMenuLights(multiplayer.Color);
_centerStageScreenController.SetField("_lobbyLightsPreset", lights);
}
}
if (menuConfig.ColorPairs.TryGetValue("MultiplayerCountdown", out Config.ColorPair multiplayerCountdown))
{
if (multiplayerCountdown.Enabled)
{
var lights = CreateMenuLights(multiplayerCountdown.Color);
_centerStageScreenController.SetField("_countdownMenuLightsPreset", lights);
}
}
_mainFlowCoordinator.SetField("_defaultLightsPreset", defaultMenuLights);
}
public MenuLightsPresetSO CreateMenuLights(Color color)
{
var cachedColor = CachedColor(color);
if (_lightsDict.TryGetValue(color, out var menuLightsPresetSO))
{
return menuLightsPresetSO;
}
menuLightsPresetSO = Object.Instantiate(defaultMenuLights);
var colorPairs = menuLightsPresetSO.GetField<MenuLightsPresetSO.LightIdColorPair[], MenuLightsPresetSO>("_lightIdColorPairs");
for (int i = 0; i < colorPairs.Length; i++)
{
colorPairs[i] = new MenuLightsPresetSO.LightIdColorPair
{
lightId = colorPairs[i].lightId,
baseColor = cachedColor,
intensity = colorPairs[i].intensity
};
}
_lightsDict.Add(color, menuLightsPresetSO);
return menuLightsPresetSO;
}

public MenuLightsPresetSO CreateMenuLights(Color color)
{
var cachedColor = CachedColor(color);
if (_lightsDict.TryGetValue(color, out var menuLightsPresetSO))
{
return menuLightsPresetSO;
}
menuLightsPresetSO = Object.Instantiate(defaultMenuLights);
var colorPairs = menuLightsPresetSO.GetField<MenuLightsPresetSO.LightIdColorPair[], MenuLightsPresetSO>("_lightIdColorPairs");
for (int i = 0; i < colorPairs.Length; i++)
{
colorPairs[i] = new MenuLightsPresetSO.LightIdColorPair
{
lightId = colorPairs[i].lightId,
baseColor = cachedColor,
intensity = colorPairs[i].intensity
};
}
_lightsDict.Add(color, menuLightsPresetSO);
return menuLightsPresetSO;
}
public ColorSO CachedColor(Color color)
{
if (_colorDict.TryGetValue(color, out var colorSO))
{
return colorSO;
}
colorSO = ScriptableObject.CreateInstance<SimpleColorSO>();
colorSO.SetColor(color);
_colorDict.Add(color, colorSO);
return colorSO;
}

public ColorSO CachedColor(Color color)
{
if (_colorDict.TryGetValue(color, out var colorSO))
{
return colorSO;
}
colorSO = ScriptableObject.CreateInstance<SimpleColorSO>();
colorSO.SetColor(color);
_colorDict.Add(color, colorSO);
return colorSO;
}
public void SetColor(Color color)
{
defaultMenuLights = _menuLightsManager.GetField<MenuLightsPresetSO, MenuLightsManager>("_defaultPreset");
_menuLightsManager?.SetColorPreset(CreateMenuLights(color), true);
_menuLightsManager?.RefreshColors();

public void SetColor(Color color)
{
defaultMenuLights = _menuLightsManager.GetField<MenuLightsPresetSO, MenuLightsManager>("_defaultPreset");
_menuLightsManager?.SetColorPreset(CreateMenuLights(color), true);
_menuLightsManager?.RefreshColors();

}
}
}
}
}
2 changes: 1 addition & 1 deletion DiColors/ViewControllers/DiColorsGameColorView.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public class DiColorsGameColorView : BSMLAutomaticViewController
{
private Config.Game _gameConfig;
private Config.Game _stashedConfig;
private CachedMediaAsyncLoader _mediaLoader;
private CachedMediaAsyncLoader _mediaLoader;
private CancellationTokenSource _cancellationToken;

[UIValue("textures")]
Expand Down
4 changes: 3 additions & 1 deletion DiColors/ViewControllers/DiColorsMenuColorView.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using Zenject;
using UnityEngine;
using DiColors.Services;
using System.Threading.Tasks;
using BeatSaberMarkupLanguage.Parser;
using BeatSaberMarkupLanguage.Attributes;
using BeatSaberMarkupLanguage.ViewControllers;
Expand Down Expand Up @@ -247,7 +248,8 @@ protected async void Apply()
{
parserParams.EmitEvent("apply");
_fader.FadeOut();
await SiraUtil.Utilities.AwaitSleep(500);
await Task.Delay(500);
//await SiraUtil.Utilities.AwaitSleep(500);
_transitioner.RestartGame();
}

Expand Down
6 changes: 3 additions & 3 deletions DiColors/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
"description": "A mod which allows you to change the color of various things including the note arrow color, brightness, and menu lights.",
"gameVersion": "1.17.0",
"dependsOn": {
"BSIPA": "^4.0.0",
"SiraUtil": "^2.3.1",
"BeatSaberMarkupLanguage": "^1.4.0"
"BSIPA": "^4.2.1",
"SiraUtil": "^3.0.3",
"BeatSaberMarkupLanguage": "^1.6.1"
}
}

0 comments on commit d74fb78

Please sign in to comment.