123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- using SC.XR.Unity;
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class ScenesManager
- {
- public enum mType
- {
- LogoInt = 1,
- LoginInt = 2,
- officeInt = 3,
- RoomInt = 4,
- publicInt = 5,
- }
- public enum SceneType
- {
- GameStartLogo = 10001,
- ShowLogin = 20001,
- ShowOffice = 30001,
- CreateRoom = 30101,
- JoinRoom = 30102,
- UserSystem = 30103,
- RemoteSystem = 30104,
- OfficeWindow =30105,
- ShowRoom = 40001,
- RoomMain = 40101,
- RoomOtherUser = 40102,
- RoomInfo = 40103,
- RoomFile = 40104,
- PopPublic = 50001,
- PopPeerView = 50101,
- PopUpInfo = 50101,
- PopCall = 50102,
- }
- private static ScenesManager instance;
- public static ScenesManager Instance
- {
- get
- {
- if (instance == null)
- {
- instance = new ScenesManager();
- }
- return instance;
- }
- }
- public List<SceneInfo> windows = new List<SceneInfo>();
- public Dictionary<int, List<SceneInfo>> dlglist = new Dictionary<int, List<SceneInfo>>();
- public void initWindow(GameObject window)
- {
- SceneInfo sceneInfo = window.AddComponent<SceneInfo>();
- SceneType stp = (SceneType)System.Enum.Parse(typeof(SceneType), window.name.Split('(')[0]);
- sceneInfo.setType(stp);
- int codeint = stp.GetHashCode() / 10000 ;
- if(stp.GetHashCode()-(codeint*10000)==1)
- {
- windows.Add(sceneInfo);
- // window.SetActive(false);
- }
- else
- {
- if(dlglist.ContainsKey(codeint))
- {
- List<SceneInfo> dlg = dlglist[codeint];
- dlg.Add(sceneInfo);
- dlglist[codeint]=dlg;
- }
- else
- {
- List<SceneInfo> dlg = new List<SceneInfo>();
- dlg.Add(sceneInfo);
- dlglist.Add(codeint,dlg);
- }
- }
- }
- public void showWindow(SceneType sceneType)
- {
- for (int i = 0; i < windows.Count; i++)
- {
- int codeint = windows[i]._sceneType.GetHashCode() / 10000;
- if (windows[i]._sceneType==sceneType|| codeint== mType.publicInt.GetHashCode())
- {
- windows[i].gameObject.SetActive(true);
- MonoBehaviour alist= windows[i].GetComponent<MonoBehaviour>();
- Type t = Type.GetType(alist.name);
- System.Reflection.MethodInfo md = t.GetMethod("initShow");
- if (md != null)
- {
- md.Invoke(alist,null);
- }
- }
- else
- {
- windows[i].gameObject.SetActive(false);
- }
- }
- }
- public void initPopUp()
- {
- // for (int i = 0; i < dlglist[mType.publicInt.GetHashCode()].Count; i++)
- // {
- // dlglist[mType.publicInt.GetHashCode()][i].gameObject.SetActive(false);
- // }
-
- }
- private PopPublic _popPublic;
- public PopPublic popPublic
- {
- get {
- if(!_popPublic)
- {
- for (int i = 0; i < dlglist[mType.publicInt.GetHashCode()].Count; i++)
- {
- PopPublic ppc = dlglist[mType.publicInt.GetHashCode()][i].GetComponent<PopPublic>();
- if (ppc)
- _popPublic= ppc;
- }
- }
- return _popPublic;
- }
- }
- public void initRoom()
- {
- for (int i = 0; i < dlglist[mType.RoomInt.GetHashCode()].Count; i++)
- {
- MonoBehaviour alist = dlglist[mType.RoomInt.GetHashCode()][i].GetComponent<MonoBehaviour>();
- Type t = Type.GetType(alist.name);
- System.Reflection.MethodInfo md = t.GetMethod("initShow");
- if (md != null)
- {
- md.Invoke(alist, null);
- }
- }
-
- }
- public void showOffice(SceneType stype)
- {
- for (int i = 0; i < dlglist[mType.officeInt.GetHashCode()].Count; i++)
- {
- if(stype == dlglist[mType.officeInt.GetHashCode()][i]._sceneType)
- {
- dlglist[mType.officeInt.GetHashCode()][i].gameObject.SetActive(true);
- MonoBehaviour alist = dlglist[mType.officeInt.GetHashCode()][i].GetComponent<MonoBehaviour>();
- Type t = Type.GetType(alist.name);
- System.Reflection.MethodInfo md = t.GetMethod("initShow");
- if (md != null)
- {
- md.Invoke(alist, null);
- }
- }
- else
- {
- dlglist[mType.officeInt.GetHashCode()][i].gameObject.SetActive(false);
- }
- }
- }
- public void showPop()
- {
- popPublic.gameObject.SetActive(true);
- }
- }
|