using System; using System.Collections; using System.Collections.Generic; using Pathfinding; using PixelCrushers.DialogueSystem; using UnityEngine; using UnityEngine.SceneManagement; // Token: 0x02000038 RID: 56 public class MapExitActions : MonoBehaviour { // Token: 0x060007E6 RID: 2022 RVA: 0x000AEA6C File Offset: 0x000ACC6C public void Setup() { this.box = base.gameObject.GetComponent(); this.box.isTrigger = false; Transform[] componentsInChildren = base.gameObject.GetComponentsInChildren(true); this.lights.Clear(); for (int i = 0; i < componentsInChildren.Length; i++) { if (componentsInChildren[i].gameObject.GetComponent()) { this.lights.Add(componentsInChildren[i].gameObject.GetComponent()); componentsInChildren[i].gameObject.GetComponent().enabled = false; } else { if (componentsInChildren[i] != base.transform && componentsInChildren[i].name.Contains("oint")) { this.spawnPoint = componentsInChildren[i]; } if (componentsInChildren[i].gameObject.GetComponent()) { this.door = componentsInChildren[i].gameObject.GetComponent(); } } } if (this.lights.Count == 0 && this.spawnPoint) { GameObject gameObject = new GameObject("Door Light"); gameObject.transform.SetParent(base.gameObject.transform); gameObject.transform.position = this.spawnPoint.position; Light light = gameObject.AddComponent(); light.range = 7f; light.enabled = false; light.gameObject.SetActive(false); this.lights.Add(light); } if (!this.spawnPoint && this.lights.Count > 0) { this.spawnPoint = this.lights[0].gameObject.transform; } this.sceneTo = this.mapExit.exitTo.ToString(); GameObject gameObject2 = GameObject.Find("Diorama"); this.mapChangeScene = SceneManager.GetSceneByName(gameObject2.GetComponent().sceneName); this.sceneFrom = gameObject2.GetComponent().sceneName; this.subExit = this.mapExit.subExit.ToString(); this.mapExit.doorPoint = this.spawnPoint.position; if (Links.x) { this.Icon(); } } // Token: 0x060007E7 RID: 2023 RVA: 0x000AECA0 File Offset: 0x000ACEA0 private void Icon() { if (!this.icon) { if (!this.inBeta) { this.icon = Links.x.cellar.GetPooledGameObject(134); this.icon.GetComponent().mapExit = this; this.icon.GetComponent().beach = false; this.icon.transform.position = this.NormalIconPosition(); this.icon.layer = 13; this.box.enabled = true; this.box.gameObject.layer = 8; this.icon.transform.parent = base.transform.parent; this.iconSprite = this.icon.GetComponent(); if (this.mapExit.exitTo == MapExit.exitToNames.Interiors || this.mapExit.exitTo == MapExit.exitToNames.Exterior) { this.iconSprite.sprite = Links.x.doorIconLocal; } else { this.iconSprite.sprite = Links.x.doorIconGlobal; } this.icon.SetActive(true); this.iconSprite.material = Links.x.doorIconNormal; return; } this.box.gameObject.layer = 8; } } // Token: 0x060007E8 RID: 2024 RVA: 0x000AEDEB File Offset: 0x000ACFEB public Vector3 GetIconPosition() { if (this.icon) { return this.icon.transform.position + new Vector3(0f, 0.9f, 0f); } return this.GetColliderCenter(); } // Token: 0x060007E9 RID: 2025 RVA: 0x000AEE2A File Offset: 0x000AD02A public void SetSprite(bool isLocked) { if (isLocked) { this.iconSprite.sprite = Links.x.doorIconLocked; return; } this.iconSprite.sprite = Links.x.doorIconLocal; } // Token: 0x060007EA RID: 2026 RVA: 0x000AEE5C File Offset: 0x000AD05C private void OnDestroy() { if (Links.x && Links.x.cellar && this.icon) { Links.x.cellar.ReturnPooledGameObject(134, this.icon); } } // Token: 0x060007EB RID: 2027 RVA: 0x000AEEB0 File Offset: 0x000AD0B0 public void SetupNodeLink() { if (this.mapExit.exitTo == MapExit.exitToNames.Interiors || this.mapExit.exitTo == MapExit.exitToNames.Exterior) { bool flag = false; if (this.mapExit.exitTo == MapExit.exitToNames.Interiors) { flag = true; } this.connectionExit = null; if (flag) { this.connectionExit = Links.x.diorama.MatchMapExitInteriorExterior(flag, this.mapExit.interiorConnection, this.mapExit); } else { this.connectionExit = Links.x.diorama.MatchMapExitInteriorExterior(flag, this.mapExit.exteriorConnection, this.mapExit); } if (this.connectionExit && !this.connectionExit.GetComponent().nodeLink) { this.nodeLink = this.spawnPoint.gameObject.GetComponent(); if (!this.nodeLink) { this.nodeLink = this.spawnPoint.gameObject.AddComponent(); } this.nodeLink.end = this.connectionExit.doorPoint; this.nodeLink.SetLinks(); } if (Links.x.main.node != null) { this.PartyInRoom(Links.x.main.node.Area); } } } // Token: 0x060007EC RID: 2028 RVA: 0x000AEFF1 File Offset: 0x000AD1F1 public void SetDoorPoint(Vector3 clickedPosition) { this.mapExit.doorPoint = clickedPosition; if (this.lights.Count > 0) { this.lights[0].transform.position = clickedPosition; } } // Token: 0x060007ED RID: 2029 RVA: 0x000AF024 File Offset: 0x000AD224 private void Start() { this.box = base.gameObject.GetComponent(); this.box.isTrigger = false; if (this.lights.Count == 0) { this.Setup(); } else { this.Icon(); } for (int i = 0; i < this.lights.Count; i++) { this.lights[i].gameObject.SetActive(false); } this.sceneTo = this.mapExit.exitTo.ToString(); this.subExit = this.mapExit.subExit.ToString(); this.mapExit.doorPoint = this.spawnPoint.position; if (!this.hoverMeshRenderer) { foreach (object obj in base.transform) { Transform transform = (Transform)obj; if (transform.gameObject.GetComponent() && !transform.gameObject.name.Contains("Blocker") && this.lights.Count == 0) { this.hoverMeshRenderer = transform.gameObject.GetComponent(); this.hoverMeshRenderer.enabled = false; GameObject gameObject = new GameObject("Door Light"); gameObject.transform.SetParent(base.gameObject.transform); gameObject.transform.position = this.hoverMeshRenderer.gameObject.transform.position; Light light = gameObject.AddComponent(); light.range = this.hoverMeshRenderer.bounds.size.x; light.enabled = false; light.gameObject.SetActive(false); this.lights.Add(light); } } } } // Token: 0x060007EE RID: 2030 RVA: 0x000AF224 File Offset: 0x000AD424 public Vector3 NormalIconPosition() { if (this.mapExit.exitTo == MapExit.exitToNames.Interiors || this.mapExit.exitTo == MapExit.exitToNames.Exterior) { return Vector3.Lerp(this.spawnPoint.transform.position + new Vector3(0f, 3f, 0f), this.box.transform.position, 0.5f); } return this.spawnPoint.position + new Vector3(0f, 1.5f, 0f); } // Token: 0x060007EF RID: 2031 RVA: 0x000AF2B8 File Offset: 0x000AD4B8 public void PartyInRoom(uint area) { if (this.mapExit.exitTo == MapExit.exitToNames.Interiors || this.mapExit.exitTo == MapExit.exitToNames.Exterior) { if (Links.x.worldCamera.orthographic) { this.icon.transform.position = this.NormalIconPosition(); return; } if (this.nodeLink != null && this.nodeLink.startNode != null && this.nodeLink.startNode.Area == area) { bool flag = false; for (int i = 0; i < 10; i++) { if (!flag) { Vector3 position = this.icon.transform.position; float num = 0.5f; Vector3 right = Links.x.worldCamera.gameObject.transform.right; Vector3 forward = Links.x.worldCamera.gameObject.transform.forward; Vector3 vector = position + right * num - new Vector3(0f, 0.5f, 0f); Vector3 vector2 = position + right * num * -1f - new Vector3(0f, 0.5f, 0f); Vector3 vector3 = vector + new Vector3(0f, 1f, 0f); Vector3 vector4 = vector2 + new Vector3(0f, 1f, 0f); Camera worldCamera = Links.x.worldCamera; int width = Screen.width; int height = Screen.height; Vector3 vector5 = worldCamera.WorldToScreenPoint(vector2); Vector3 vector6 = worldCamera.WorldToScreenPoint(vector); Vector3 vector7 = worldCamera.WorldToScreenPoint(vector3); Vector3 vector8 = worldCamera.WorldToScreenPoint(vector4); if ((vector5.x <= 0f && vector8.x <= 0f) || (vector6.x >= (float)width && vector7.x >= (float)width) || (vector5.y <= 0f && vector6.y <= 0f) || (vector7.y >= (float)height && vector8.y >= (float)height)) { if (vector6.x <= 0f && vector7.x <= 0f) { this.icon.transform.position += right * 0.5f; } if (vector6.x >= (float)width && vector7.x >= (float)width) { this.icon.transform.position -= right * 0.5f; } if (vector5.y <= 0f && vector6.y <= 0f) { this.icon.transform.position += forward * 0.5f; this.icon.transform.position = new Vector3(this.icon.transform.position.x, this.icon.transform.position.y + 0.5f, this.icon.transform.position.z); } if (vector8.y >= (float)height && vector7.y >= (float)height) { this.icon.transform.position -= forward * 0.5f; this.icon.transform.position = new Vector3(this.icon.transform.position.x, this.icon.transform.position.y - 0.5f, this.icon.transform.position.z); } } else { flag = true; } } } } } } // Token: 0x060007F0 RID: 2032 RVA: 0x000AF6B0 File Offset: 0x000AD8B0 public Vector3 GetLightPoint() { if (this.lights.Count > 0) { return this.lights[0].gameObject.transform.position + new Vector3(0f, 1f, 0f); } return this.spawnPoint.position; } // Token: 0x060007F1 RID: 2033 RVA: 0x000AF70C File Offset: 0x000AD90C public Vector3 GetColliderCenter() { this.bounds = this.box.bounds; return this.bounds.center + new Vector3(0f, this.bounds.size.y / 2f, 0f); } // Token: 0x060007F2 RID: 2034 RVA: 0x000AF75F File Offset: 0x000AD95F public void InRange() { } // Token: 0x060007F3 RID: 2035 RVA: 0x000AF761 File Offset: 0x000AD961 public void OutOfRange() { } // Token: 0x060007F4 RID: 2036 RVA: 0x000AF764 File Offset: 0x000AD964 public void Use() { bool flag = false; if (!this.visited) { flag = true; Transform parent = base.gameObject.transform.parent; Transform transform = base.transform; if (parent && parent.childCount > 1) { foreach (object obj in parent) { Transform transform2 = (Transform)obj; if (transform2 != transform) { MapExitActions component = transform2.gameObject.GetComponent(); if (component && component.visited) { flag = false; } } } } } if (this.mapExit.locationText != "" && flag) { Links.x.dialogue.PlayLocationText(this.mapExit.locationText); } this.visited = true; this.hovering = false; } // Token: 0x060007F5 RID: 2037 RVA: 0x000AF85C File Offset: 0x000ADA5C public void GoThroughDoor() { if (Links.x.sceneMap.undergroundMap) { Links.x.sceneMap.undergroundMap.UsedDoor(this.mapExit); return; } Links.x.gaia.SetSavedExit(Links.x.diorama.sceneName, this.mapExit.subExit.ToString()); } // Token: 0x060007F6 RID: 2038 RVA: 0x000AF8D0 File Offset: 0x000ADAD0 public void Leave() { if (this.mapExit.questName != Creatures.Adventures.None) { string text = this.mapExit.questName.ToString(); QuestState questState = QuestLog.GetQuestState(text); QuestState questState2 = Records.x.StringToQuestState(this.mapExit.ifIsQuestState.ToString()); QuestState questState3 = Records.x.StringToQuestState(this.mapExit.thenSetQuestTo.ToString()); Debug.Log(string.Concat(new string[] { "Setting map exit quest trigger: ", text, ", current: ", questState.ToString(), ", if is: ", this.mapExit.ifIsQuestState.ToString(), ", change to: ", this.mapExit.thenSetQuestTo.ToString() })); if (questState == questState2) { QuestLog.SetQuestState(text, questState3); } if (text.Contains("GobletGuildThieves")) { questState = QuestLog.GetQuestState("C6_GobletGuildThievesB"); if (questState == questState2) { QuestLog.SetQuestState("C6_GobletGuildThievesB", questState3); } questState = QuestLog.GetQuestState("C6_GobletGuildThievesC"); if (questState == questState2) { QuestLog.SetQuestState("C6_GobletGuildThievesC", questState3); } } } this.GoThroughDoor(); } // Token: 0x060007F7 RID: 2039 RVA: 0x000AFA18 File Offset: 0x000ADC18 public void Hover(bool state) { this.hovering = state; if (this.iconSprite) { if (state) { this.iconSprite.material = Links.x.doorIconHover; } else { this.iconSprite.material = Links.x.doorIconNormal; } } if (state && this.doorActions && this.doorActions.door.locked) { return; } for (int i = 0; i < this.lights.Count; i++) { if (state) { Links.x.hoverObject = base.gameObject; Shader.SetGlobalVector("_DoorLightPosition", this.lights[i].gameObject.transform.position); Records.x.hoverLightColor = this.lights[i].color * (this.lights[i].intensity / 4f) * 4f; Shader.SetGlobalFloat("_DoorLightRange", this.lights[i].range); } else if (this.corout == null && (Links.x.hoverObject == base.gameObject || Links.x.hoverObject == null)) { Links.x.hoverObject = null; } } } // Token: 0x060007F8 RID: 2040 RVA: 0x000AFB81 File Offset: 0x000ADD81 public void Near(bool state) { this.near = state; if (state && this.doorActions) { bool locked = this.doorActions.door.locked; return; } } // Token: 0x04000C4F RID: 3151 public MapExit mapExit; // Token: 0x04000C50 RID: 3152 public List lights = new List(); // Token: 0x04000C51 RID: 3153 public Transform spawnPoint; // Token: 0x04000C52 RID: 3154 public Scene mapChangeScene; // Token: 0x04000C53 RID: 3155 public string sceneTo; // Token: 0x04000C54 RID: 3156 public string sceneFrom; // Token: 0x04000C55 RID: 3157 public string subExit; // Token: 0x04000C56 RID: 3158 public Door door; // Token: 0x04000C57 RID: 3159 public Door buddyDoor; // Token: 0x04000C58 RID: 3160 public DoorActions doorActions; // Token: 0x04000C59 RID: 3161 public DoorActions buddyDoorActions; // Token: 0x04000C5A RID: 3162 public MeshRenderer hoverMeshRenderer; // Token: 0x04000C5B RID: 3163 public NodeLink nodeLink; // Token: 0x04000C5C RID: 3164 public GraphNode nearNode; // Token: 0x04000C5D RID: 3165 public bool visited; // Token: 0x04000C5E RID: 3166 private IEnumerator corout; // Token: 0x04000C5F RID: 3167 private bool hovering; // Token: 0x04000C60 RID: 3168 private bool near; // Token: 0x04000C61 RID: 3169 public MapExit connectionExit; // Token: 0x04000C62 RID: 3170 private GameObject bracket; // Token: 0x04000C63 RID: 3171 private Bounds bounds; // Token: 0x04000C64 RID: 3172 private BoxCollider box; // Token: 0x04000C65 RID: 3173 private GameObject icon; // Token: 0x04000C66 RID: 3174 public SpriteRenderer iconSprite; // Token: 0x04000C67 RID: 3175 public bool inBeta; }