| 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/FriendSystem/MailAllModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/MainInterfacePanel/InGamePushContainer.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Welfare/AwardExchangeModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Welfare/ExchangeGetItemWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Welfare/ExchangeGetItemWin.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/WindowBase/ModelCenter.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/FriendSystem/MailAllModel.cs
@@ -62,6 +62,8 @@ get { return m_dailyModel ?? (m_dailyModel = ModelCenter.Instance.GetModel<DailyQuestModel>()); } } AwardExchangeModel exchangeModel { get { return ModelCenter.Instance.GetModel<AwardExchangeModel>(); } } public MailAllModel() { DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += BeforePlayerDataInit; @@ -158,12 +160,14 @@ if (mailModelDict.ContainsKey(mailModel.PackList[i].GUID)) { MailInfo info = mailModelDict[mailModel.PackList[i].GUID]; switch(GetMailType(info)) string mailTitle = GetMailTitle(info); if(mailTitle.Contains("<gcode>")) { case "CodeRewardMail": WindowCenter.Instance.Open<ExchangeGetItemWin>(); break; exchangeModel.SetAwardExchangeModel(info.Items); } else if(GetMailType(info) == "CodeRewardMail") { exchangeModel.SetAwardExchangeModel(info.Items); } } } @@ -428,6 +432,7 @@ } } mailTitleStr = mailTitleStr.Replace("<gcode>",""); } public string GetMailType(MailInfo info) @@ -444,6 +449,28 @@ return string.Empty; } public string GetMailTitle(MailInfo info) { if (smatch.IsMatch(info.Text)) { Match match = smatch.Match(info.Text); MailConfig _mailModel = Config.Instance.Get<MailConfig>(match.Groups[1].Value); if (_mailModel != null) { return _mailModel.Title; } } else { string[] mailContentArray = info.Text.Split(new string[] { "<$_$>" }, StringSplitOptions.RemoveEmptyEntries); if (mailContentArray.Length > 0) { return mailContentArray[1]; } } return string.Empty; } StringBuilder todayDailySB = new StringBuilder(); public string GetTodayDailyNotify(DateTime getTime) { 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); } } } } System/Welfare/AwardExchangeModel.cs
@@ -7,8 +7,9 @@ { public class AwardExchangeModel : Model,IBeforePlayerDataInitialize,IAfterPlayerDataInitialize,IPlayerLoginOk { public PlayerPackModel.DecomposeGetMatInfo[] getItems { get; private set; } public MailItemModel[] getItems { get; private set; } bool isLogin = true; public override void Init() { @@ -16,7 +17,7 @@ public void OnBeforePlayerDataInitialize() { isLogin = true; } public void OnAfterPlayerDataInitialize() @@ -26,12 +27,29 @@ public void OnPlayerLoginOk() { isLogin = false; } public override void UnInit() { } public void SetAwardExchangeModel(MailItemModel[] Items) { getItems = null; if (Items == null || isLogin) return; getItems = Items; if(!WindowCenter.Instance.CheckOpen<ExchangeGetItemWin>()) { WindowCenter.Instance.Open<ExchangeGetItemWin>(); } } public void ClearAwardExchangeModel() { getItems = null; } } } System/Welfare/ExchangeGetItemWin.cs
@@ -6,37 +6,31 @@ { public class ExchangeGetItemWin : Window { [SerializeField] GameObject getItemObj; [SerializeField] RectTransform getItemParent; [SerializeField] Button sureBtn; [SerializeField] List<CommonItemBaisc> itemBaiscs = new List<CommonItemBaisc>(); List<GameObject> GetItemlist = new List<GameObject>(); AwardExchangeModel exchange { get { return ModelCenter.Instance.GetModel<AwardExchangeModel>(); } } AwardExchangeModel exchangeModel { get { return ModelCenter.Instance.GetModel<AwardExchangeModel>(); } } ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } } protected override void BindController() { } protected override void AddListeners() { sureBtn.AddListener(CloseClick); } protected override void OnPreOpen() { getItemObj.SetActive(false); CreateGetItem(); SetDisplayModel(); } protected override void OnAfterOpen() { transform.SetAsLastSibling(); } protected override void OnPreClose() { DestroyGetItemlist(); exchangeModel.ClearAwardExchangeModel(); } protected override void OnAfterClose() @@ -44,42 +38,33 @@ } private void CreateGetItem() private void SetDisplayModel() { GetItemlist.Clear(); if (exchange.getItems == null) return; if (exchangeModel == null) return; for (int i = 0; i < exchange.getItems.Length; i++) for(int i = 0; i < itemBaiscs.Count; i++) { GameObject item = Instantiate(getItemObj); PlayerPackModel.DecomposeGetMatInfo matInfo = exchange.getItems[i]; item.transform.SetParent(getItemParent); item.transform.localPosition = Vector3.zero; item.transform.localScale = Vector3.one; item.name = StringUtility.Contact("getItem",i); item.gameObject.SetActive(true); CommonItemBaisc itemBasic = item.transform.Find("CommonItemCell").GetComponent<CommonItemBaisc>(); ItemCellModel cellModel = new ItemCellModel(matInfo.ItemID, false, (ulong)matInfo.Count, matInfo.IsBind, "", PackType.rptDeleted, false, ConfigParse.Analysis(matInfo.UserData)); itemBasic.Init(cellModel); itemBasic.cellBtn.RemoveAllListeners(); itemBasic.cellBtn.AddListener(() => if(i < exchangeModel.getItems.Length) { ItemAttrData attrData = new ItemAttrData(matInfo.ItemID, false, (ulong)matInfo.Count, -1, matInfo.IsBind, false, PackType.rptDeleted, "", ConfigParse.Analysis(matInfo.UserData)); tipsModel.SetItemTipsModel(attrData); }); itemBasic.gameObject.SetActive(true); GetItemlist.Add(item); } } private void DestroyGetItemlist() { for (int i = 0; i < GetItemlist.Count; i++) { Destroy(GetItemlist[i]); MailItemModel itemModel = exchangeModel.getItems[i]; itemBaiscs[i].gameObject.SetActive(true); ItemCellModel cellModel = new ItemCellModel((int)itemModel.ItemID,false ,(ulong)itemModel.Count, itemModel.IsBind,"",PackType.rptDeleted, false,ConfigParse.Analysis(itemModel.UserData)); itemBaiscs[i].Init(cellModel); itemBaiscs[i].cellBtn.RemoveAllListeners(); itemBaiscs[i].cellBtn.AddListener(()=> { ItemAttrData attrData = new ItemAttrData((int)itemModel.ItemID, false , (ulong)itemModel.Count,-1,itemModel.IsBind,false, PackType.rptDeleted, "", ConfigParse.Analysis(itemModel.UserData)); tipsModel.SetItemTipsModel(attrData); }); } else { itemBaiscs[i].gameObject.SetActive(false); } } } System/Welfare/ExchangeGetItemWin.cs.meta
@@ -1,6 +1,6 @@ fileFormatVersion: 2 guid: b88138dfb3783c34db741e9d6a847c2a timeCreated: 1531139769 guid: b367524e0821f67439d7c80ed1a0254f timeCreated: 1537257075 licenseType: Pro MonoImporter: serializedVersion: 2 System/WindowBase/ModelCenter.cs
@@ -194,6 +194,7 @@ RegisterModel<GodBeastModel>(); RegisterModel<PrayForDurgModel>(); RegisterModel<FeatureNoticeModel>(); RegisterModel<AwardExchangeModel>(); inited = true; }