| | |
| | | DogzDungeonModel model { get { return ModelCenter.Instance.GetModel<DogzDungeonModel>(); } } |
| | | FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } } |
| | | DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } } |
| | | BossHomeModel bossHomeModel { get { return ModelCenter.Instance.GetModel<BossHomeModel>(); } } |
| | | |
| | | #region Built-in |
| | | protected override void BindController() |
| | |
| | | |
| | | private void GotoKillBoss() |
| | | { |
| | | if (PlayerDatas.Instance.baseData.MapID == DogzDungeonModel.DATA_MAPID) |
| | | var error = 0; |
| | | if (TestGotoKillBoss(out error)) |
| | | { |
| | | WindowJumpMgr.Instance.ClearJumpData(); |
| | | WindowCenter.Instance.Close<LootPreciousFrameWin>(); |
| | | WindowCenter.Instance.Open<MainInterfaceWin>(); |
| | | if (PlayerDatas.Instance.baseData.MapID == DogzDungeonModel.DATA_MAPID) |
| | | { |
| | | WindowJumpMgr.Instance.ClearJumpData(); |
| | | WindowCenter.Instance.Close<LootPreciousFrameWin>(); |
| | | WindowCenter.Instance.Open<MainInterfaceWin>(); |
| | | } |
| | | |
| | | var config = Config.Instance.Get<DogzDungeonConfig>(model.selectedBoss); |
| | | switch (config.MonsterType) |
| | | { |
| | | case 1: |
| | | case 2: |
| | | case 3: |
| | | if (PlayerDatas.Instance.baseData.MapID != DogzDungeonModel.DATA_MAPID) |
| | | { |
| | | var map = Config.Instance.Get<MapConfig>(DogzDungeonModel.DATA_MAPID); |
| | | var position = new Vector3(map.BornPoints[0].x, 0, map.BornPoints[0].y); |
| | | MapTransferUtility.Send_WorldTransfer(DogzDungeonModel.DATA_MAPID, position, MapTransferType.WorldTransport, 0, 0); |
| | | } |
| | | break; |
| | | case 4: |
| | | MapTransferUtility.Instance.MoveToNPC(model.selectedBoss); |
| | | break; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | ProcessGotoKillBossError(error); |
| | | } |
| | | } |
| | | |
| | | private bool TestGotoKillBoss(out int error) |
| | | { |
| | | var mapId = PlayerDatas.Instance.baseData.MapID; |
| | | var dataMapId = dungeonModel.GetDataMapIdByMapId(mapId); |
| | | |
| | | if (dataMapId == BossHomeModel.BOSSHOME_MAPID || dataMapId == ElderGodAreaModel.ELDERGODAREA_MAPID) |
| | | { |
| | | error = 1; |
| | | return false; |
| | | } |
| | | |
| | | var config = Config.Instance.Get<DogzDungeonConfig>(model.selectedBoss); |
| | | switch (config.MonsterType) |
| | | var mapConfig = Config.Instance.Get<MapConfig>(mapId); |
| | | if (mapConfig.MapFBType != (int)MapType.OpenCountry) |
| | | { |
| | | error = 2; |
| | | return false; |
| | | } |
| | | |
| | | error = 0; |
| | | return true; |
| | | } |
| | | |
| | | private void ProcessGotoKillBossError(int _error) |
| | | { |
| | | switch (_error) |
| | | { |
| | | case 1: |
| | | case 2: |
| | | case 3: |
| | | if (PlayerDatas.Instance.baseData.MapID != DogzDungeonModel.DATA_MAPID) |
| | | var dataMapId = dungeonModel.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID); |
| | | var config = Config.Instance.Get<DungeonOpenTimeConfig>(dataMapId); |
| | | var tip = string.Empty; |
| | | |
| | | if (dataMapId == BossHomeModel.BOSSHOME_MAPID) |
| | | { |
| | | var map = Config.Instance.Get<MapConfig>(DogzDungeonModel.DATA_MAPID); |
| | | var position = new Vector3(map.BornPoints[0].x, 0, map.BornPoints[0].y); |
| | | MapTransferUtility.Send_WorldTransfer(DogzDungeonModel.DATA_MAPID, position, MapTransferType.WorldTransport, 0, 0); |
| | | var vipLevel = PlayerDatas.Instance.baseData.VIPLv; |
| | | var vipNeed = bossHomeModel.GetFloorVipRequirement(PlayerDatas.Instance.baseData.dungeonLineId + 1); |
| | | if (vipLevel < vipNeed) |
| | | { |
| | | var moneyNeed = bossHomeModel.GetVipLackCost(PlayerDatas.Instance.baseData.dungeonLineId + 1); |
| | | var dungeonId = dungeonModel.GetDungeonId(BossHomeModel.BOSSHOME_MAPID, PlayerDatas.Instance.baseData.dungeonLineId); |
| | | var dungeonConfig = Config.Instance.Get<DungeonConfig>(dungeonId); |
| | | tip = Language.Get("QuitRemindBossHome", dungeonConfig.FBName, vipNeed, moneyNeed); |
| | | } |
| | | else |
| | | { |
| | | tip = Language.Get(config.ExitDescription); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | tip = Language.Get(config.ExitDescription); |
| | | } |
| | | |
| | | ConfirmCancel.ShowPopConfirm( |
| | | Language.Get("Mail101"), |
| | | tip, |
| | | (bool _ok) => |
| | | { |
| | | if (_ok) |
| | | { |
| | | WindowCenter.Instance.Close<FindPreciousFrameWin>(); |
| | | MapTransferUtility.Instance.MoveToNPC(model.selectedBoss); |
| | | } |
| | | } |
| | | ); |
| | | break; |
| | | case 4: |
| | | MapTransferUtility.Instance.MoveToNPC(model.selectedBoss); |
| | | case 2: |
| | | SysNotifyMgr.Instance.ShowTip("InDungeon_CantGo"); |
| | | break; |
| | | } |
| | | } |