using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityGameFramework.Runtime; using UnityEngine.AI; /// /// 场景 传送点 /// public class SceneEventMapSwitchLogic : MonoBehaviour { public SceneEventMapSwitch info; /// /// 延迟传送时间 /// public float delayTime; Collider player; /// /// 传送节点列表 /// static Dictionary teleportList = new Dictionary(); /// /// 间隔事件 /// static float intervalTime = 2f; /// /// 如果刚刚传送过来 第一次进入事件忽略 /// bool isTeleport = true; private void Awake() { SceneCmptManager.Instance.AddMapSwitchCmpt(this.gameObject); info = this.gameObject.GetComponent(); if (!teleportList.ContainsKey(info.switchIndex)) { teleportList.Add(info.switchIndex, this); } else { teleportList[info.switchIndex] = this; } } // Start is called before the first frame update void Start() { AddFunctionIcon(); } public void OnTriggerEnter(Collider collider) { if (collider.gameObject.layer != LayerMask.NameToLayer("Player")) { return; } if(!isTeleport) { return; } if(info.isDuplicate) { Invoke("SetInteractiveBtn", delayTime); } else { Invoke("TeleportPoint",delayTime); } } public void OnTriggerExit(Collider collider) { if (collider.gameObject.layer != LayerMask.NameToLayer("Player")) { return; } isTeleport = true; if (info.isDuplicate) { UI_BaseMainWindow.Instance().HideInteractive(); } } public void SetInteractiveBtn() { BattleCanvas battlePanel = UI_BaseMainWindow.Instance().battleCanvas; GameObject interactiveObj = battlePanel.transform.Find("Main/Interactive").gameObject; interactiveObj.SetActive(true); GameObject interactiveBtnObj = battlePanel.transform.Find("Main/Interactive/collect").gameObject; UI_BaseMainWindow.Instance().ShowInteractiveIcon(UI_BaseMainWindow.InteractiveType.Teleport, (_btn) => { OpenDuplicateWindow(); }); } public void SetTeleportClose() { isTeleport = false; } public void EnableCollider() { } public void OpenDuplicateWindow() { isTeleport = false; UI_DuplicateWindow.gateIdType = info.NextMapId; UI_DuplicateWindow.appointFloor = info.appointFloor; UI_DuplicateWindow.switchIndex = info.switchIndex; switch (info.NextMapId) { case 200101: UI_DuplicateWindow.floorNum = 10; UI_DuplicateWindow.duplicateTypeName = "" + "唤灵师碎片" + ""; PanelHelper.Instance.ShowPanel("UI_DuplicateFloorWindow"); break; case 200201: UI_DuplicateWindow.floorNum = 5; UI_DuplicateWindow.duplicateTypeName = "" + "武器突破石" + ""; PanelHelper.Instance.ShowPanel("UI_DuplicateFloorWindow"); break; case 200301: UI_DuplicateWindow.floorNum = 5; UI_DuplicateWindow.duplicateTypeName = "" + "言灵突破石" + ""; PanelHelper.Instance.ShowPanel("UI_DuplicateFloorWindow"); break; case 210101: case 210102: case 210103: case 210104: case 210105: case 210106: case 210107: case 210108: UI_DuplicateWindow.floorNum = 10; UI_DuplicateWindow.duplicateTypeName = "" + "言灵召唤材料" + ""; PanelHelper.Instance.ShowPanel("UI_DuplicateFloorWindow"); break; case 210201: UI_DuplicateWindow.floorNum = 5; UI_DuplicateWindow.duplicateTypeName = "" + "武器强化符" + ""; PanelHelper.Instance.ShowPanel("UI_DuplicateFloorWindow"); break; case 210301: case 210302: case 210303: UI_DuplicateWindow.floorNum = 5; UI_DuplicateWindow.duplicateTypeName = "" + "武器突破材料" + ""; PanelHelper.Instance.ShowPanel("UI_DuplicateFloorWindow"); break; case 210401: case 210402: case 210403: case 210404: case 210405: case 210406: case 210407: case 210408: UI_DuplicateWindow.floorNum = 5; UI_DuplicateWindow.duplicateTypeName = "" + "言灵突破材料" + ""; PanelHelper.Instance.ShowPanel("UI_DuplicateFloorWindow"); break; case 507001: UI_DuplicateWindow.floorNum = 1; UI_DuplicateWindow.duplicateTypeName = "" + "Boss战副本" + ""; PanelHelper.Instance.ShowPanel("UI_DuplicateFloorWindow"); break; case 507002: UI_DuplicateWindow.floorNum = 1; UI_DuplicateWindow.duplicateTypeName = "" + "Boss战副本" + ""; PanelHelper.Instance.ShowPanel("UI_DuplicateFloorWindow"); break; } } public void TeleportPoint() { if(info.switchIndex != 0) { GameDateManager.Instance.GateID = info.NextMapId; GameDateManager.Instance.GateVO = new UIVO_Gate.SelectGateVo((UIVO_Gate.EGateDiffculty)GameDateManager.Instance.GateDifficulty); GameDateManager.Instance.GateVO.gateId = info.NextMapId; GameDateManager.Instance.isBackTicket = false; GameDateManager.Instance.IsBackDoor = false; isTeleport = false; GameDateManager.Instance.CreateMapSwitchPoint = info.NextSwitchIndex; //// 上传本张地图数据同步到服务器 //var mapdata = new NetData.Info_Map() //{ // mapId = UserProxy.Instance.player.newMap.curMapId, //}; //mapdata.ResetData(); //MapTcpProxy.Instance.Peer.ReportDataChange(mapdata); // 获取下一张地图服务器数据 MapTcpProxy.Instance.Peer.SwitchNextMap(GameDateManager.Instance.GateID, 0, (mapData) => { // 切换关卡 EventComponent eventCmpt = GameEntry.GetComponent(); SceneCmptManager.Instance.Reset(); if(info.isEntry) { eventCmpt.FireNow(this, new MainEventGoBattle(GameDateManager.Instance.GateID, GameDateManager.Instance.GateDifficulty, info.NextSwitchIndex)); } else { eventCmpt.FireNow(this, new MainEventGoBattle(GameDateManager.Instance.GateID, GameDateManager.Instance.GateDifficulty, MapTcpProxy.Instance.Peer.MapData.BirthPoint)); } }); } } public void AddFunctionIcon() { string srcName = ""; if(info.isEntry) { srcName = "minimap_entry"; } else { srcName = "minimap_export"; } ResourceHelper.Instance.LoadAssetBundle(srcName, (ab) => { GameObject iconObj = (GameObject)Instantiate(ab.LoadAsset(srcName)); iconObj.SetActive(true); iconObj.SetLayerRecursively(LayerMask.NameToLayer("MiniMap")); iconObj.AddComponent(); iconObj.transform.parent = this.transform; iconObj.transform.position = Vector3.zero; iconObj.transform.localPosition = Vector3.zero; iconObj.transform.SetLocalPositionY(0.5f); }); } }