using System; using System.Threading.Tasks; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement; public enum Location { Pechatniki, Sherbinka, BulevardSlavyanski, Solnechaya, Shukinskaya, AprelevkaDepo } public class GameSystem : MonoBehaviour { public static GameSystem Instance { get; private set; } public List gameComponents { get; private set; } = new List(); [Space] [SerializeField] Text aboutStationText; [SerializeField] Text stationNameText; [Space] [SerializeField] UIMainMenu mainMenu; [SerializeField] UICanvas trainsMenu; [Space] public UICanvas trainEP2D; public UICanvas train2; public UICanvas train3; [Space] [SerializeField] GameObject[] sigletonComponents; public event Action OnSceneLoaded; public Dictionary locationsName { get; private set; } = new() { {"StationPechatnici", Location.Pechatniki}, {"StationSherbinka", Location.Sherbinka}, {"StationSlavyanskyBoulevard", Location.BulevardSlavyanski}, {"StationSolnechnaya", Location.Solnechaya}, {"StationShchukinskaya", Location.Shukinskaya}, {"AprelevkaDepo", Location.AprelevkaDepo} }; public async void LoadScene(string sceneName) { if(mainMenu.gameObject.activeSelf) mainMenu.Hide(); mainMenu.UpdateLocationMenu(locationsName[sceneName]); var location = locationsName[sceneName]; switch(location) { case Location.Pechatniki: stationNameText.text = "Печатники"; aboutStationText.text = "Этот современный и просторный пригородный вокзал D2 общей площадью больше 11,2 тыс. кв. метров стал основой нового ТПУ, который объединил Люблинско-Дмитровскую и Большую кольцевую линии метро, 14 маршрутов наземного транспорта. Он улучшил транспортную доступность районов Печатники, Текстильщики и Люблино.\n\nПересадка между МЦД и метро, организованная по принципу «сухие ноги», занимает примерно три минуты.\n\nОбщая площадь станции Щукинская составляет 6,2 тысячи квадратных метров, включая пассажирский терминал с двумя вестибюлями (3,7 тысячи квадратных метров) и островную платформу (2,5 тысячи квадратных метров) с навесом на всю длину, защищающим пассажиров от дождя, снега и солнца. Это 10 станция D2, построенная по всем стандартам Московского транспорта: вестибюли с панорамным остеклением, лифты, эскалаторы, безопасные переходы через ж/д пути. Безбарьерная среда, включающая шесть эскалаторов и три лифта, облегчает пользование станцией для маломобильных пассажиров — пожилых людей, мам с колясками, пассажиров с детьми и багажом, людей с ограниченными физическими возможностями."; break; case Location.Sherbinka: stationNameText.text = "Щербинка"; aboutStationText.text = "Сейчас на станции ведется строительство ТПУ Щербинка на D2. Это надземный пешеходный переход-конкорс, который будет включать в себя два кассовых блока, зону ожидания, комнату матери и ребенка, помещения администрации и службы безопасности. Здание оснастят эскалаторами и лифтами для спуска на пассажирские платформы и выхода в город.\n\nВ перспективе ТПУ «Щербинка» улучшит транспортную доступность, объединит городское пространство и сформирует инфраструктуру территории. Планируемое завершение работ – конец 2023 года."; break; case Location.BulevardSlavyanski: stationNameText.text = "Славянский бульвар"; aboutStationText.text = "Станция D1 Славянский бульвар – самый крупный пригородный остановочный пункт, общая площадь которого превышает 13 тыс. кв. метров, что сравнимо с двумя футбольными полями.\n\nСтанция состоит из двух островных платформ и нового пешеходного тоннеля. Главной конструктивной особенностью комплекса является навес купольного типа, который защищает пассажиров от дождя, снега и солнца. Навес уникален, он накрывает сразу обе островные платформы и железнодорожные пути. Такой массивной конструкции нет ни на одной остановке Московского железнодорожного узла.\n\nСлавянский бульвар связывает четыре вида транспортного сообщения: метро, МЦД, «Аэроэкспресс», наземный общественный транспорт, и удобен для пешеходов. Это один из крупнейших пересадочных узлов в столице. По объёмам пассажиропотока он может сравниться с такими новейшими ТПУ как «Савёловская» или «Окружная». Здесь создана безбарьерная среда, установлены эскалаторы и лифты."; break; case Location.Solnechaya: stationNameText.text = "Солнечная"; aboutStationText.text = "Станция Солнечная — не только остановочный пункт пригородного сообщения, но и конечная станция 10 маршрутов наземного пассажирского транспорта.\n\nСпециалисты ЦППК построили современный ТПУ «Солнечная» в виде крытого пешеходного моста. В здании общей площадью две тысячи квадратных метров есть просторная теплая зона ожидания для пассажиров. Здесь установлены современные системы теплоснабжения, освещения, кондиционирования, видеонаблюдения, пожарной безопасности, а также электронное табло с информацией о времени прибытия транспорта. В ТПУ обеспечен комфортный доступ для маломобильных граждан, установлено два лифта."; break; case Location.Shukinskaya: stationNameText.text = "Щукинская"; aboutStationText.text = "Станция D2 Щукинская стала частью одноименного крупного транспортно-пересадочного узла, который объединяет МЦД-2, Таганско-Краснопресненскую линию метро и наземный городской пассажирский транспорт. Она существенно разгружает соседнюю станцию Тушинская.\n\nПересадка между МЦД и метро, организованная по принципу «сухие ноги», занимает примерно три минуты.\n\nОбщая площадь станции Щукинская составляет 6,2 тысячи квадратных метров, включая пассажирский терминал с двумя вестибюлями (3,7 тысячи квадратных метров) и островную платформу (2,5 тысячи квадратных метров) с навесом на всю длину, защищающим пассажиров от дождя, снега и солнца. Это 10 станция D2, построенная по всем стандартам Московского транспорта: вестибюли с панорамным остеклением, лифты, эскалаторы, безопасные переходы через ж/д пути. Безбарьерная среда, включающая шесть эскалаторов и три лифта, облегчает пользование станцией для маломобильных пассажиров — пожилых людей, мам с колясками, пассажиров с детьми и багажом, людей с ограниченными физическими возможностями."; break; case Location.AprelevkaDepo: stationNameText.text = "Депо Апрелевка"; aboutStationText.text = "Депо было построено и пущено в эксплуатацию в 1954 году. Тогда оно состояло из двух цехов, а с 1967 года по 1970 год был возведен еще один. Сейчас в его составе — четыре цеха, в которых постоянно совершенствуется качество и технологии, внедряется новое оборудование для качественного ремонта подвижного состава и достижения высоких производственных показателей.\n\n В мае 2018 года моторвагонное депо Апрелевка было передано в долгосрочную аренду ЦППК. Сейчас в его парке — 45 единиц моторвагонного подвижного состава серий ЭП2Д, ЭД4М, ЭД4МКу и т.д. Из них 34 собственных поезда ЦППУ и 11 арендованных. Они осуществляют пригородные перевозки на электрифицированных участках: Москва – Калуга-1, Москва – Нара, Москва – Солнечная, Москва – Новопеределкино, Калуга – Сухиничи, Москва – Кресты, Бекасово – Кубинка, Бекасово – Детково, Вязьма – Можайск.\n\nВ мае 2018 года моторвагонное депо Апрелевка было передано в долгосрочную аренду ЦППК. Сейчас в его парке — 45 единиц моторвагонного подвижного состава серий ЭП2Д, ЭД4М, ЭД4МКу и т.д. Из них 34 собственных поезда ЦППУ и 11 арендованных. Они осуществляют пригородные перевозки на электрифицированных участках: Москва – Калуга-1, Москва – Нара, Москва – Солнечная, Москва – Новопеределкино, Калуга – Сухиничи, Москва – Кресты, Бекасово – Кубинка, Бекасово – Детково, Вязьма – Можайск."; break; } try { var qrReader = FindObjectOfType(); qrReader.camTexture.Stop(); } catch {} var sceneLoadingOperation = SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Single); while(!sceneLoadingOperation.isDone) await Task.Yield(); OnSceneLoaded?.Invoke(); FindObjectOfType().OnSceneLoaded.AddListener(()=> { mainMenu.gameObject.SetActive(true); }); } public void ShowAboutTrain() { switch(mainMenu.currentTrain.type) { case(TrainType.EP2D): ShowAboutEP2D(); break; case(TrainType.Ivolga2): ShowAboutIvolga2(); break; case(TrainType.Ivolga3): ShowAboutIvolga3(); break; } } public void ShowAboutEP2D() { train2.gameObject.SetActive(false); train3.gameObject.SetActive(false); trainsMenu.gameObject.SetActive(true); trainEP2D.gameObject.SetActive(true); } public void ShowAboutIvolga2() { train3.gameObject.SetActive(false); trainEP2D.gameObject.SetActive(false); trainsMenu.gameObject.SetActive(true); train2.gameObject.SetActive(true); } public void ShowAboutIvolga3() { train2.gameObject.SetActive(false); trainEP2D.gameObject.SetActive(false); trainsMenu.gameObject.SetActive(true); train3.gameObject.SetActive(true); } public void LeaveScene() { var sceneLoadingOperation = SceneManager.LoadSceneAsync("MainMenu", LoadSceneMode.Single); } public void AddGameComponent(IGameComponent component) { if(!gameComponents.Contains(component)) gameComponents.Add(component); } void Awake() { foreach(var item in sigletonComponents) DontDestroyOnLoad(item.gameObject); Instance = this; } void Start() { GameSystem[] gameSystems = FindObjectsOfType(); if(gameSystems.Length > 1) { Destroy(this.gameObject); return; } DontDestroyOnLoad(this); } void Update() { for(int i = 0; i < gameComponents.Count; i++) gameComponents[i].OnUpdate(); } void FixedUpdate() { for(int i = 0; i < gameComponents.Count; i++) gameComponents[i].OnFixedUpdate(); } void LateUpdate() { for(int i = 0; i < gameComponents.Count; i++) gameComponents[i].OnLateUpdate(); } public void RemoveGameComponent(IGameComponent component) { if(gameComponents.Contains(component)) gameComponents.Remove(component); } }