| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290 |
- using GFMain;
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using UnityCommon;
- using UnityEngine;
- using UnityEngine.Events;
- using UnityEngine.UI;
- using UnityGameFramework.Runtime;
- namespace DTYJ
- {
- public class UIMainMenu : UIFormLogic
- {
- protected override void OnInit(object userData)
- {
- base.OnInit(userData);
- InitRoleSelect();
- Init浮动菜单();
- goHelpPanel.SetActive(false);
- //InitPositionJump();
- }
- private void Update()
- {
- Update_View();
- Update_FloatMenu();
- }
- #region 角色选择
- public GameObject goPane_角色选择;
- public Toggle toggle值班站长, toggle车站值班员, toggle站务员_站台, toggle站务员_站厅;
- void InitRoleSelect()
- {
- toggle值班站长.isOn = toggle车站值班员.isOn = toggle站务员_站台.isOn = false;
- toggle值班站长.onValueChanged.AddListener((v) => { OnToggleRole_Role(RoleName.值班站长, v); });
- toggle车站值班员.onValueChanged.AddListener((v) => { OnToggleRole_Role(RoleName.车站值班员, v); });
- toggle站务员_站台.onValueChanged.AddListener((v) => { OnToggleRole_Role(RoleName.站务员_站台, v); });
- toggle站务员_站厅.onValueChanged.AddListener((v) => { OnToggleRole_Role(RoleName.站务员_站厅, v); });
- SetToggleState(toggle站务员_站台, Main.Instance.onlineNetwork.networkManager.mode == Mirror.NetworkManagerMode.Host);
- Show角色选择面板(false);
- }
- RoleName roleSelected = 0;
- public void OnToggleRole_Role(RoleName roleName, bool value)
- {
- if (value) roleSelected = roleName;
- else roleSelected = 0;
- }
- bool isMan = true;
- public void OnDropdownGender(int index)
- {
- isMan = index == 0;
- }
- public void OnClickConfirmRole()
- {
- if (roleSelected == 0) MainEntry.CommonUI.messageBox.ShowMessage("请选择角色!");
- else OnlineCtrl.Instance.SelecteRoleName(roleSelected, isMan);
- }
- RoleName roleList = 0;
- public void SetRoleSelected(RoleName roleName)
- {
- roleList = roleName;
- SetToggleState(toggle值班站长, (roleList & RoleName.值班站长) == RoleName.值班站长);
- SetToggleState(toggle车站值班员, (roleList & RoleName.车站值班员) == RoleName.车站值班员);
- //SetToggleState(toggle站务员_站台, (roleList & RoleName.站务员_站台) == RoleName.站务员_站台);
- SetToggleState(toggle站务员_站台, Main.Instance.onlineNetwork.networkManager.mode == Mirror.NetworkManagerMode.Host || (roleList & RoleName.站务员_站台) == RoleName.站务员_站台);
- SetToggleState(toggle站务员_站厅, (roleList & RoleName.站务员_站厅) == RoleName.站务员_站厅);
- }
- private void SetToggleState(Toggle toggle, bool isSelected)
- {
- if (toggle.isOn && isSelected)
- toggle.isOn = false;
- toggle.interactable = !isSelected;
- }
- public void Show角色选择面板(bool value)
- {
- goPane_角色选择.SetActive(value);
- if (value)
- {
- SetRoleSelected(roleList);
- }
- }
- #endregion
- #region 视角返回
- public GameObject goPane_视角返回;
- private void Update_View()
- {
- if (MainEntry.CameraCtrl?.cameraStateCurrent != null)
- {
- goPane_视角返回.SetActive(MainEntry.CameraCtrl.cameraStateCurrent is MotionlessState);
- if (MainEntry.CameraCtrl.cameraStateCurrent is MotionlessState)
- {
- if (Input.GetKeyDown(KeyCode.W) || Input.GetKeyDown(KeyCode.A) || Input.GetKeyDown(KeyCode.S) || Input.GetKeyDown(KeyCode.D) || Input.GetMouseButtonDown(1))
- {
- OnClick视角返回();
- }
- }
- }
- }
- public void OnClick视角返回()
- {
- MainEntry.CameraCtrl?.ToPreCamerastate();
- CloseFloatMenu();
- }
- #endregion
- #region 浮动菜单
- public GameObject goPanel_浮动菜单;
- private GameObject floatMenuItemOrig;
- private readonly List<GameObject> floatMenuItems = new List<GameObject>();
- private Text textTitle;
- private void Init浮动菜单()
- {
- goPanel_浮动菜单.transform.GetChild(0).GetChild(1).GetComponent<Button>().onClick.AddListener(OnClickCloseFloatMenu);
- textTitle = goPanel_浮动菜单.transform.GetChild(0).GetChild(0).GetComponent<Text>();
- floatMenuItemOrig = goPanel_浮动菜单.transform.GetChild(0).GetChild(2).gameObject;
- floatMenuItemOrig.SetActive(false);
- CloseFloatMenu();
- }
- private void Update_FloatMenu()
- {
- if (goPanel_浮动菜单.activeSelf)
- {
- if (Input.GetKeyDown(KeyCode.W) || Input.GetKeyDown(KeyCode.A) || Input.GetKeyDown(KeyCode.S) || Input.GetKeyDown(KeyCode.D) || Input.GetMouseButtonDown(1))
- {
- CloseFloatMenu();
- }
- }
- }
- private void OnClickCloseFloatMenu()
- {
- CloseFloatMenu();
- }
- public void ShowFloatMenu(string title, string[] listItems, Action<string> callback)
- {
- textTitle.text = title;
- CleatAllItems();
- for (int i = 0; i < listItems.Length; i++)
- {
- var item = listItems[i];
- var goNew = Instantiate(floatMenuItemOrig, floatMenuItemOrig.transform.parent);
- goNew.SetActive(true);
- var btn = goNew.GetComponent<Button>();
- btn.GetComponentInChildren<Text>().text = item;
- btn.onClick.AddListener(() =>
- {
- callback?.Invoke(item);
- CloseFloatMenu();
- });
- floatMenuItems.Add(goNew);
- }
- ShowFloatMenuPanel();
- }
- private void CloseFloatMenu()
- {
- CleatAllItems();
- goPanel_浮动菜单.SetActive(false);
- }
- private void CleatAllItems()
- {
- for (int i = 0; i < floatMenuItems.Count; i++)
- {
- Destroy(floatMenuItems[i]);
- }
- floatMenuItems.Clear();
- }
- private void ShowFloatMenuPanel()
- {
- goPanel_浮动菜单.transform.GetChild(0).position = Input.mousePosition;
- goPanel_浮动菜单.SetActive(true);
- }
- #endregion
- #region 帮助文档
- public GameObject goHelpPanel;
- public void OnClickHelp()
- {
- goHelpPanel.SetActive(!goHelpPanel.activeSelf);
- }
- #endregion
- public void OnClickQuitApp()
- {
- if (goPane_角色选择.activeSelf)
- {
- MainEntry.CommonUI.messageBox.ShowMessage("退出当前系统?", MessageBoxParams.MessageType.ConfirmCancel, (v) =>
- {
- if (v == MessageBoxParams.ResultType.Confirm)
- Application.Quit();
- });
- }
- else
- {
- MainEntry.CommonUI.messageBox.ShowMessage("返回登录界面?", MessageBoxParams.MessageType.ConfirmCancel, (v) =>
- {
- if (v == MessageBoxParams.ResultType.Confirm)
- {
- MainEntry.CameraCtrl.ToNone();
- OnlineCtrl.Instance.RoleQuit();
- goPane_角色选择.SetActive(true);
- }
- });
- }
- }
- public GameObject goBtnOrig;
- //private List<string> listPostions = new List<string>() { "1出口", "2出口" };
- List<string> zhanwuyuanList = new List<string>() { "站台A端", "站台B端" };
- private Dictionary<string, GameObject> dicBtnJump = new Dictionary<string, GameObject>();
- public void ClearPositionJump()
- {
- foreach(var item in dicBtnJump.Values)
- {
- DestroyImmediate(item.gameObject);
- }
- dicBtnJump.Clear();
- }
- public void InitPositionJump()
- {
- goBtnOrig.SetActive(false);
- Transform tfRoot = GameObject.Find("快速定位").transform;
- for (int i = 0; i < tfRoot.childCount; ++i)
- {
- var tfP = tfRoot.GetChild(i).transform;
- var btnName = tfP.name;
- if (OnlineCtrl.Instance.mineRoleName == RoleName.站务员_站台)
- {//限制站台站务员跳转的位置,因为水灾上下层进行了区分的
- if (!zhanwuyuanList.Contains(btnName)) continue;
- }
- else
- {
- if (zhanwuyuanList.Contains(btnName)) continue;
- }
- var btnNew = Instantiate(goBtnOrig, goBtnOrig.transform.parent);
- btnNew.SetActive(true);
- btnNew.GetComponentInChildren<Text>().text = btnName;
- btnNew.GetComponent<Button>().onClick.AddListener(() =>
- {
- try
- {
- Player.localPlayer?.SetPosition(tfP);
- if (!(MainEntry.CameraCtrl.cameraStateCurrent is CinemachineState))
- MainEntry.CameraCtrl.ToCinemachine();
- }
- catch { }
- });
- dicBtnJump[btnName] = btnNew;
- }
- foreach (var t in TrainCtrl.TrainCtrlDic)
- {
- AddTrainJumpPosition(t.Value.myTrainNo);
- }
- }
- private Dictionary<string, GameObject> dicBtnTrainJump = new Dictionary<string, GameObject>();
- public void AddTrainJumpPosition(string trainNo)
- {
- if (dicBtnTrainJump.ContainsKey(trainNo)) return;
- var btnNew = Instantiate(goBtnOrig, goBtnOrig.transform.parent);
- btnNew.SetActive(true);
- btnNew.GetComponentInChildren<Text>().text = "列车:" + trainNo;
- btnNew.GetComponent<Button>().onClick.AddListener(() =>
- {
- try
- {
- if (TrainCtrl.TrainCtrlDic.ContainsKey(trainNo))
- {
- var tfView = TrainCtrl.TrainCtrlDic[trainNo].transform.Find("TrainHeadView");
- if (tfView != null)
- MainEntry.CameraCtrl.ToFollow(tfView);
- }
- }
- catch { }
- });
- dicBtnTrainJump[trainNo] = btnNew;
- }
- public void DeleteTrainJumpBnt(string trainNo)
- {
- if (dicBtnTrainJump.ContainsKey(trainNo))
- {
- DestroyImmediate(dicBtnTrainJump[trainNo].gameObject);
- dicBtnTrainJump.Remove(trainNo);
- }
- }
- }
- }
|