using vnxbqy.UI;
|
using System;
|
using System.Collections.Generic;
|
|
|
|
class BossModel : ILModel<BossModel>
|
{
|
FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModelEx<FindPreciousModel>(); } }
|
DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModelEx<DungeonModel>(); } }
|
CrossServerBossModel crosssModel { get { return ModelCenter.Instance.GetModelEx<CrossServerBossModel>(); } }
|
|
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;
|
}
|
}
|