From bc20563f3bdfba7a4e3e6d1a4770f86bc7cfa998 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 21 二月 2025 01:40:59 +0800
Subject: [PATCH] 0312 本服/跨服竞技场进入防范问题

---
 System/Dungeon/DungeonModel.cs |   83 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 83 insertions(+), 0 deletions(-)

diff --git a/System/Dungeon/DungeonModel.cs b/System/Dungeon/DungeonModel.cs
index 6e96e2b..aa161b1 100644
--- a/System/Dungeon/DungeonModel.cs
+++ b/System/Dungeon/DungeonModel.cs
@@ -147,6 +147,7 @@
         BossRebornModel bossRebornModel { get { return ModelCenter.Instance.GetModel<BossRebornModel>(); } }
         DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
 
+        TeamModel teamModel { get { return ModelCenter.Instance.GetModel<TeamModel>(); } }
         public override void Init()
         {
             ParseConfig();
@@ -611,6 +612,88 @@
             RequestChallangeDungeon(_dungeon.mapId, _dungeon.lineId);
         }
 
+        public bool CanEnter(out int error)
+        {
+            var mapId = PlayerDatas.Instance.baseData.MapID;
+            var mapConfig = MapConfig.Get(mapId);
+            if (mapConfig.MapFBType != (int)MapType.OpenCountry ||
+                ArenaManager.IsArenaStage() ||
+                ClientDungeonStageUtility.isClientDungeon ||
+                ClientCrossServerOneVsOne.isClientCrossServerOneVsOne ||
+                AdventureStage.Instance.IsInAdventureStage
+                )
+            {
+                error = 1;
+                return false;
+            }
+
+            if (teamModel.isMatching)
+            {
+                error = 2;
+                return false;
+            }
+
+            if (teamModel.teamPrepare.isPreparing)
+            {
+                error = 3;
+                return false;
+            }
+
+            if (CrossServerLogin.Instance.IsEnterCrossServerPreparing())
+            {
+                error = 4;
+                return false;
+            }
+
+            var deadModel = ModelCenter.Instance.GetModel<PlayerDeadModel>();
+            if (deadModel.playerIsDie)
+            {
+                error = 5;
+                return false;
+            }
+            if (PlayerDatas.Instance.extersion.bossState == 1)
+            {
+                error = 6;
+                return false;
+            }
+
+            if (CrossServerUtility.IsCrossServer())
+            {
+                error = 7;
+                return false;
+            }
+            error = 0;
+            return true;
+        }
+
+        public void ProcessEnterError(int error)
+        {
+            switch (error)
+            {
+                case 1:
+                    SysNotifyMgr.Instance.ShowTip("InDungeon_CantGo");
+                    break;
+                case 2:
+                    SysNotifyMgr.Instance.ShowTip("CrossMap1");
+                    break;
+                case 3:
+                    SysNotifyMgr.Instance.ShowTip("CrossMap2");
+                    break;
+                case 4:
+                    SysNotifyMgr.Instance.ShowTip("CrossMap3");
+                    break;
+                case 5:
+                    SysNotifyMgr.Instance.ShowTip("CrossMap4");
+                    break;
+                case 6:
+                    SysNotifyMgr.Instance.ShowTip("CrossMap11");
+                    break;
+                case 7:
+                    SysNotifyMgr.Instance.ShowTip("CrossMap10");
+                    break;
+            }
+        }
+
         public void GroupChallenge(int _dungeonId, int _lineId = 0)
         {
             GroupChallenge(new Dungeon(_dungeonId, _lineId));

--
Gitblit v1.8.0