using System;
using UnityEngine;

// Token: 0x0200000F RID: 15
[ExecuteInEditMode]
public class MoonlightRevealer : MonoBehaviour
{
	// Token: 0x060000E4 RID: 228 RVA: 0x00011735 File Offset: 0x0000F935
	protected virtual void Start()
	{
		this.Create();
	}

	// Token: 0x060000E5 RID: 229 RVA: 0x0001173D File Offset: 0x0000F93D
	public void Create()
	{
		this.mTrans = base.transform;
		if (this.interiorLight)
		{
			if (MoonlightSystem.otherInstance)
			{
				this.mRevealer = MoonlightSystem.otherInstance.CreateInteriorRevealer();
				return;
			}
		}
		else
		{
			this.mRevealer = MoonlightSystem.CreateRevealer();
		}
	}

	// Token: 0x060000E6 RID: 230 RVA: 0x0001177B File Offset: 0x0000F97B
	protected virtual void OnDisable()
	{
		if (this.mRevealer != null)
		{
			if (this.interiorLight)
			{
				MoonlightSystem.otherInstance.DeleteInteriorRevealer(this.mRevealer);
			}
			else
			{
				MoonlightSystem.DeleteRevealer(this.mRevealer);
			}
			this.mRevealer = null;
		}
		this.RemovePartyLight();
	}

	// Token: 0x060000E7 RID: 231 RVA: 0x000117B7 File Offset: 0x0000F9B7
	protected virtual void OnDestroy()
	{
		if (this.mRevealer != null)
		{
			if (this.interiorLight)
			{
				MoonlightSystem.otherInstance.DeleteInteriorRevealer(this.mRevealer);
			}
			else
			{
				MoonlightSystem.DeleteRevealer(this.mRevealer);
			}
			this.mRevealer = null;
		}
		this.RemovePartyLight();
	}

	// Token: 0x060000E8 RID: 232 RVA: 0x000117F3 File Offset: 0x0000F9F3
	private void RemovePartyLight()
	{
		if (this.yOffset != 0f)
		{
			new Vector3(-100000f, -100000f, 0f);
		}
	}

	// Token: 0x060000E9 RID: 233 RVA: 0x00011818 File Offset: 0x0000FA18
	protected virtual void LateUpdate()
	{
		if (this.isActive)
		{
			if (this.yOffset == 0f || this.characterID <= -1)
			{
				if (this.mRevealer == null)
				{
					this.Create();
				}
				if (this.lineOfSightCheck != MoonlightSystem.LOSChecks.OnlyOnce)
				{
					this.mRevealer.isValid = false;
				}
				if (this.yOffset != 0f)
				{
					this.mRevealer.pos = this.mTrans.position + new Vector3(0f, this.yOffset, 0f);
				}
				else
				{
					this.mRevealer.pos = this.mTrans.position;
				}
				this.mRevealer.inner = this.range.x;
				this.mRevealer.outer = this.range.y;
				this.mRevealer.los = this.lineOfSightCheck;
				this.mRevealer.isActive = true;
				this.mRevealer.lightColor = this.lightColor;
				return;
			}
			Vector3 position = base.gameObject.transform.position;
			position.y += this.yOffset;
			Color currentPartyLightColor = Links.x.currentPartyLightColor;
			if (this.main)
			{
				Shader.SetGlobalVector("_PartyLightPosition0", position);
				Shader.SetGlobalVector("_PartyLightColor0", currentPartyLightColor);
				float num = 1f;
				if (Links.x.gameplay.gameHours >= 15f)
				{
					num = 1.3f;
				}
				if (Links.x.gameplay.gameHours == 16f)
				{
					num = 1.7f;
				}
				if (Links.x.gameplay.gameHours == 17f)
				{
					num = 2f;
				}
				if (Links.x.gameplay.gameHours == 18f)
				{
					num = 2f;
				}
				if (Links.x.gameplay.gameHours == 19f)
				{
					num = 2f;
				}
				if (Links.x.gameplay.gameHours == 20f)
				{
					num = 1.6f;
				}
				if (Links.x.gameplay.gameHours == 21f)
				{
					num = 1.3f;
				}
				if (Links.x.gameplay.gameHours == 22f)
				{
					num = 1.2f;
				}
				if (currentPartyLightColor == Links.x.torchColor)
				{
					if (Links.x.main.indoorID != "")
					{
						num = 0.5f;
					}
					if (Links.x.main.indoorID != "" || Links.x.gameplay.IsNight())
					{
						Shader.SetGlobalFloat("_Torch", 5f);
					}
					else if (Links.x.gameplay.IsEvening())
					{
						Shader.SetGlobalFloat("_Torch", 3f);
					}
					else
					{
						Shader.SetGlobalFloat("_Torch", 1f);
					}
				}
				else
				{
					if (Links.x.main.indoorID != "")
					{
						num = 0.75f;
					}
					Shader.SetGlobalFloat("_Torch", 0f);
				}
				Shader.SetGlobalFloat("_PartyDist0", num);
				return;
			}
		}
		else if (this.mRevealer.isActive)
		{
			this.mRevealer.isActive = false;
			this.mRevealer.isValid = false;
		}
	}

	// Token: 0x060000EA RID: 234 RVA: 0x00011B64 File Offset: 0x0000FD64
	public void Rebuild()
	{
		this.mRevealer.isValid = false;
	}

	// Token: 0x04000254 RID: 596
	private Transform mTrans;

	// Token: 0x04000255 RID: 597
	public bool interiorLight;

	// Token: 0x04000256 RID: 598
	public Color32 lightColor;

	// Token: 0x04000257 RID: 599
	public Vector2 range = new Vector2(0.1f, 4f);

	// Token: 0x04000258 RID: 600
	public MoonlightSystem.LOSChecks lineOfSightCheck = MoonlightSystem.LOSChecks.OnlyOnce;

	// Token: 0x04000259 RID: 601
	public bool isActive = true;

	// Token: 0x0400025A RID: 602
	protected MoonlightSystem.Revealer mRevealer;

	// Token: 0x0400025B RID: 603
	public float yOffset;

	// Token: 0x0400025C RID: 604
	public int characterID = -1;

	// Token: 0x0400025D RID: 605
	public bool main;
}
