using vnxbqy.UI; using System; using System.Collections.Generic; class BossModel : ILModel { FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModelEx(); } } DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModelEx(); } } CrossServerBossModel crosssModel { get { return ModelCenter.Instance.GetModelEx(); } } protected override void Init() { } protected override void UnInit() { } public void GotoKillBoss(int npcID, Action logic) { var error = 0; var bossFuncType = (int)findPreciousModel.GetBossFindPreciousType(npcID); if (TestGotoKillBoss(npcID, bossFuncType,out error)) { logic?.Invoke(); if (bossFuncType == (int)FindPreciousType.CrossServerBoss) { if (PlayerDatas.Instance.baseData.MapID != CrossServerBossModel.DATA_MAPID) { crosssModel.selectedBoss = npcID; crosssModel.RequestEnter(); return; } } MapTransferUtility.Instance.MoveToNPC(npcID); } else { ProcessGotoKillBossError(npcID, error, logic); } } private void ProcessGotoKillBossError(int npcID, int _error, Action logic) { switch (_error) { case 1: var dataMapId = dungeonModel.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID); var config = DungeonOpenTimeConfig.Get(dataMapId); var tip = Language.Get(config.ExitDescription); ConfirmCancel.ShowPopConfirm( Language.Get("Mail101"), tip, (bool _ok) => { if (_ok) { logic?.Invoke(); MapTransferUtility.Instance.MoveToNPC(npcID); } } ); break; case 2: SysNotifyMgr.Instance.ShowTip("InDungeon_CantGo"); break; case 3: SysNotifyMgr.Instance.ShowTip("CrossMap10"); break; case 4: SysNotifyMgr.Instance.ShowTip("BossRealmHint2", RealmConfig.Get(NPCConfig.Get(npcID).Realm).LvLarge); break; case 5: SysNotifyMgr.Instance.ShowTip("JadeInvestmentLimit1"); break; } } private bool TestGotoKillBoss(int npcID, int bossFuncType, out int _error) { if (!findPreciousModel.IsBossUnlock(npcID)) { _error = 4; return false; } var mapId = PlayerDatas.Instance.baseData.MapID; var dataMapId = MapUtility.GetDataMapId(mapId); if (dataMapId == ElderGodAreaModel.ELDERGODAREA_MAPID) { _error = 1; return false; } var mapConfig = MapConfig.Get(mapId); if (mapConfig.MapFBType != (int)MapType.OpenCountry) { _error = 2; return false; } //此处需要优化成根据NPC查找对应地图判断,跨服的活动会有很多种 if (bossFuncType != (int)FindPreciousType.CrossServerBoss) { if (CrossServerUtility.IsCrossServer() || ClientCrossServerOneVsOne.isClientCrossServerOneVsOne) { _error = 3; return false; } } else { if (!FuncOpen.Instance.IsFuncOpen(162)) { _error = 5; return false; } if (ClientCrossServerOneVsOne.isClientCrossServerOneVsOne) { _error = 3; return false; } } _error = 0; return true; } }