236 lines
7.9 KiB
C#
236 lines
7.9 KiB
C#
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<SaveDataManager>.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<AudioListener>().Length > 1)
|
|
{
|
|
mCamera.GetComponent<AudioListener>().enabled = false;
|
|
}
|
|
if ((bool)UnityEngine.Object.FindObjectOfType<Boat>() && UnityEngine.Object.FindObjectOfType<Boat>().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<Canvas>().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<Image>();
|
|
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<string> list = new List<string>();
|
|
List<string> list2 = new List<string>();
|
|
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);
|
|
}
|
|
}
|