Files
source/Assets/Scripts/CustomColorObject.cs

158 lines
7.0 KiB
C#

using Newtonsoft.Json.Linq;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class CustomColorObject : MonoBehaviour
{
[SerializeField] private ColorObjectType type;
[SerializeField] private bool invert;
[SerializeField] private Color addMore;
[SerializeField] private bool reverseAdd;
Color ApplyModifiers(Color baseColor)
{
if (invert) baseColor = new(1f - baseColor.r, 1f - baseColor.g, 1f - baseColor.b);
if (reverseAdd)
{
baseColor.r = Mathf.Clamp01(baseColor.r - addMore.r);
baseColor.g = Mathf.Clamp01(baseColor.g - addMore.g);
baseColor.b = Mathf.Clamp01(baseColor.b - addMore.b);
}
else
{
baseColor.r = Mathf.Clamp01(baseColor.r + addMore.r);
baseColor.g = Mathf.Clamp01(baseColor.g + addMore.g);
baseColor.b = Mathf.Clamp01(baseColor.b + addMore.b);
}
return baseColor;
}
public void SetColor()
{
JArray color = null;
Color colorType = Color.white;
Color currentColor = Color.white;
switch (type)
{
case ColorObjectType.InGameBackgroundColor:
color = BazookaManager.Instance.GetColorSettingBackground();
colorType = new((int)color[0] / 255f, (int)color[1] / 255f, (int)color[2] / 255f);
colorType = ApplyModifiers(colorType);
var obj = gameObject.GetComponent<Camera>();
currentColor = obj.backgroundColor;
currentColor.r = colorType.r;
currentColor.g = colorType.g;
currentColor.b = colorType.b;
obj.backgroundColor = currentColor;
break;
case ColorObjectType.MenuBackgroundColor:
color = BazookaManager.Instance.GetColorSettingMenuBackground();
colorType = new((int)color[0] / 255f, (int)color[1] / 255f, (int)color[2] / 255f);
colorType = ApplyModifiers(colorType);
obj = gameObject.GetComponent<Camera>();
currentColor = obj.backgroundColor;
currentColor.r = colorType.r;
currentColor.g = colorType.g;
currentColor.b = colorType.b;
obj.backgroundColor = currentColor;
break;
case ColorObjectType.MenuBackgroundColorImage:
color = BazookaManager.Instance.GetColorSettingMenuBackground();
colorType = new((int)color[0] / 255f, (int)color[1] / 255f, (int)color[2] / 255f);
colorType = ApplyModifiers(colorType);
var obj2 = gameObject.GetComponent<Image>();
currentColor = obj2.color;
currentColor.r = colorType.r;
currentColor.g = colorType.g;
currentColor.b = colorType.b;
obj2.color = currentColor;
break;
case ColorObjectType.MenuBackgroundColorText:
color = BazookaManager.Instance.GetColorSettingMenuBackground();
colorType = new((int)color[0] / 255f, (int)color[1] / 255f, (int)color[2] / 255f);
colorType = ApplyModifiers(colorType);
var obj3 = gameObject.GetComponent<TMP_Text>();
currentColor = obj3.color;
currentColor.r = colorType.r;
currentColor.g = colorType.g;
currentColor.b = colorType.b;
obj3.color = currentColor;
break;
case ColorObjectType.ButtonColor:
color = BazookaManager.Instance.GetColorSettingButton();
colorType = new((int)color[0] / 255f, (int)color[1] / 255f, (int)color[2] / 255f);
colorType = ApplyModifiers(colorType);
obj2 = gameObject.GetComponent<Image>();
currentColor = obj2.color;
currentColor.r = colorType.r;
currentColor.g = colorType.g;
currentColor.b = colorType.b;
obj2.color = currentColor;
break;
case ColorObjectType.ButtonColorText:
color = BazookaManager.Instance.GetColorSettingButton();
colorType = new((int)color[0] / 255f, (int)color[1] / 255f, (int)color[2] / 255f);
colorType = ApplyModifiers(colorType);
obj3 = gameObject.GetComponent<TMP_Text>();
currentColor = obj3.color;
currentColor.r = colorType.r;
currentColor.g = colorType.g;
currentColor.b = colorType.b;
obj3.color = currentColor;
break;
case ColorObjectType.TextColor:
color = BazookaManager.Instance.GetColorSettingText();
colorType = new((int)color[0] / 255f, (int)color[1] / 255f, (int)color[2] / 255f);
colorType = ApplyModifiers(colorType);
obj3 = gameObject.GetComponent<TMP_Text>();
currentColor = obj3.color;
currentColor.r = colorType.r;
currentColor.g = colorType.g;
currentColor.b = colorType.b;
obj3.color = currentColor;
break;
case ColorObjectType.TextColorImage:
color = BazookaManager.Instance.GetColorSettingText();
colorType = new((int)color[0] / 255f, (int)color[1] / 255f, (int)color[2] / 255f);
colorType = ApplyModifiers(colorType);
obj2 = gameObject.GetComponent<Image>();
currentColor = obj2.color;
currentColor.r = colorType.r;
currentColor.g = colorType.g;
currentColor.b = colorType.b;
obj2.color = currentColor;
break;
case ColorObjectType.ButtonContentColorImage:
color = BazookaManager.Instance.GetColorSettingButtonContent();
colorType = new((int)color[0] / 255f, (int)color[1] / 255f, (int)color[2] / 255f);
colorType = ApplyModifiers(colorType);
obj2 = gameObject.GetComponent<Image>();
currentColor = obj2.color;
currentColor.r = colorType.r;
currentColor.g = colorType.g;
currentColor.b = colorType.b;
obj2.color = currentColor;
break;
case ColorObjectType.ButtonContentColorText:
color = BazookaManager.Instance.GetColorSettingButtonContent();
colorType = new((int)color[0] / 255f, (int)color[1] / 255f, (int)color[2] / 255f);
colorType = ApplyModifiers(colorType);
obj3 = gameObject.GetComponent<TMP_Text>();
currentColor = obj3.color;
currentColor.r = colorType.r;
currentColor.g = colorType.g;
currentColor.b = colorType.b;
obj3.color = currentColor;
break;
}
}
void Start()
{
SetColor();
}
}