/
arti4
/
Diplom
Обзор
Документация
Войти
/
arti4
/
Diplom
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Scripts/Other/GameController.cs
211 строк
5 KB
arti4
Загрузка всех скриптов
17 май 2026, 09:08
Верифицирован
17 май 2026, 09:08
cc2e1cd
Код
Авторство
О чём код?
using UnityEngine; public class GameController : MonoBehaviour { [Header("��������� �����")] [SerializeField] private GameObject bigMapCanvas; [SerializeField] private Camera bigMapCamera; [SerializeField] private MiniMapController miniMapController; [SerializeField] private BigMapController bigMapController; [SerializeField] private TerrainLODManager terrainLODManager; [SerializeField] private LargeBuildingsManager largeBuildingsManager; [Header("��������� �������")] [SerializeField] private bool lockCursorInGame = true; [Header("��������� ������")] [SerializeField] private CurrencyManager currencyManager; private bool isMapOpen = false; private static bool isMapOpenStatic = false; public static bool IsMapOpenStatic => isMapOpenStatic; void Start() { if (bigMapCanvas != null) bigMapCanvas.SetActive(false); if (bigMapCamera != null) bigMapCamera.gameObject.SetActive(false); if (lockCursorInGame) { Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; } if (largeBuildingsManager == null) largeBuildingsManager = FindFirstObjectByType<LargeBuildingsManager>(); if (currencyManager == null) { currencyManager = FindObjectOfType<CurrencyManager>(); if (currencyManager == null) { Debug.LogWarning("CurrencyManager �� ������! �������� ��� �� ��������� GameObject."); } } ApplyShadowsSettings(); } void Update() { if (Input.GetKeyDown(KeyCode.M)) { ToggleMap(); } if (isMapOpen && Input.GetKeyDown(KeyCode.Escape)) { CloseMap(); } if (isMapOpen && Input.GetKeyDown(KeyCode.R)) { if (bigMapController != null) { bigMapController.ResetMapPosition(); } } if (isMapOpen && Input.GetKeyDown(KeyCode.C)) { if (bigMapController != null) { bigMapController.CenterOnPlayer(); } } #if UNITY_EDITOR if (Input.GetKeyDown(KeyCode.KeypadPlus) || Input.GetKeyDown(KeyCode.Equals)) { if (currencyManager != null) currencyManager.AddMoney(10000); } if (Input.GetKeyDown(KeyCode.KeypadMinus) || Input.GetKeyDown(KeyCode.Minus)) { if (currencyManager != null) currencyManager.SpendMoney(5000); } if (Input.GetKeyDown(KeyCode.F9)) { if (currencyManager != null) currencyManager.ResetBalance(); } #endif } void ToggleMap() { if (isMapOpen) { CloseMap(); } else { OpenMap(); } } void OpenMap() { isMapOpen = true; isMapOpenStatic = true; Time.timeScale = 0f; if (bigMapCanvas != null) { bigMapCanvas.SetActive(true); } if (bigMapCamera != null) { bigMapCamera.gameObject.SetActive(true); } if (bigMapController != null) { bigMapController.InitializeBigMap(); } if (terrainLODManager == null) terrainLODManager = FindFirstObjectByType<TerrainLODManager>(); if (terrainLODManager != null) { terrainLODManager.ShowAllTerrains(); } if (largeBuildingsManager == null) largeBuildingsManager = FindFirstObjectByType<LargeBuildingsManager>(); if (largeBuildingsManager != null) { largeBuildingsManager.ShowAllBuildings(); } Cursor.lockState = CursorLockMode.None; Cursor.visible = true; } void CloseMap() { isMapOpen = false; isMapOpenStatic = false; Time.timeScale = 1f; if (bigMapCanvas != null) { bigMapCanvas.SetActive(false); } if (bigMapCamera != null) { bigMapCamera.gameObject.SetActive(false); } if (bigMapController != null) { bigMapController.CleanupBigMap(); } if (terrainLODManager != null) { terrainLODManager.UpdateVisibility(); } if (largeBuildingsManager != null) { largeBuildingsManager.ForceUpdateVisibility(); } if (lockCursorInGame) { Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; } } private void ApplyShadowsSettings() { bool shadowsDisabled = PlayerPrefs.GetInt("ShadowsEnabled", 0) == 1; Light[] lights = FindObjectsByType<Light>(FindObjectsSortMode.None); foreach (Light light in lights) { if (light.type == LightType.Directional) { light.shadows = shadowsDisabled ? LightShadows.None : LightShadows.Soft; } } QualitySettings.shadows = shadowsDisabled ? ShadowQuality.Disable : ShadowQuality.All; } public bool IsMapOpen() { return isMapOpen; } }