Skip to content

Commit

Permalink
some things
Browse files Browse the repository at this point in the history
  • Loading branch information
Futuremappermydud committed Jun 7, 2021
1 parent 656c435 commit 875be8e
Show file tree
Hide file tree
Showing 6 changed files with 68 additions and 27 deletions.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 0 additions & 9 deletions Configuration/PluginConfig.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,5 @@ public class PluginConfig
{
public static PluginConfig Instance { get; set; }
public virtual bool Enabled { get; set; } = true;
public virtual void OnReload()
{
}
public virtual void Changed()
{
}
public virtual void CopyFrom(PluginConfig other)
{
}
}
}
47 changes: 45 additions & 2 deletions CoverColorManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,52 @@ public class ColorDataResult
public ColorScheme Scheme;
public List<QuantizedColor> Colors;
}

internal static class CoverColorManager
{
internal static readonly ConcurrentDictionary<string, ColorScheme> Cache = new ConcurrentDictionary<string, ColorScheme>();
private static readonly ConcurrentDictionary<string, List<QuantizedColor>> PaletteCache = new ConcurrentDictionary<string, List<QuantizedColor>>();
//TODO: Implement automatic warmth/coldness detection
/*
private static float GetWarmDistance(UnityEngine.Color a, UnityEngine.Color b)
{
return (Mathf.Abs(a.r - b.r)+Mathf.Abs(a.g - b.g)*0.5f+Mathf.Abs(a.b - b.b)*0.5f)/3f;
}
private static float GetColdDistance(UnityEngine.Color a, UnityEngine.Color b)
{
return (Mathf.Abs(a.r - b.r)*0.5f+Mathf.Abs(a.g - b.g)*0.5f+Mathf.Abs(a.b - b.b))/3f;
}
private static UnityEngine.Color GetWarmestColor(List<QuantizedColor> colors)
{
var warmestColor = new UnityEngine.Color(0f, 128f, 255f);
foreach (var t in colors)
{
var dist = GetWarmDistance(warmestColor, t.UnityColor);
var dist2 = GetWarmDistance(UnityEngine.Color.red, warmestColor);
if (dist < dist2)
{
warmestColor = t.UnityColor;
}
}
return warmestColor;
}
internal static UnityEngine.Color GetColdestColor(List<QuantizedColor> colors)
{
var warmestColor = new UnityEngine.Color(255f, 128f, 0f);
foreach (var t in colors)
{
var dist = GetWarmDistance(warmestColor, t.UnityColor);
var dist2 = GetWarmDistance(UnityEngine.Color.blue, warmestColor);
if (dist < dist2)
{
warmestColor = t.UnityColor;
}
}
return warmestColor;
}*/
public static async Task<ColorDataResult> GetSchemeFromCoverImage(Texture2D tex, string levelID)
{
var result = new ColorDataResult();
Expand All @@ -34,12 +76,13 @@ public static async Task<ColorDataResult> GetSchemeFromCoverImage(Texture2D tex,
var colors = new List<QuantizedColor>();

await Task.Run(() => { colors = thief.GetPalette(tex); });

//var leftColor = GetWarmestColor(colors);
//var rightColor = GetColdestColor(colors);
var leftColor = colors[0].UnityColor;
var rightColor = colors[1].UnityColor;
var obsColor = colors[2].UnityColor;

var scheme = new ColorScheme("CoverSaber", "Cover Saber", true, "Cover Saber", true, leftColor, rightColor, leftColor, rightColor, false, leftColor, rightColor, obsColor);
var scheme = new ColorScheme("CoverSaber", "Cover Saber", true, "Cover Saber", true, leftColor, rightColor, leftColor*1.3f, rightColor*1.3f, false, leftColor*1.5f, rightColor*1.5f, obsColor);

Cache.TryAdd(levelID, scheme);
PaletteCache.TryAdd(levelID, colors);
Expand Down
2 changes: 1 addition & 1 deletion Plugin.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ namespace CoverColorSaber
[Plugin(RuntimeOptions.SingleStartInit)]
public class Plugin
{
private static IPALogger Log { get; set; }
internal static IPALogger Log { get; set; }

[Init]
public void Init(IPALogger logger, IPA.Config.Config config)
Expand Down
30 changes: 16 additions & 14 deletions Settings/Menu.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.Linq;
using BeatSaberMarkupLanguage.Attributes;
using CoverColorSaber.Configuration;
Expand Down Expand Up @@ -35,6 +36,7 @@ public string SongName
//Plugin.Log.Info("Settings Song Name to " + value);
}
}

[UIValue("enabled")]
public bool SchemeEnabled
{
Expand Down Expand Up @@ -148,7 +150,7 @@ public void SetColors(List<ColorThief.QuantizedColor> paletteColors, ColorScheme
currentlevelID = levelID;
currentPaletteColors = paletteColors;
currentTex = coverImg;
this.scheme = setScheme;
scheme = setScheme;
if (leftImg == null)
{
/*
Expand Down Expand Up @@ -251,7 +253,7 @@ public void SetColors(List<ColorThief.QuantizedColor> paletteColors, ColorScheme
col1Img.material = leftImg.material;
var col1Toggle = col1.GetComponent<Toggle>();
col1Toggle.group = group;
col1Toggle.onValueChanged.AddListener(new UnityAction<bool>( value => { if (value) currentPaletteIndex = 0; } ));
col1Toggle.onValueChanged.AddListener(value => { if (value) currentPaletteIndex = 0; });

col2 = Instantiate(templateImg, colors.transform, false);
Destroy(col2.transform.Find("Icon").gameObject);
Expand All @@ -262,7 +264,7 @@ public void SetColors(List<ColorThief.QuantizedColor> paletteColors, ColorScheme
col2Img.material = leftImg.material;
var col2Toggle = col2.GetComponent<Toggle>();
col2Toggle.group = group;
col2Toggle.onValueChanged.AddListener(new UnityAction<bool>(value => { if (value) currentPaletteIndex = 1; }));
col2Toggle.onValueChanged.AddListener(value => { if (value) currentPaletteIndex = 1; });

col3 = Instantiate(templateImg, colors.transform, false);
Destroy(col3.transform.Find("Icon").gameObject);
Expand All @@ -273,7 +275,7 @@ public void SetColors(List<ColorThief.QuantizedColor> paletteColors, ColorScheme
col3Img.material = leftImg.material;
var col3Toggle = col3.GetComponent<Toggle>();
col3Toggle.group = group;
col3Toggle.onValueChanged.AddListener(new UnityAction<bool>(value => { if (value) currentPaletteIndex = 2; }));
col3Toggle.onValueChanged.AddListener(value => { if (value) currentPaletteIndex = 2; });

col4 = Instantiate(templateImg, colors.transform, false);
Destroy(col4.transform.Find("Icon").gameObject);
Expand All @@ -284,7 +286,7 @@ public void SetColors(List<ColorThief.QuantizedColor> paletteColors, ColorScheme
col4Img.material = leftImg.material;
var col4Toggle = col4.GetComponent<Toggle>();
col4Toggle.group = group;
col4Toggle.onValueChanged.AddListener(new UnityAction<bool>(value => { if (value) currentPaletteIndex = 3; }));
col4Toggle.onValueChanged.AddListener(value => { if (value) currentPaletteIndex = 3; });

col5 = Instantiate(templateImg, colors.transform, false);
Destroy(col5.transform.Find("Icon").gameObject);
Expand All @@ -295,11 +297,11 @@ public void SetColors(List<ColorThief.QuantizedColor> paletteColors, ColorScheme
col5Img.material = leftImg.material;
var col5Toggle = col5.GetComponent<Toggle>();
col5Toggle.group = group;
col5Toggle.onValueChanged.AddListener(new UnityAction<bool>(value => { if (value) currentPaletteIndex = 4; }));
col5Toggle.onValueChanged.AddListener(value => { if (value) currentPaletteIndex = 4; });

group.SetAllTogglesOff();

var setButton = CreateUIButton("sortBy", (RectTransform)parent3, "PracticeButton", new Vector2(-25f, 0f), new Vector2(10, 0.5f), () =>
var setButton = CreateUIButton("setColor", (RectTransform)parent3, "PracticeButton", new Vector2(-25f, 0f), new Vector2(10, 0.5f), () =>
{
SetVal(currentPaletteIndex);
}, "Set");
Expand All @@ -314,13 +316,13 @@ public void SetColors(List<ColorThief.QuantizedColor> paletteColors, ColorScheme
col4Img.color = currentPaletteColors[3].UnityColor;
col5Img.color = currentPaletteColors[4].UnityColor;

leftImg.color = setScheme.saberAColor;
rightImg.color = setScheme.saberBColor;
obsImg.color = setScheme.obstaclesColor;
leftImg.color = scheme.saberAColor;
rightImg.color = scheme.saberBColor;
obsImg.color = scheme.obstaclesColor;

leftImgIcon.color = InvertColor(setScheme.saberAColor);
rightImgIcon.color = InvertColor(setScheme.saberBColor);
obsImgIcon.color = InvertColor(setScheme.obstaclesColor);
leftImgIcon.color = InvertColor(scheme.saberAColor);
rightImgIcon.color = InvertColor(scheme.saberBColor);
obsImgIcon.color = InvertColor(scheme.obstaclesColor);
}
}
}
2 changes: 1 addition & 1 deletion Settings/Panel.bsml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@
<text id='SongNameText' text='No Song Selected' font-size='4.5' color='white' horizontal-fit='PreferredSize' vertical-fit='PreferredSize' align='Center'/>
<horizontal id='Colors' horizontal-fit='PreferredSize' vertical-fit='PreferredSize'>
</horizontal>
<checkbox-setting id='toggle' text='Enabled' preferred-width='34' vertical-fit='PreferredSize' value='enabled' apply-on-change='true'/>
<checkbox-setting id='toggle' text='Enabled' preferred-width='34' horizontal-fit='PreferredSize' vertical-fit='PreferredSize' value='enabled' apply-on-change='true'/>
</vertical>
</bg>

0 comments on commit 875be8e

Please sign in to comment.