using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Configuration;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("PEAK")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("PEAK")]
[assembly: AssemblyCopyright("Copyright © 2025")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("94d12321-9932-43d2-ba03-502c40b6fcee")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyVersion("1.0.0.0")]
[BepInPlugin("com.leer.daynightui", "DayNight UI", "1.2.1")]
public class DayNightUIMod : BaseUnityPlugin
{
private Texture2D sunTexture;
private Texture2D moonTexture;
private Sprite sunSprite;
private Sprite moonSprite;
private Image sunImage;
private Image moonImage;
private Text timeText;
private DayNightManager manager;
private Font gameFont;
private ConfigEntry<bool> showTimeText;
private ConfigEntry<float> posX;
private ConfigEntry<float> posY;
private void Awake()
{
showTimeText = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "ShowTimeText", false, "Show the time as text on screen");
posX = ((BaseUnityPlugin)this).Config.Bind<float>("UI Position", "PosX", -60f, "X offset for clock and icons (top-right corner anchor)");
posY = ((BaseUnityPlugin)this).Config.Bind<float>("UI Position", "PosY", -60f, "Y offset for clock and icons (top-right corner anchor)");
SceneManager.sceneLoaded += OnSceneLoaded;
LoadTextures();
LoadFont();
}
private void LoadTextures()
{
string path = Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location), "daynightui_sprites");
sunTexture = LoadTexture(Path.Combine(path, "Peak_Sun.png"));
moonTexture = LoadTexture(Path.Combine(path, "Peak_Moon.png"));
if ((Object)(object)sunTexture != (Object)null)
{
sunSprite = SpriteFromTexture(sunTexture);
}
if ((Object)(object)moonTexture != (Object)null)
{
moonSprite = SpriteFromTexture(moonTexture);
}
}
private void LoadFont()
{
gameFont = Font.CreateDynamicFontFromOSFont("Arial Bold", 16);
}
private Texture2D LoadTexture(string filePath)
{
//IL_0015: Unknown result type (might be due to invalid IL or missing references)
//IL_001b: Expected O, but got Unknown
if (!File.Exists(filePath))
{
return null;
}
byte[] array = File.ReadAllBytes(filePath);
Texture2D val = new Texture2D(2, 2, (TextureFormat)4, false);
if (!ImageConversion.LoadImage(val, array))
{
return null;
}
return val;
}
private void OnSceneLoaded(Scene scene, LoadSceneMode mode)
{
if (!(((Scene)(ref scene)).name == "Title") && !(((Scene)(ref scene)).name == "Airport"))
{
manager = Object.FindObjectOfType<DayNightManager>();
if (!((Object)(object)manager == (Object)null))
{
CreateUI();
}
}
}
private void CreateUI()
{
//IL_0018: Unknown result type (might be due to invalid IL or missing references)
//IL_001e: Expected O, but got Unknown
//IL_004d: Unknown result type (might be due to invalid IL or missing references)
//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
//IL_00a8: Expected O, but got Unknown
//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
//IL_010c: Unknown result type (might be due to invalid IL or missing references)
//IL_0113: Expected O, but got Unknown
//IL_013f: Unknown result type (might be due to invalid IL or missing references)
//IL_0140: Unknown result type (might be due to invalid IL or missing references)
//IL_016a: Unknown result type (might be due to invalid IL or missing references)
//IL_0179: Unknown result type (might be due to invalid IL or missing references)
//IL_0180: Expected O, but got Unknown
//IL_01a6: Unknown result type (might be due to invalid IL or missing references)
//IL_01d0: Unknown result type (might be due to invalid IL or missing references)
if (!((Object)(object)GameObject.Find("DayNightUICanvas") != (Object)null))
{
GameObject val = new GameObject("DayNightUICanvas");
Canvas obj = val.AddComponent<Canvas>();
obj.renderMode = (RenderMode)0;
obj.sortingOrder = 999;
CanvasScaler obj2 = val.AddComponent<CanvasScaler>();
obj2.uiScaleMode = (ScaleMode)1;
obj2.referenceResolution = new Vector2(1920f, 1080f);
obj2.screenMatchMode = (ScreenMatchMode)0;
obj2.matchWidthOrHeight = 1f;
val.AddComponent<GraphicRaycaster>();
Vector2 anchoredPos = default(Vector2);
((Vector2)(ref anchoredPos))..ctor(posX.Value, posY.Value);
Vector2 size = default(Vector2);
((Vector2)(ref size))..ctor(64f, 64f);
GameObject val2 = new GameObject("MoonImage");
val2.transform.SetParent(val.transform);
moonImage = val2.AddComponent<Image>();
SetupImage(moonImage, moonSprite, anchoredPos, size);
((Component)moonImage).gameObject.AddComponent<Shadow>().effectColor = new Color(0f, 0f, 0f, 0.6f);
GameObject val3 = new GameObject("SunImage");
val3.transform.SetParent(val.transform);
sunImage = val3.AddComponent<Image>();
SetupImage(sunImage, sunSprite, anchoredPos, size);
((Component)sunImage).gameObject.AddComponent<Shadow>().effectColor = new Color(0f, 0f, 0f, 0.6f);
GameObject val4 = new GameObject("TimeText");
val4.transform.SetParent(val.transform);
timeText = val4.AddComponent<Text>();
SetupText(timeText, anchoredPos);
((Component)timeText).gameObject.AddComponent<Shadow>().effectColor = new Color(0f, 0f, 0f, 0.6f);
if ((Object)(object)gameFont != (Object)null)
{
timeText.font = gameFont;
}
((Behaviour)timeText).enabled = showTimeText.Value;
}
}
private void SetupImage(Image img, Sprite sprite, Vector2 anchoredPos, Vector2 size)
{
//IL_003f: Unknown result type (might be due to invalid IL or missing references)
//IL_0054: Unknown result type (might be due to invalid IL or missing references)
//IL_0069: Unknown result type (might be due to invalid IL or missing references)
//IL_0074: Unknown result type (might be due to invalid IL or missing references)
//IL_007a: Unknown result type (might be due to invalid IL or missing references)
img.sprite = sprite;
img.type = (Type)3;
img.fillMethod = (FillMethod)4;
img.fillOrigin = 0;
img.fillClockwise = false;
img.fillAmount = 1f;
RectTransform rectTransform = ((Graphic)img).rectTransform;
rectTransform.anchorMin = new Vector2(1f, 1f);
rectTransform.anchorMax = new Vector2(1f, 1f);
rectTransform.pivot = new Vector2(1f, 1f);
rectTransform.anchoredPosition = anchoredPos;
rectTransform.sizeDelta = size;
}
private void SetupText(Text txt, Vector2 anchoredPos)
{
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_0026: Unknown result type (might be due to invalid IL or missing references)
//IL_003b: Unknown result type (might be due to invalid IL or missing references)
//IL_0046: Unknown result type (might be due to invalid IL or missing references)
//IL_0056: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
RectTransform rectTransform = ((Graphic)txt).rectTransform;
rectTransform.anchorMin = new Vector2(1f, 1f);
rectTransform.anchorMax = new Vector2(1f, 1f);
rectTransform.pivot = new Vector2(1f, 1f);
rectTransform.anchoredPosition = anchoredPos;
rectTransform.sizeDelta = new Vector2(64f, 64f);
txt.alignment = (TextAnchor)4;
((Graphic)txt).color = Color.white;
txt.fontSize = 18;
((Graphic)txt).raycastTarget = false;
}
private void Update()
{
if ((Object)(object)sunImage == (Object)null || (Object)(object)moonImage == (Object)null || (Object)(object)sunSprite == (Object)null || (Object)(object)moonSprite == (Object)null)
{
return;
}
if ((Object)(object)manager == (Object)null)
{
manager = Object.FindObjectOfType<DayNightManager>();
if ((Object)(object)manager == (Object)null)
{
return;
}
}
float timeOfDay = manager.timeOfDay;
if (showTimeText.Value && (Object)(object)timeText != (Object)null)
{
int num = Mathf.FloorToInt(timeOfDay);
int num2 = Mathf.FloorToInt((timeOfDay - (float)num) * 60f);
timeText.text = $"{num:00}:{num2:00}";
((Behaviour)timeText).enabled = true;
}
else if ((Object)(object)timeText != (Object)null)
{
((Behaviour)timeText).enabled = false;
}
if (timeOfDay >= 5f && timeOfDay < 21f)
{
float num3 = 1f - (timeOfDay - 5f) / 16f;
sunImage.fillAmount = Mathf.Clamp01(num3);
moonImage.fillAmount = 1f;
((Component)sunImage).transform.SetAsLastSibling();
if (showTimeText.Value)
{
((Component)timeText).transform.SetAsLastSibling();
}
return;
}
float num4 = ((timeOfDay < 5f) ? (timeOfDay + 24f) : timeOfDay);
float num5 = 1f - (num4 - 21f) / 8f;
moonImage.fillAmount = Mathf.Clamp01(num5);
sunImage.fillAmount = 1f;
((Component)moonImage).transform.SetAsLastSibling();
if (showTimeText.Value)
{
((Component)timeText).transform.SetAsLastSibling();
}
}
private Sprite SpriteFromTexture(Texture2D tex)
{
//IL_0019: Unknown result type (might be due to invalid IL or missing references)
//IL_0028: Unknown result type (might be due to invalid IL or missing references)
return Sprite.Create(tex, new Rect(0f, 0f, (float)((Texture)tex).width, (float)((Texture)tex).height), new Vector2(0.5f, 0.5f));
}
}