using System.Collections; using UnityEngine; public class SecretStatue : OneTimeCollectable { protected override void Start() { base.Start(); this.pls = base.GetComponent(); bool @bool = GameProgress.GetBool("SECRET_DISCOVERED_" + Singleton.Instance.CurrentSceneName + "_statue", false, GameProgress.Location.Local, null); if (@bool) { this.DisableGoal(true); } } private void OnTriggerEnter(Collider c) { this.CheckIfSeen(c); } private void OnTriggerStay(Collider c) { this.CheckIfSeen(c); } private void CheckIfSeen(Collider c) { if (this.disabled || WPFMonoBehaviour.levelManager.gameState == LevelManager.GameState.Completed) { return; } LightTrigger component = c.GetComponent(); if (component) { PointLightSource lightSource = component.LightSource; if (lightSource && lightSource.lightType == PointLightMask.LightType.PointLight) { this.Collect(); } else if (lightSource.lightType == PointLightMask.LightType.BeamLight) { if (Vector3.Distance(base.transform.position, lightSource.beamArcCenter) < lightSource.colliderSize) { this.Collect(); } else { float beamAngle = lightSource.beamAngle; Vector3 a = Vector3.up * base.transform.position.y + Vector3.right * base.transform.position.x; Vector3 b = Vector3.up * c.transform.position.y + Vector3.right * c.transform.position.x; Vector3 from = a - b; float num = Vector3.Angle(from, lightSource.transform.up); if (num < beamAngle * 0.5f) { this.Collect(); } } } } } protected override void DisableGoal(bool disable = true) { this.disabled = disable; for (int i = 0; i < this.components.Length; i++) { if (this.components[i] is Collider) { (this.components[i] as Collider).enabled = !disable; } } this.pls.usesCurves = !disable; this.pls.isEnabled = disable; } public override void Collect() { if (this.collected) { return; } if (this.collectedEffect) { UnityEngine.Object.Instantiate(this.collectedEffect, base.transform.position, base.transform.rotation); } AudioManager instance = Singleton.Instance; instance.Play2dEffect(WPFMonoBehaviour.gameData.commonAudioCollection.secretStatueFound); Singleton.Instance.AddExperience(PlayerProgress.ExperienceType.HiddenStatueFound); if (GameProgress.SecretStatueCount() == GameProgress.MaxStatueCount()) { Singleton.Instance.AddExperience(PlayerProgress.ExperienceType.AllHiddenStatuesFound); } this.collected = true; this.pls.isEnabled = this.collected; this.OnCollected(); } public override void OnCollected() { base.StartCoroutine(this.ShowPopup()); GameProgress.SetBool("SECRET_DISCOVERED_" + Singleton.Instance.CurrentSceneName + "_statue", true, GameProgress.Location.Local); GameProgress.AddSecretStatue(); int count = GameProgress.SecretStatueCount(); if (Singleton.IsInstantiated()) { Singleton.Instance.ReportAchievementProgress("grp.BELONGS_IN_MUSEUM", 100.0); Singleton.Instance.TryReportAchievementProgress("grp.ARCHEOLOGIST", 100.0, (int limit) => count >= limit); } } private IEnumerator ShowPopup() { yield return new WaitForSeconds(0.5f); UnityEngine.Object.Instantiate(this.statuePopup.gameObject, WPFMonoBehaviour.hudCamera.transform.position + Vector3.forward * 50f, Quaternion.identity); yield break; } protected override string GetNameKey() { return string.Empty; } [SerializeField] private GameObject statuePopup; private PointLightSource pls; }