using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using _Data.Variabales.DayWeather; public class LocationMap : MonoBehaviour { [Serializable] public class LocationMapData { public string mapName = ""; public Vector3 controllPoint; public Vector2 mapMeterFactor = Vector2.zero; public float mapAngle; public float cursorPlayerAngle; public GameObject MapContent; public GameObject MapMarkersContent; public Transform[] Spawners; } public Fading MapFading; public RectTransform playerCursorPosition; public LocationMapData[] mapData; private Transform playerPosition; public OrbitCameraByPlayer orbitCamera; public Dropdown TimeOfDayDropDown; public Dropdown WeatherDropDown; public Text mapNameText; public Text timeAndWeatherLabelText; public Camera mCamera; private int spawnerIndex; private int sceneID; public bool isSymulation; public Transform symulatePlayer; public int symulateSceneId; [SerializeField] private ScriptableTimeDayVariable timeDay; [SerializeField] private ScriptableEnumWeatherType weather; private void Start() { if (FScriptsHandler.Instance == null) { return; } playerPosition = FScriptsHandler.Instance.m_PlayerMain.transform; sceneID = FScriptsHandler.Instance.m_SceneSettings.sceneID; SetupDropdownWeatherAndTimeDay(); mapNameText.text = GameManager.Instance.gameLocations[sceneID].name.ToUpper(); mCamera.transform.position = playerPosition.position; mCamera.transform.localEulerAngles = playerPosition.localEulerAngles; mapData[sceneID].MapMarkersContent.SetActive(value: true); mapData[sceneID].MapContent.SetActive(value: true); if (sceneID == 7 || sceneID == 8 || sceneID == 9) { TimeOfDayDropDown.gameObject.SetActive(value: false); WeatherDropDown.gameObject.SetActive(value: false); timeAndWeatherLabelText.enabled = false; } if (Singleton.Instance.GetCurrentPlayerData().GameMode == GameManager.PlayerData.CPlayer.GameMode.Realistic) { if (mapData[sceneID].MapMarkersContent.activeSelf) { mapData[sceneID].MapMarkersContent.SetActive(value: false); } TimeOfDayDropDown.gameObject.SetActive(value: false); WeatherDropDown.gameObject.SetActive(value: false); timeAndWeatherLabelText.enabled = false; } else if ((bool)FScriptsHandler.Instance.m_PlayerMain.currentRod) { bool flag = false; if (FScriptsHandler.Instance.m_PlayerMain.currentRod.CheckIsInUse()) { flag = true; } if (flag && mapData[sceneID].MapMarkersContent.activeSelf) { mapData[sceneID].MapMarkersContent.SetActive(value: false); } else if (!mapData[sceneID].MapMarkersContent.activeSelf) { mapData[sceneID].MapMarkersContent.SetActive(value: true); } } else if (FScriptsHandler.Instance.m_PlayerMain.transform.parent.name != "_GAMEPLAY_V2" && mapData[sceneID].MapMarkersContent.activeSelf) { mapData[sceneID].MapMarkersContent.SetActive(value: false); } if (UnityEngine.Object.FindObjectsOfType().Length > 1) { mCamera.GetComponent().enabled = false; } if ((bool)UnityEngine.Object.FindObjectOfType() && UnityEngine.Object.FindObjectOfType().currentPlayerCharacter != null && mapData[sceneID].MapMarkersContent.activeSelf) { mapData[sceneID].MapMarkersContent.SetActive(value: false); } } private void Update() { if (!isSymulation) { FollowMap(); } else { SymulateFollowMap(); } if (GameManager.Instance.player.GetButtonDown("mapScene") && GameManager.Instance.messageBoxStack.Count == 0) { StartCoroutine(CloseMapByFade()); } } private void SymulateFollowMap() { sceneID = symulateSceneId; if (symulatePlayer == null) { symulatePlayer = GameObject.Find("SymulatePlayerMap").transform; } Vector3 vector = new Vector3((symulatePlayer.position.x - mapData[sceneID].controllPoint.x) * mapData[sceneID].mapMeterFactor.x, (symulatePlayer.position.z - mapData[sceneID].controllPoint.z) * mapData[sceneID].mapMeterFactor.y, (symulatePlayer.position.z - mapData[sceneID].controllPoint.z) * mapData[sceneID].mapMeterFactor.y); Vector3 vector2 = Quaternion.AngleAxis(mapData[sceneID].mapAngle, Vector3.up) * vector; playerCursorPosition.anchoredPosition = new Vector3(0f - vector2.x, 0f - vector2.z, 0f); playerCursorPosition.localEulerAngles = new Vector3(0f, 0f, mapData[sceneID].cursorPlayerAngle - symulatePlayer.localEulerAngles.y); } private void FollowMap() { if (!(playerPosition == null)) { Vector3 vector = new Vector3((playerPosition.position.x - mapData[sceneID].controllPoint.x) * mapData[sceneID].mapMeterFactor.x, (playerPosition.position.z - mapData[sceneID].controllPoint.z) * mapData[sceneID].mapMeterFactor.y, (playerPosition.position.z - mapData[sceneID].controllPoint.z) * mapData[sceneID].mapMeterFactor.y); Vector3 vector2 = Quaternion.AngleAxis(mapData[sceneID].mapAngle, Vector3.up) * vector; playerCursorPosition.anchoredPosition = new Vector3(0f - vector2.x, 0f - vector2.z, 0f); playerCursorPosition.localEulerAngles = new Vector3(0f, 0f, mapData[sceneID].cursorPlayerAngle - playerPosition.localEulerAngles.y); } } public void GoToSpawnerButton(int index) { FRod currentRod = FScriptsHandler.Instance.m_PlayerMain.currentRod; if ((object)currentRod != null && currentRod.fishingLine?.currentLineHandler?.PhisicsLineOut > 0f) { GameManager.Instance.ShowMessagePopup(LanguageManager.Instance.GetText("ROD_BLOCK_DURING_TELEPORT"), FScriptsHandler.Instance.m_Canvas.transform); return; } spawnerIndex = index; GameManager.Instance.CreateMessageBox("DO_YOU_WANT_TO_SPAWN", GetComponent().transform, 4); } public void Spawn() { Debug.Log("spawn"); FScriptsHandler.Instance.m_PlayerMain.SpawnPlayer(mapData[sceneID].Spawners[spawnerIndex]); if ((bool)TutorialManager.Instance && !TutorialManager.Instance.tutUpdateBool && TutorialManager.Instance.acctualLessonIndex == 12) { TutorialManager.Instance.CheckLessonPopUp(12); } StartCoroutine(CloseMapByFade()); } private IEnumerator CloseMapByFade() { MapFading.StartFade(Fading.fade_type.Down, 0.5f); Image[] componentsInChildren = mapData[sceneID].MapContent.GetComponentsInChildren(); for (int i = 0; i < componentsInChildren.Length; i++) { componentsInChildren[i].gameObject.SetActive(value: false); } playerCursorPosition.gameObject.SetActive(value: false); mCamera.transform.position = FScriptsHandler.Instance.m_PlayerMain.transform.position; mCamera.transform.localEulerAngles = FScriptsHandler.Instance.m_PlayerMain.transform.localEulerAngles; yield return new WaitForSecondsRealtime(0.1f); GameManager.Instance.UnloadAddectiveScene(); } private void SetupDropdownWeatherAndTimeDay() { TimeOfDayDropDown.ClearOptions(); WeatherDropDown.ClearOptions(); List list = new List(); List list2 = new List(); list.Add(LanguageManager.Instance.GetText("WEATHER_CLEAR")); list.Add(LanguageManager.Instance.GetText("WEATHER_CLOUDY")); list.Add(LanguageManager.Instance.GetText("WEATHER_OVERCAST")); list.Add(LanguageManager.Instance.GetText("WEATHER_LIGHTRAIN")); list.Add(LanguageManager.Instance.GetText("WEATHER_MEDIUMRAIN")); list.Add(LanguageManager.Instance.GetText("WEATHER_STORM")); list2.Add(LanguageManager.Instance.GetText("TIMEOFDAY_MORNING")); list2.Add(LanguageManager.Instance.GetText("TIMEOFDAY_NOON")); list2.Add(LanguageManager.Instance.GetText("TIMEOFDAY_EVENING")); list2.Add(LanguageManager.Instance.GetText("TIMEOFDAY_NIGHT")); WeatherDropDown.AddOptions(list); TimeOfDayDropDown.AddOptions(list2); WeatherDropDown.value = weather.GetWeatherId(); TimeOfDayDropDown.value = (int)timeDay.GetTimeOfDayFromHour(); } public void WeatherDropdownChange() { weather.SetWeather(WeatherDropDown.value); } public void TimeOfDayDropdownChange() { timeDay.SetDayTime((TimeOfDay)TimeOfDayDropDown.value); } }