| Core/NetworkPackage/DTCFile/ServerPack/HA9_Function/DTCA902_tagGCGameWorldBossInfo.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FairyAu/FairyGrabBossHelpBehaviour.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FairyAu/FairyGrabBossHelpBehaviour.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FairyAu/FairyGrabBossModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/MainInterfacePanel/InGamePushContainer.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Core/NetworkPackage/DTCFile/ServerPack/HA9_Function/DTCA902_tagGCGameWorldBossInfo.cs
@@ -1,16 +1,18 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; using Snxxz.UI; public class DTCA902_tagGCGameWorldBossInfo : DtcBasic { FindPreciousModel model { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } } public override void Done(GameNetPackBasic vNetPack) { base.Done(vNetPack); var data = vNetPack as HA902_tagGCGameWorldBossInfo; model.OnUpdateBossInfos(data); } } using System.Collections; using System.Collections.Generic; using UnityEngine; using Snxxz.UI; public class DTCA902_tagGCGameWorldBossInfo : DtcBasic { FindPreciousModel model { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } } FairyGrabBossModel fairyGrabBossModel { get { return ModelCenter.Instance.GetModel<FairyGrabBossModel>(); } } public override void Done(GameNetPackBasic vNetPack) { base.Done(vNetPack); var data = vNetPack as HA902_tagGCGameWorldBossInfo; model.OnUpdateBossInfos(data); fairyGrabBossModel.UpdateBossAlive(data); } } System/FairyAu/FairyGrabBossHelpBehaviour.cs
New file @@ -0,0 +1,93 @@ using System; using System.Collections; using System.Collections.Generic; using TableConfig; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class FairyGrabBossHelpBehaviour : MonoBehaviour { [SerializeField] RectTransform m_Container; [SerializeField] Button m_Close; [SerializeField] Image m_Icon; [SerializeField] Text m_MapName; [SerializeField] Text m_BossName; [SerializeField] Button m_Goto; FairyGrabBossModel model { get { return ModelCenter.Instance.GetModel<FairyGrabBossModel>(); } } public bool display { get { return gameObject.activeSelf; } } private void Awake() { m_Goto.onClick.AddListener(Goto); m_Close.onClick.AddListener(Close); } public void Display() { if (model.fairyGrabBossHelps.Count > 0) { model.helpCoolDown = true; m_Container.gameObject.SetActive(true); var help = model.fairyGrabBossHelps[0]; var config = Config.Instance.Get<FairyGrabBossConfig>(help.npcId); var npcConfig = Config.Instance.Get<NPCConfig>(help.npcId); var bossInfoConfig = Config.Instance.Get<BossInfoConfig>(help.npcId); var mapConfig = Config.Instance.Get<MapConfig>(bossInfoConfig.MapID); m_MapName.text = mapConfig.Name; m_BossName.text = npcConfig.charName; m_Icon.SetSprite(npcConfig.HeadPortrait); var petConfig = Config.Instance.Get<PetInfoConfig>(config.petId); if (petConfig != null) { m_BossName.color = UIHelper.GetUIColor(petConfig.Quality, true); } var horseConfig = Config.Instance.Get<HorseConfig>(config.horseId); if (horseConfig != null) { m_BossName.color = UIHelper.GetUIColor(horseConfig.Quality, true); } } } private void Close() { model.RemoveHelp(); } private void Goto() { if (model.fairyGrabBossHelps.Count > 0) { var help = model.fairyGrabBossHelps[0]; int error = 0; if (!model.TestEnterDungeon(help.npcId, out error)) { model.DisplayErrorTip(error); model.RemoveHelp(); return; } if (!model.IsBossAlive(help.npcId)) { ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("FairyGrabBossNotAlive"), (bool isOk) => { if (isOk) { MapTransferUtility.Instance.MoveToNPC(help.npcId); model.RemoveHelp(); } }); return; } MapTransferUtility.Instance.MoveToNPC(help.npcId); } } } } System/FairyAu/FairyGrabBossHelpBehaviour.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 72cdb8cec03effc42aeb6892b5df3596 timeCreated: 1537251839 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/FairyAu/FairyGrabBossModel.cs
@@ -101,11 +101,14 @@ GAMgr.Instance.OnFightNpcRequest += OnFightNpcUpdate; //GAMgr.Instance.OnFightNpcRelease += OnFightNpcUpdate; PlayerDatas.Instance.PlayerDataRefreshInfoEvent += PlayerDataRefreshInfoEvent; SysNotifyMgr.Instance.sysNotifyEvent += SystemNotifyEvent; GlobalTimeEvent.Instance.secondEvent += SecondEvent; } public void OnBeforePlayerDataInitialize() { serverInited = false; bossAliveDict.Clear(); } public void OnPlayerLoginOk() @@ -121,6 +124,8 @@ GAMgr.Instance.OnFightNpcRequest -= OnFightNpcUpdate; //GAMgr.Instance.OnFightNpcRelease -= OnFightNpcUpdate; PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= PlayerDataRefreshInfoEvent; SysNotifyMgr.Instance.sysNotifyEvent -= SystemNotifyEvent; GlobalTimeEvent.Instance.secondEvent -= SecondEvent; } private void PlayerDataRefreshInfoEvent(PlayerDataRefresh refreshType) @@ -144,6 +149,7 @@ if (!(StageManager.Instance.CurrentStage is DungeonStage)) { grabBossHintOpen = false; fairyGrabBossHelps.Clear(); ClearGrabBossInfo(); } else @@ -239,6 +245,14 @@ if (!InActivityTime) { ClearGrabBossInfo(); if (fairyGrabBossHelps.Count > 0) { fairyGrabBossHelps.Clear(); if (fairyGrabBossHelpUpdate != null) { fairyGrabBossHelpUpdate(); } } } RecheckGrabBoss(); if (stateUpdate != null) @@ -324,11 +338,6 @@ public void QueryGrabBossProgress() { //if (!force && (DateTime.Now - lastQueryProgressTime).TotalSeconds < 10) //{ // return; //} //lastQueryProgressTime = DateTime.Now; CAC04_tagCGQueryAllFamilyBossHurt pak = new CAC04_tagCGQueryAllFamilyBossHurt(); GameNetSystem.Instance.SendInfo(pak); } @@ -501,6 +510,134 @@ } } private void SecondEvent() { if (helpCoolDown && fairyGrabBossHelps.Count > 0) { var help = fairyGrabBossHelps[0]; help.seconds--; if (help.seconds <= 0) { fairyGrabBossHelps.RemoveAt(0); if (fairyGrabBossHelpUpdate != null) { fairyGrabBossHelpUpdate(); } } else { fairyGrabBossHelps[0] = help; } } } #region 召集弹窗 public bool helpCoolDown { get; set; } public List<FairyGrabBossHelp> fairyGrabBossHelps = new List<FairyGrabBossHelp>(); public event Action fairyGrabBossHelpUpdate; private void SystemNotifyEvent(string message, ArrayList arrayList) { if (message.Equals("FairyGrabBossHelp") && InActivityTime && PlayerDatas.Instance.baseData.Family != 0 && FuncOpen.Instance.IsFuncOpen(139)) { var npcId = 0; if (arrayList != null && arrayList.Count > 0) { int.TryParse(arrayList[0].ToString(), out npcId); } if (!bosses.Contains(npcId)) { return; } if (InAnyGrabBossArea()) { return; } if (fairyGrabBossHelps.FindIndex((x) => { return x.npcId == npcId; }) != -1) { return; } fairyGrabBossHelps.Add(new FairyGrabBossHelp() { npcId = npcId, seconds = 20, }); if (fairyGrabBossHelpUpdate != null) { fairyGrabBossHelpUpdate(); } } } public bool IsBossAlive(int npcId) { return bossAliveDict.ContainsKey(npcId) && bossAliveDict[npcId]; } Dictionary<int, bool> bossAliveDict = new Dictionary<int, bool>(); public void UpdateBossAlive(HA902_tagGCGameWorldBossInfo package) { for (int i = 0; i < package.BossCnt; i++) { var data = package.BossInfoList[i]; bossAliveDict[(int)data.BossID] = data.IsAlive == 1; } } public void RemoveHelp() { if (fairyGrabBossHelps.Count > 0) { fairyGrabBossHelps.RemoveAt(0); if (fairyGrabBossHelpUpdate != null) { fairyGrabBossHelpUpdate(); } } } public bool InAnyGrabBossArea() { if (!MapArea.IsInMapArea(PlayerDatas.Instance.hero.CurMapArea, MapArea.E_Type.Boss)) { return false; } var mapId = PlayerDatas.Instance.baseData.MapID; var grabBossLine = GeneralConfig.Instance.fairyGrabBossMapLines.ContainsKey(mapId) ? GeneralConfig.Instance.fairyGrabBossMapLines[mapId] : 0; if (PlayerDatas.Instance.baseData.FBID != grabBossLine) { return false; } int bossId = 0; var list = GAMgr.Instance.GetTypeList(E_ActorClassType.NpcFightBoss); if (list != null) { for (int i = 0; i < list.Count; i++) { GA_NpcFightBoss bossActor = list[i] as GA_NpcFightBoss; if (bossActor != null && bosses.Contains(bossActor.NpcConfig.NPCID)) { bossId = bossActor.NpcConfig.NPCID; break; } } } return bossId != 0; } public struct FairyGrabBossHelp { public int npcId; public int seconds { get; set; } } #endregion public class FairyGrabBossInfo { public int npcId { get; private set; } System/MainInterfacePanel/InGamePushContainer.cs
@@ -24,6 +24,7 @@ [SerializeField] OffLineTimeLackBehaviour m_OffLineTimeLackBehaviour; [SerializeField] DungeonGuardCheckBehaviour m_DungeonGuardBehaviour; [SerializeField] FirstChargeTrialBehaviour m_FirstChargeTrialBehaviour; [SerializeField] FairyGrabBossHelpBehaviour m_FairyGrabBossHelpBehaviour; WorldBossModel worldBossModel { get { return ModelCenter.Instance.GetModel<WorldBossModel>(); } } BossHomeModel bossHomeModel { get { return ModelCenter.Instance.GetModel<BossHomeModel>(); } } @@ -44,7 +45,7 @@ OffLineTimeLackModel offLineTimeLackModel { get { return ModelCenter.Instance.GetModel<OffLineTimeLackModel>(); } } GuardModel guardModel { get { return ModelCenter.Instance.GetModel<GuardModel>(); } } FirstTimeRechargeModel firstTimeRechargeModel { get { return ModelCenter.Instance.GetModel<FirstTimeRechargeModel>(); } } FairyGrabBossModel fairyGrabBossModel { get { return ModelCenter.Instance.GetModel<FairyGrabBossModel>(); } } public void Init() { CheckBetterEquip(); @@ -58,6 +59,7 @@ CheckOffLineLack(); CheckDungeonGuard(); FirstChargeTrialShow(); CheckFairyGrabBossHelp(); playerPack.RefreshDecomAttrAct += CheckEquipDecompose; betterEquipGetModel.showEquipRefreshEvent += CheckBetterEquip; realmEquipModel.showEquipRefreshEvent += CheckRealmBetterEquip; @@ -68,10 +70,12 @@ NewBieCenter.Instance.guideBeginEvent += OnNewBieGuideBegin; guardModel.onDungeonEquipGuardEvent += CheckDungeonGuard; firstTimeRechargeModel.IsTipShowEvent += FirstChargeTrialShow; fairyGrabBossModel.fairyGrabBossHelpUpdate += CheckFairyGrabBossHelp; } public void UnInit() { fairyGrabBossModel.helpCoolDown = false; playerPack.RefreshDecomAttrAct -= CheckEquipDecompose; betterEquipGetModel.showEquipRefreshEvent -= CheckBetterEquip; preciousItemGetModel.showItemRefreshEvent -= CheckPreciousItem; @@ -81,8 +85,8 @@ guardModel.onDungeonEquipGuardEvent -= CheckDungeonGuard; firstTimeRechargeModel.IsTipShowEvent -= FirstChargeTrialShow; realmEquipModel.showEquipRefreshEvent -= CheckRealmBetterEquip; fairyGrabBossModel.fairyGrabBossHelpUpdate -= CheckFairyGrabBossHelp; } private void CheckRealmBetterEquip() { @@ -329,6 +333,19 @@ } } private void CheckFairyGrabBossHelp() { if (fairyGrabBossModel.fairyGrabBossHelps.Count > 0) { m_FairyGrabBossHelpBehaviour.gameObject.SetActive(true); m_FairyGrabBossHelpBehaviour.Display(); } else { m_FairyGrabBossHelpBehaviour.gameObject.SetActive(false); } } } }