Core/GameEngine/Model/Config/FamilyBossHurtAwardConfig.cs
New file @@ -0,0 +1,211 @@ //-------------------------------------------------------- // [Author]: Fish // [ Date ]: 2023年10月9日 //-------------------------------------------------------- using System.Collections.Generic; using System.IO; using System.Threading; using System; using UnityEngine; public partial class FamilyBossHurtAwardConfig { public readonly int id; public readonly int AwardType; public readonly int RecordIndex; public readonly long NeedHurtTotal; public readonly string AwardItemList; public FamilyBossHurtAwardConfig() { } public FamilyBossHurtAwardConfig(string input) { try { var tables = input.Split('\t'); int.TryParse(tables[0],out id); int.TryParse(tables[1],out AwardType); int.TryParse(tables[2],out RecordIndex); long.TryParse(tables[3],out NeedHurtTotal); AwardItemList = tables[4]; } catch (Exception ex) { DebugEx.Log(ex); } } static Dictionary<string, FamilyBossHurtAwardConfig> configs = new Dictionary<string, FamilyBossHurtAwardConfig>(); public static FamilyBossHurtAwardConfig Get(string id) { if (!inited) { Debug.Log("FamilyBossHurtAwardConfig 还未完成初始化。"); return null; } if (configs.ContainsKey(id)) { return configs[id]; } FamilyBossHurtAwardConfig config = null; if (rawDatas.ContainsKey(id)) { config = configs[id] = new FamilyBossHurtAwardConfig(rawDatas[id]); rawDatas.Remove(id); } return config; } public static FamilyBossHurtAwardConfig Get(int id) { return Get(id.ToString()); } public static List<string> GetKeys() { var keys = new List<string>(); keys.AddRange(configs.Keys); keys.AddRange(rawDatas.Keys); return keys; } public static List<FamilyBossHurtAwardConfig> GetValues() { var values = new List<FamilyBossHurtAwardConfig>(); values.AddRange(configs.Values); var keys = new List<string>(rawDatas.Keys); for (int i = 0; i < keys.Count; i++) { values.Add(Get(keys[i])); } return values; } public static bool Has(string id) { return configs.ContainsKey(id) || rawDatas.ContainsKey(id); } public static bool Has(int id) { return Has(id.ToString()); } public static bool inited { get; private set; } protected static Dictionary<string, string> rawDatas = new Dictionary<string, string>(); public static void Init(bool sync=false) { inited = false; var path = string.Empty; if (AssetSource.refdataFromEditor) { path = ResourcesPath.CONFIG_FODLER +"/FamilyBossHurtAward.txt"; } else { path = AssetVersionUtility.GetAssetFilePath("config/FamilyBossHurtAward.txt"); } configs.Clear(); var tempConfig = new FamilyBossHurtAwardConfig(); var preParse = tempConfig is IConfigPostProcess; if (sync) { var lines = File.ReadAllLines(path); if (!preParse) { rawDatas = new Dictionary<string, string>(lines.Length - 3); } for (int i = 3; i < lines.Length; i++) { try { var line = lines[i]; var index = line.IndexOf("\t"); if (index == -1) { continue; } var id = line.Substring(0, index); if (preParse) { var config = new FamilyBossHurtAwardConfig(line); configs[id] = config; (config as IConfigPostProcess).OnConfigParseCompleted(); } else { rawDatas[id] = line; } } catch (System.Exception ex) { Debug.LogError(ex); } } inited = true; } else { ThreadPool.QueueUserWorkItem((object _object) => { var lines = File.ReadAllLines(path); if (!preParse) { rawDatas = new Dictionary<string, string>(lines.Length - 3); } for (int i = 3; i < lines.Length; i++) { try { var line = lines[i]; var index = line.IndexOf("\t"); if (index == -1) { continue; } var id = line.Substring(0, index); if (preParse) { var config = new FamilyBossHurtAwardConfig(line); configs[id] = config; (config as IConfigPostProcess).OnConfigParseCompleted(); } else { rawDatas[id] = line; } } catch (System.Exception ex) { Debug.LogError(ex); } } inited = true; }); } } } Core/GameEngine/Model/Config/FamilyBossHurtAwardConfig.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: b3eeed3676204e64c975fcbfa39967d4 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/GameEngine/Model/Player/Fairy/PlayerFairyData.cs
@@ -135,7 +135,6 @@ member = null; } fairyBossModel.UpdateRedPoint(); if (OnRefreshFairyInfo != null) OnRefreshFairyInfo(); } @@ -175,7 +174,6 @@ public event Action OnRefreshFairyList; public event Action OnRefreshFairySearch; public event Action OnRefreshFairyBoss; private Dictionary<int, List<FairyData>> fairyList = new Dictionary<int, List<FairyData>>(); @@ -281,7 +279,6 @@ OnRefreshFairyMine(); } UpdateRequestRedpoint(); fairyBossModel.UpdateRedPoint(); } public void OnRefreshFairy(H0F05_tagFamilyChange vNetData) @@ -365,20 +362,7 @@ return m_FairyBossModel ?? (m_FairyBossModel = ModelCenter.Instance.GetModel<FairyBossModel>()); } } public uint IsBossOpen { get; private set; } public int weekBossOpenCnt { get; private set; } public DateTime bossOpenTime { get; private set; } public void OnRefreshFairy(HA402_tagGCFamilyBossFBInfo vNetData) { IsBossOpen = vNetData.IsOpen; weekBossOpenCnt = vNetData.OpenCnt; bossOpenTime = TimeUtility.GetTime(vNetData.IsOpen); if (OnRefreshFairyBoss != null) { OnRefreshFairyBoss(); } fairyBossModel.UpdateRedPoint(); } #endregion #region 仙盟权力开启条件 Core/GameEngine/Model/TelPartialConfig/FamilyBossHurtAwardConfig.cs
New file @@ -0,0 +1,19 @@ using System; using System.Collections.Generic; public partial class FamilyBossHurtAwardConfig : IConfigPostProcess { public static Dictionary<int, FamilyBossHurtAwardConfig> personalHurtAwards = new Dictionary<int, FamilyBossHurtAwardConfig>(); public static Dictionary<int, FamilyBossHurtAwardConfig> familyHurtAwards = new Dictionary<int, FamilyBossHurtAwardConfig>(); public void OnConfigParseCompleted() { if (AwardType == 1) { personalHurtAwards[AwardType * 1000 + RecordIndex] = this; } else if (AwardType == 2) { familyHurtAwards[AwardType * 1000 + RecordIndex] = this; } } } Core/GameEngine/Model/TelPartialConfig/FamilyBossHurtAwardConfig.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: 4cd1365fe3ed5484ca0c6d2a1311847c MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/DTCFile/ServerPack/HA4_Family/DTCA402_tagGCFamilyBossFBInfo.cs
@@ -1,23 +1,19 @@ using UnityEngine; using System.Collections; // A4 02 家族boss副本开启及击杀信息 #tagGCFamilyBossFBInfo public class DTCA402_tagGCFamilyBossFBInfo : DtcBasic { public override void Done(GameNetPackBasic vNetPack) { base.Done(vNetPack); HA402_tagGCFamilyBossFBInfo vNetData = vNetPack as HA402_tagGCFamilyBossFBInfo; if (vNetData != null) { PlayerDatas.Instance.fairyData.OnRefreshFairy(vNetData); } } } using UnityEngine; using System.Collections; // A4 02 家族boss副本开启及击杀信息 #tagGCFamilyBossFBInfo public class DTCA402_tagGCFamilyBossFBInfo : DtcBasic { public override void Done(GameNetPackBasic vNetPack) { base.Done(vNetPack); HA402_tagGCFamilyBossFBInfo vNetData = vNetPack as HA402_tagGCFamilyBossFBInfo; } } Core/NetworkPackage/DTCFile/ServerPack/HA4_Family/DTCA40E_tagGCFamilyBosFBInfo.cs
New file @@ -0,0 +1,20 @@ using UnityEngine; using System.Collections; using Snxxz.UI; // A4 0E 家族boss副本信息 #tagGCFamilyBosFBInfo public class DTCA40E_tagGCFamilyBosFBInfo : DtcBasic { FairyBossModel fairyBossModel { get { return ModelCenter.Instance.GetModel<FairyBossModel>(); } } public override void Done(GameNetPackBasic vNetPack) { base.Done(vNetPack); HA40E_tagGCFamilyBosFBInfo vNetData = vNetPack as HA40E_tagGCFamilyBosFBInfo; fairyBossModel.UpdateHFamilyBosFBInfo(vNetData); } } Core/NetworkPackage/DTCFile/ServerPack/HA4_Family/DTCA40E_tagGCFamilyBosFBInfo.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: 5e62567c4ccd5a841a1f6fcb793e9d88 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/DTCFile/ServerPack/HA5_Family/DTCA507_tagMCFamilyBosFBPlayerInfo.cs
New file @@ -0,0 +1,21 @@ using UnityEngine; using System.Collections; using Snxxz.UI; // A5 07 家族boss副本玩家信息 #tagMCFamilyBosFBPlayerInfo public class DTCA507_tagMCFamilyBosFBPlayerInfo : DtcBasic { FairyBossModel fairyBossModel { get { return ModelCenter.Instance.GetModel<FairyBossModel>(); } } public override void Done(GameNetPackBasic vNetPack) { base.Done(vNetPack); HA507_tagMCFamilyBosFBPlayerInfo vNetData = vNetPack as HA507_tagMCFamilyBosFBPlayerInfo; fairyBossModel.UpdateFamilyBossFBPlayerInfo(vNetData); } } Core/NetworkPackage/DTCFile/ServerPack/HA5_Family/DTCA507_tagMCFamilyBosFBPlayerInfo.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: c1874c69c192e3741800d5bedecc7955 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/ServerPack/HA4_Family/HA40E_tagGCFamilyBosFBInfo.cs
New file @@ -0,0 +1,21 @@ using UnityEngine; using System.Collections; // A4 0E 家族boss副本信息 #tagGCFamilyBosFBInfo public class HA40E_tagGCFamilyBosFBInfo : GameNetPackBasic { public uint HurtTotal; // 仙盟累计伤血,亿求余部分 public uint HurtTotalPoint; // 仙盟累计伤血,亿整除部分 public byte FightMemCount; // 目前正在仙盟boss副本中的成员数 public HA40E_tagGCFamilyBosFBInfo () { _cmd = (ushort)0xA40E; } public override void ReadFromBytes (byte[] vBytes) { TransBytes (out HurtTotal, vBytes, NetDataType.DWORD); TransBytes (out HurtTotalPoint, vBytes, NetDataType.DWORD); TransBytes (out FightMemCount, vBytes, NetDataType.BYTE); } } Core/NetworkPackage/ServerPack/HA4_Family/HA40E_tagGCFamilyBosFBInfo.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: 758e6f2334f9e8d47ba9905c69049ada MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/ServerPack/HA5_Family/HA507_tagMCFamilyBosFBPlayerInfo.cs
New file @@ -0,0 +1,25 @@ using UnityEngine; using System.Collections; // A5 07 家族boss副本玩家信息 #tagMCFamilyBosFBPlayerInfo public class HA507_tagMCFamilyBosFBPlayerInfo : GameNetPackBasic { public uint HurtTotal; // 累计伤血,亿求余部分 public uint HurtTotalPoint; // 累计伤血,亿整除部分 public uint FightSeconds; // 已累计战斗时长,秒 public uint HurtAwardState; // 个人总伤血领奖记录,按奖励位二进制位运算表示是否已领取 public uint HurtAwardStateFamily; // 仙盟总伤血领奖记录,按奖励位二进制位运算表示是否已领取 public HA507_tagMCFamilyBosFBPlayerInfo () { _cmd = (ushort)0xA507; } public override void ReadFromBytes (byte[] vBytes) { TransBytes (out HurtTotal, vBytes, NetDataType.DWORD); TransBytes (out HurtTotalPoint, vBytes, NetDataType.DWORD); TransBytes (out FightSeconds, vBytes, NetDataType.DWORD); TransBytes (out HurtAwardState, vBytes, NetDataType.DWORD); TransBytes (out HurtAwardStateFamily, vBytes, NetDataType.DWORD); } } Core/NetworkPackage/ServerPack/HA5_Family/HA507_tagMCFamilyBosFBPlayerInfo.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: 1f7b129ee1567e44b82316bb212f7a30 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Fight/Stage/Dungeon/DungeonStage.cs
@@ -289,6 +289,9 @@ case RidingPetBossModel.RIDINGPETBOSS_MAP: WindowCenter.Instance.Open<RidingPetBossHintWin>(); break; case FairyBossModel.MapId: WindowCenter.Instance.Open<FairyBossDungeonWin>(); break; case HazyGrassModel.REIKI_CLIENTDATAMAP: case HazyGrassModel.FAIRY_CLIENTDATAMAP: case HazyGrassModel.FAIRY_DATAMAP: System/Activity/ActivityModel.cs
@@ -34,7 +34,6 @@ fairyLeagueModel.OnRefreshFairyLeagueEvent += CheckActivity; fairyLeagueModel.onFairyLeagueBattleEvent += CheckActivity; PlayerDatas.Instance.fairyData.OnRefreshFairyBoss += CheckActivity; StageLoad.Instance.onStageLoadFinish += OnStageLoadFinish; NewBieCenter.Instance.guideCompletedEvent += GuideCompletedEvent; AdventureStage.Instance.onLoadAdventureStage += OnLoadAdventureStageFinish; @@ -59,7 +58,6 @@ { fairyLeagueModel.onFairyLeagueBattleEvent -= CheckActivity; fairyLeagueModel.OnRefreshFairyLeagueEvent -= CheckActivity; PlayerDatas.Instance.fairyData.OnRefreshFairyBoss -= CheckActivity; AdventureStage.Instance.onLoadAdventureStage -= OnLoadAdventureStageFinish; } System/Dungeon/DungeonModel.cs
@@ -969,6 +969,13 @@ WindowCenter.Instance.Open<PersonalDropRateWin>(); } break; case FairyBossModel.MapId: ModelCenter.Instance.GetModel<FairyBossModel>().OnReceiveHelpMessage(_mission); if (!WindowCenter.Instance.IsOpen<FairyBossDungeonWin>()) { WindowCenter.Instance.Open<FairyBossDungeonWin>(); } break; default: if (GetDungeonHintId(mapId, lineId) != 0) { System/FairyAu/FairyBoss.cs
@@ -1,6 +1,7 @@ using System; using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.UI; @@ -8,23 +9,15 @@ { public class FairyBoss : Window, SecondWindowInterface { [SerializeField] Text textAtkCnt; [SerializeField] Text textFairyFoodNum; [SerializeField] Text textBossName; [SerializeField] Text textChallengeTime; [SerializeField] Text textBossState; [SerializeField] Text textFoodChallengeCnt; [SerializeField] Text m_TimeTip; [SerializeField] Text m_TimeCoolDown; [SerializeField] Button beginBtn; [SerializeField] Button previewBtn; [SerializeField] Button m_GetWayBtn; [SerializeField] RawImage model; [SerializeField] GameObject enterText; [SerializeField] GameObject openText; [SerializeField] ItemCell m_FairyFood; [SerializeField] Button m_HandIn; [SerializeField] Text m_WeekCntRemind; [SerializeField] FunctionButton personalHurtBtn; [SerializeField] FunctionButton familyHurtBtn; [SerializeField] FunctionButtonGroup fbGroup; [SerializeField] ScrollerController scroller; FairyBossModel m_Model; FairyBossModel fairyBossModel { @@ -33,250 +26,16 @@ } } PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } } FairyBossTime m_TimeStage; DateTime m_StartTime; private void OnClose() { Close(); } private void OnPreviewAward() { WindowCenter.Instance.Open<FairyBossAwardWin>(); } private void OnBeginBtn() { if (PlayerDatas.Instance.fairyData.IsBossOpen == 0) { PlayerFairyData fairyData = PlayerDatas.Instance.fairyData; if (fairyData.mine != null) { if (!PlayerDatas.Instance.fairyData.IsCanFunc(PlayerFairyData.LimitFunc.CanOpenBoss)) { ServerTipDetails.DisplayNormalTip(Language.Get("L1019")); return; } } if (TimeUtility.Hour < fairyBossModel.FairyBossStartHour || TimeUtility.Hour >= fairyBossModel.FairyBossEndHour) { ServerTipDetails.DisplayNormalTip(Language.Get("L1020")); return; } if (PlayerDatas.Instance.fairyData.weekBossOpenCnt >= fairyBossModel.GetFairyBossWeekCount()) { SysNotifyMgr.Instance.ShowTip("FairyBossOpenCntError"); return; } if (PlayerDatas.Instance.fairyData.fairy.FamilyHornor < fairyBossModel.OpenFairyBossNeed) { ServerTipDetails.DisplayNormalTip(Language.Get("L1124")); OnFoodGetWay(); return; } ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("L1125", fairyBossModel.OpenFairyBossNeed), (bool isOk) => { if (isOk) { CA405_tagCGOpenFamilyBossFB openPack = new CA405_tagCGOpenFamilyBossFB(); GameNetSystem.Instance.SendInfo(openPack); } }); } else { if (TimeUtility.Hour < fairyBossModel.FairyBossStartHour || TimeUtility.Hour >= fairyBossModel.FairyBossEndHour) { ServerTipDetails.DisplayNormalTip(Language.Get("L1020")); return; } ModelCenter.Instance.GetModel<DungeonModel>().SingleChallenge(fairyBossModel.MapId); } } private void OnRefreshFairyBoss() { m_StartTime = new DateTime(TimeUtility.Year, TimeUtility.Month, TimeUtility.Day, fairyBossModel.FairyBossStartHour, 0, 0); UpdateInfo(); CheckFairyBossTime(); UpdateTimeTip(); UpdateCoolDown(); } private void OnRefreshFairyMine() { if (!PlayerDatas.Instance.fairyData.HasFairy) { CloseImmediately(); } } private void UpdateInfo() { beginBtn.interactable = true; if (PlayerDatas.Instance.fairyData.IsBossOpen > 0) { openText.SetActive(false); enterText.SetActive(true); if (PlayerDatas.Instance.baseData.MapID == fairyBossModel.MapId) { beginBtn.interactable = false; } } else { openText.SetActive(true); enterText.SetActive(false); if (!PlayerDatas.Instance.fairyData.IsCanFunc(PlayerFairyData.LimitFunc.CanOpenBoss)) { beginBtn.interactable = false; } } textFairyFoodNum.text = UIHelper.ReplaceLargeNum(PlayerDatas.Instance.fairyData.fairy.FamilyHornor); textAtkCnt.text = string.Format("{0}/{1}", Mathf.Max(0, fairyBossModel.GetFairyBossWeekCount() - PlayerDatas.Instance.fairyData.weekBossOpenCnt), fairyBossModel.GetFairyBossWeekCount()); var nextWeekCnt = 0; var familyLv = PlayerDatas.Instance.fairyData.fairy.FamilyLV; m_WeekCntRemind.SetActive(fairyBossModel.TryGetWeekCnt(familyLv + 1, out nextWeekCnt)); if (nextWeekCnt != 0) { m_WeekCntRemind.text = Language.Get("FairyBossCountRemind", familyLv + 1, nextWeekCnt); } } void InitData() { textBossName.text = fairyBossModel.fairyBossInfo; textChallengeTime.text = Language.Get("L1105", fairyBossModel.FairyBossStartHour, fairyBossModel.FairyBossEndHour); textFoodChallengeCnt.text = fairyBossModel.OpenFairyBossNeed.ToString(); } void OnShowFairyBossModel() { UI3DModelExhibition.Instance.ShowNPC(fairyBossModel.fairyBossNpcId, Vector3.zero, model); } private void OnFoodGetWay() { ItemTipUtility.Show(fairyBossModel.fairyBossFood); } void UpdateTimeTip() { m_TimeTip.SetActive(true); switch (m_TimeStage) { case FairyBossTime.None: case FairyBossTime.PrepareClose: m_TimeTip.SetActive(false); break; case FairyBossTime.BeforeOpen: m_TimeTip.text = Language.Get("FairyBossOpenCoolDown"); break; case FairyBossTime.PrepareOpen: case FairyBossTime.Open: m_TimeTip.text = Language.Get("FairyBossEndCoolDown"); break; } } void UpdateCoolDown() { if (!m_TimeCoolDown.gameObject.activeSelf) { m_TimeCoolDown.SetActive(true); } switch (m_TimeStage) { case FairyBossTime.None: case FairyBossTime.PrepareClose: m_TimeCoolDown.SetActive(false); break; case FairyBossTime.BeforeOpen: { var _surplusTime = (m_StartTime - TimeUtility.ServerNow).TotalSeconds; m_TimeCoolDown.text = TimeUtility.SecondsToDHMSCHS((int)_surplusTime); } break; case FairyBossTime.PrepareOpen: m_TimeCoolDown.SetActive(true); m_TimeCoolDown.text = TimeUtility.SecondsToDHMSCHS(fairyBossModel.fairyBossContinueTime); break; case FairyBossTime.Open: { var _overTime = PlayerDatas.Instance.fairyData.bossOpenTime.AddSeconds( fairyBossModel.fairyBossContinueTime+fairyBossModel.fairyBossPrepareTime); var _surplusTime = (_overTime - TimeUtility.ServerNow).TotalSeconds; m_TimeCoolDown.text = TimeUtility.SecondsToDHMSCHS((int)_surplusTime); } break; } } void CheckFairyBossTime() { m_TimeStage = FairyBossTime.None; var _fairyData = PlayerDatas.Instance.fairyData; if (_fairyData == null) { return; } if (PlayerDatas.Instance.fairyData.weekBossOpenCnt >= fairyBossModel.GetFairyBossWeekCount() && _fairyData.IsBossOpen == 0) { return; } if (TimeUtility.Hour < fairyBossModel.FairyBossStartHour) { m_TimeStage = FairyBossTime.BeforeOpen; } else if (_fairyData.IsBossOpen == 2) { m_TimeStage = FairyBossTime.PrepareClose; } else if (_fairyData.IsBossOpen > 1) { m_TimeStage = FairyBossTime.Open; } else if (_fairyData.IsBossOpen == 1 && TimeUtility.Hour < fairyBossModel.FairyBossEndHour) { m_TimeStage = FairyBossTime.PrepareOpen; } else if (TimeUtility.Hour >= fairyBossModel.FairyBossEndHour) { m_TimeStage = FairyBossTime.None; } } private void RefreshItemCountAct(PackType packType, int arg2, int id) { if (packType == PackType.Item && id == fairyBossModel.fairyBossFood) { DisplayFairyFood(); } } void DisplayFairyFood() { var count = packModel.GetItemCountByID(PackType.Item, fairyBossModel.fairyBossFood); var itemData = new ItemCellModel(fairyBossModel.fairyBossFood, true, (ulong)count); m_FairyFood.Init(itemData); m_FairyFood.countText.text = count.ToString(); m_FairyFood.countText.color = UIHelper.GetUIColor(count > 0 ? TextColType.Green : TextColType.Red); m_FairyFood.countText.SetActive(true); } private void HandIn() { fairyBossModel.HandInFairyFood(); } public Button close { get; set; } protected override void OnActived() { if (fairyBossModel.redpoint2.state == RedPointState.Simple) { functionOrder = 1; } fbGroup.TriggerByOrder(functionOrder); } protected override void BindController() { @@ -291,24 +50,19 @@ protected override void AddListeners() { close.onClick.AddListener(OnClose); previewBtn.onClick.AddListener(OnPreviewAward); beginBtn.onClick.AddListener(OnBeginBtn); m_GetWayBtn.onClick.AddListener(OnFoodGetWay); m_HandIn.onClick.AddListener(HandIn); m_FairyFood.button.AddListener(OnFoodGetWay); personalHurtBtn.AddListener(ShowPersonnalHurt); familyHurtBtn.AddListener(ShowFamilyHurt); } protected override void OnPreOpen() { PlayerDatas.Instance.fairyData.OnRefreshFairyBoss += OnRefreshFairyBoss; PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += OnRefreshFairyBoss; PlayerDatas.Instance.fairyData.OnRefreshFairyMine += OnRefreshFairyMine; TimeMgr.Instance.OnHourEvent += OnRefreshFairyBoss; packModel.refreshItemCountEvent += RefreshItemCountAct; InitData(); OnRefreshFairyBoss(); OnShowFairyBossModel(); DisplayFairyFood(); fairyBossModel.OnUpdateFamilyBossFBInfoEvent += OnUpdateFamilyBossFBInfoEvent; fairyBossModel.OnUpdateFamilyBossFBPlayerInfoEvent += OnUpdateFamilyBossFBPlayerInfoEvent; scroller.OnRefreshCell += OnRefreshCell; Display(); } @@ -326,40 +80,149 @@ protected override void OnAfterClose() { UI3DModelExhibition.Instance.StopShow(); PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= OnRefreshFairyBoss; PlayerDatas.Instance.fairyData.OnRefreshFairyBoss -= OnRefreshFairyBoss; TimeMgr.Instance.OnHourEvent -= OnRefreshFairyBoss; packModel.refreshItemCountEvent -= RefreshItemCountAct; PlayerDatas.Instance.fairyData.OnRefreshFairyMine -= OnRefreshFairyMine; fairyBossModel.OnUpdateFamilyBossFBInfoEvent -= OnUpdateFamilyBossFBInfoEvent; fairyBossModel.OnUpdateFamilyBossFBPlayerInfoEvent -= OnUpdateFamilyBossFBPlayerInfoEvent; scroller.OnRefreshCell -= OnRefreshCell; } float m_Time = 0; float m_DelayTime = 0.5f; protected override void LateUpdate() void OnRefreshCell(ScrollerDataType type, CellView cell) { base.LateUpdate(); m_Time += Time.deltaTime; if (m_Time < m_DelayTime) var sortCell = cell as FairyBossHurtCell; sortCell.Display(cell.index); } private void OnClose() { Close(); } private void OnBeginBtn() { if (fairyBossModel.IsFairyBossOpen()) { return; ModelCenter.Instance.GetModel<DungeonModel>().SingleChallenge(FairyBossModel.MapId); } m_Time = 0; switch (m_TimeStage) else { case FairyBossTime.BeforeOpen: case FairyBossTime.Open: UpdateCoolDown(); break; SysNotifyMgr.Instance.ShowTip("FamilyBoss1"); } } private void Display() { textBossState.text = Language.Get("UnionLiven114", fairyBossModel.hurtBuffInfo[0], fairyBossModel.m_FightMemCount); textChallengeTime.text = Language.Get("UnionLiven115", TimeUtility.SecondsToMS(fairyBossModel.challengeTimes - fairyBossModel.m_FightTimes)); OnShowFairyBossModel(); OnCreateScroller(); } private void OnRefreshFairyMine() { if (!PlayerDatas.Instance.fairyData.HasFairy) { CloseImmediately(); } } enum FairyBossTime void OnShowFairyBossModel() { None, BeforeOpen, PrepareOpen, Open, PrepareClose, textBossName.text = fairyBossModel.fairyBossInfo; UI3DModelExhibition.Instance.ShowNPC(fairyBossModel.fairyBossNpcId, Vector3.zero, model); } void OnUpdateFamilyBossFBInfoEvent() { textBossState.text = Language.Get("UnionLiven114", fairyBossModel.hurtBuffInfo[0], fairyBossModel.m_FightMemCount); if (functionOrder == 1) { List<int> keys = new List<int>(); keys = FamilyBossHurtAwardConfig.familyHurtAwards.Keys.ToList(); for (int i = 0; i < keys.Count; i++) { if (fairyBossModel.GetAwardState(keys[i]) == 1 || fairyBossModel.GetAwardState(keys[i]) == 0) { scroller.JumpIndex(i); break; } } scroller.m_Scorller.RefreshActiveCellViews(); } } void OnUpdateFamilyBossFBPlayerInfoEvent() { textChallengeTime.text = Language.Get("UnionLiven115", TimeUtility.SecondsToMS(fairyBossModel.challengeTimes - fairyBossModel.m_FightTimes)); if (functionOrder == 0) { List<int> keys = new List<int>(); keys = FamilyBossHurtAwardConfig.personalHurtAwards.Keys.ToList(); for (int i = 0; i < keys.Count; i++) { if (fairyBossModel.GetAwardState(keys[i]) == 1 || fairyBossModel.GetAwardState(keys[i]) == 0) { scroller.JumpIndex(i); break; } } scroller.m_Scorller.RefreshActiveCellViews(); } else { List<int> keys = new List<int>(); keys = FamilyBossHurtAwardConfig.familyHurtAwards.Keys.ToList(); for (int i = 0; i < keys.Count; i++) { if (fairyBossModel.GetAwardState(keys[i]) == 1 || fairyBossModel.GetAwardState(keys[i]) == 0) { scroller.JumpIndex(i); break; } } scroller.m_Scorller.RefreshActiveCellViews(); } } void OnCreateScroller() { List<int> keys = new List<int>(); if (functionOrder == 0) { keys = FamilyBossHurtAwardConfig.personalHurtAwards.Keys.ToList(); } else { keys = FamilyBossHurtAwardConfig.familyHurtAwards.Keys.ToList(); } scroller.Refresh(); int jumpIndex = -1; for (int i = 0; i < keys.Count; i++) { scroller.AddCell(ScrollerDataType.Header, keys[i]); if (jumpIndex == -1 && (fairyBossModel.GetAwardState(keys[i]) == 1 || fairyBossModel.GetAwardState(keys[i]) == 0)) { jumpIndex = i; } } scroller.Restart(); scroller.JumpIndex(jumpIndex); scroller.m_Scorller.RefreshActiveCellViews(); } void ShowPersonnalHurt() { functionOrder = personalHurtBtn.order; OnCreateScroller(); } void ShowFamilyHurt() { functionOrder = familyHurtBtn.order; OnCreateScroller(); } } } System/FairyAu/FairyBossDungeonWin.cs
New file @@ -0,0 +1,72 @@ using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class FairyBossDungeonWin : Window { [SerializeField] Text m_Time; [SerializeField] Text m_MyHurt; [SerializeField] Text m_PlayerCount; FairyBossModel m_Model; FairyBossModel fairyBossModel { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<FairyBossModel>()); } } DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } } protected override void BindController() { } protected override void AddListeners() { } protected override void OnPreOpen() { Display(); } protected override void OnAfterOpen() { } protected override void OnPreClose() { } protected override void OnAfterClose() { } protected override void LateUpdate() { Display(); } void Display() { m_MyHurt.text = Language.Get("FairyBoss3") + Language.Get("L5000") + UIHelper.ReplaceLargeNum( fairyBossModel.m_PlayerHurt); m_Time.text = Language.Get("UnionLiven115", TimeUtility.SecondsToMS(fairyBossModel.challengeTimes - fairyBossModel.m_FightTimes- (int)(Time.time - fairyBossModel.receiveTime))); m_PlayerCount.text = Language.Get("FamilyMatchNumOfPeople") + fairyBossModel.m_FightMemCount; } } } System/FairyAu/FairyBossDungeonWin.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: 7c01620d94d23c3418cb34a06b31420e MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/FairyAu/FairyBossHurtCell.cs
New file @@ -0,0 +1,70 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; using Snxxz.UI; using System; using UnityEngine.UI; using LitJson; using static UnityEditor.Experimental.AssetDatabaseExperimental.AssetDatabaseCounters; namespace Snxxz.UI { public class FairyBossHurtCell : CellView { [SerializeField] List<ItemCell> m_Items; [SerializeField] IntensifySmoothSlider m_Slider; [SerializeField] Text m_SliderTxt; [SerializeField] ButtonEx m_GetBtn; [SerializeField] Image m_State; FairyBossModel m_Model; FairyBossModel fairyBossModel { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<FairyBossModel>()); } } public void Display(int index) { var awardType = index / 1000; var awardIndex = index % 1000; var awardConfig = awardType == 1 ? FamilyBossHurtAwardConfig.personalHurtAwards[index] : FamilyBossHurtAwardConfig.familyHurtAwards[index]; var awards = JsonMapper.ToObject<int[][]>(awardConfig.AwardItemList); for(int i = 0;i< m_Items.Count;i++) { if (i < awards.Length) { m_Items[i].SetActive(true); int itemID = awards[i][0]; m_Items[i].Init(new ItemCellModel(awards[i][0], false, (ulong)awards[i][1])); m_Items[i].button.AddListener(() => { ItemTipUtility.Show(itemID); }); } else { m_Items[i].SetActive(false); } } long curValue = awardType == 1 ? fairyBossModel.m_PlayerHurt : fairyBossModel.m_FamilyHurt; m_Slider.value = (float)Math.Round((double)curValue / awardConfig.NeedHurtTotal, 2, MidpointRounding.AwayFromZero); m_SliderTxt.text = UIHelper.ReplaceLargeNum(curValue) + "/" + UIHelper.ReplaceLargeNum(awardConfig.NeedHurtTotal); var state = fairyBossModel.GetAwardState(index); m_GetBtn.SetActive(state != 2); m_State.SetActive(state == 2); m_GetBtn.interactable = state == 1; m_GetBtn.AddListener(() => { var send = new CA504_tagCMPlayerGetReward(); send.RewardType = 63; send.DataEx = (byte)awardType; send.DataExStr = awardIndex.ToString(); send.DataExStrLen = (byte)awardIndex.ToString().Length; GameNetSystem.Instance.SendInfo(send); }); } } } System/FairyAu/FairyBossHurtCell.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: 8bc3df547c746ef40a2e6e2d4e6f69b6 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/FairyAu/FairyBossModel.cs
@@ -1,216 +1,285 @@ using System; using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Snxxz.UI { public class FairyBossModel : Model { public override void Init() { ParseConfig(); TimeMgr.Instance.OnHourEvent += UpdateRedPoint; StageLoad.Instance.onStageLoadFinish+= OnStageLoadFinish; PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += OnRefreshFairyInfo; PlayerDatas.Instance.fairyData.OnRefreshFairyMine += OnRefreshFairyInfo; } public override void UnInit() { TimeMgr.Instance.OnHourEvent -= UpdateRedPoint; StageLoad.Instance.onStageLoadFinish -= OnStageLoadFinish; PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= OnRefreshFairyInfo; PlayerDatas.Instance.fairyData.OnRefreshFairyMine -= OnRefreshFairyInfo; } DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } } PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } } FairyModel fairyModel { get { return ModelCenter.Instance.GetModel<FairyModel>(); } } public int MapId { get; private set; } public int OpenFairyBossNeed { get; private set; } public int FairyBossStartHour { get; private set; } public int FairyBossEndHour { get; private set; } public string fairyBossInfo { get; private set; } public int fairyBossNpcId { get; private set; } public int fairyBossFood { get; private set; } public int fairyBossContinueTime { get; private set; } public int fairyBossPrepareTime { get; private set; } public int fairyLevelLimit { get; private set; } /// <summary> /// key---世界等级上限 value---预览物品id /// </summary> public Dictionary<int, int[]> fairyBossAwardDict { get; private set; } public List<int> m_LeagueTableHides { get; private set; } public string leagueTableName { get; private set; } Dictionary<int, int> fairyBossWeekCntDict = new Dictionary<int, int>(); private void ParseConfig() { FuncConfigConfig cfg = FuncConfigConfig.Get("FamilyBossOpen"); MapId = int.Parse(cfg.Numerical1); OpenFairyBossNeed = int.Parse(cfg.Numerical2); FairyBossStartHour = ConfigParse.GetMultipleStr<int>(cfg.Numerical3)[0]; FairyBossEndHour = ConfigParse.GetMultipleStr<int>(cfg.Numerical3)[1]; cfg = FuncConfigConfig.Get("FamilyBossInfo"); fairyBossInfo = cfg.Numerical1; fairyBossNpcId = int.Parse(cfg.Numerical2); fairyBossFood = int.Parse(cfg.Numerical3); fairyBossAwardDict = new Dictionary<int, int[]>(); cfg = FuncConfigConfig.Get("FamilyBossDrop"); var _json = LitJson.JsonMapper.ToObject(cfg.Numerical1); foreach (var _key in _json.Keys) { var _worldLv = int.Parse(_key); fairyBossAwardDict.Add(_worldLv, LitJson.JsonMapper.ToObject<int[]>(_json[_key].ToJson())); } cfg = FuncConfigConfig.Get("LeagueTable"); m_LeagueTableHides = new List<int>(); m_LeagueTableHides.AddRange(ConfigParse.GetMultipleStr<int>(cfg.Numerical1)); leagueTableName = cfg.Numerical2; var configs = FamilyConfig.GetValues(); for (int i = 0; i < configs.Count; i++) { fairyBossWeekCntDict.Add(configs[i].familyLV, configs[i].bossFBCnt); if (fairyLevelLimit == 0 && configs[i].bossFBCnt > 0) { fairyLevelLimit = configs[i].familyLV; } } GetDungeonContinueTime(); } Redpoint redpoint = new Redpoint(10701, 1070102); private void OnStageLoadFinish() { UpdateRedPoint(); GameObject _go = GameObject.Find(leagueTableName); if (_go != null) { if (m_LeagueTableHides.Contains(PlayerDatas.Instance.baseData.MapID)) { _go.SetActive(false); } else { _go.SetActive(true); } } } public int GetFairyBossWeekCount() { var lv = 1; var fairyData = PlayerDatas.Instance.fairyData; if (!fairyData.HasFairy) { return 0; } lv = fairyData.fairy.FamilyLV; if (fairyBossWeekCntDict.ContainsKey(lv)) { return fairyBossWeekCntDict[lv]; } return 0; } public bool TryGetWeekCnt(int _fairyLv, out int cnt) { return fairyBossWeekCntDict.TryGetValue(_fairyLv, out cnt); } private void OnRefreshFairyInfo() { UpdateRedPoint(); } public void UpdateRedPoint() { redpoint.state = RedPointState.None; PlayerFairyData fairyData = PlayerDatas.Instance.fairyData; if (!fairyModel.fairyBossFuncOpen) { return; } if (fairyData.weekBossOpenCnt >= GetFairyBossWeekCount()) { return; } if (PlayerDatas.Instance.baseData.MapID == MapId) { return; } if (TimeUtility.Hour < FairyBossStartHour || TimeUtility.Hour >= FairyBossEndHour) { return; } if (fairyData.IsBossOpen == 0) { if (fairyData.fairy.FamilyHornor < OpenFairyBossNeed) { return; } if (fairyData.IsCanFunc(PlayerFairyData.LimitFunc.CanOpenBoss)) { redpoint.state = RedPointState.Simple; } } else { redpoint.state = RedPointState.Simple; } } public bool IsFairyBossOpen() { PlayerFairyData fairyData = PlayerDatas.Instance.fairyData; if (!fairyModel.fairyBossFuncOpen) { return false; } if (TimeUtility.Hour < FairyBossStartHour || TimeUtility.Hour >= FairyBossEndHour) { return false; } return fairyData.IsBossOpen > 0; } private void GetDungeonContinueTime() { var _list = dungeonModel.GetDungeonIds(MapId); var _dungeonCfg = DungeonConfig.Get(_list[0]); var _stepTime = _dungeonCfg.StepTime; _stepTime = _stepTime.Replace("[", string.Empty); _stepTime = _stepTime.Replace("]", string.Empty); fairyBossContinueTime = int.Parse(_stepTime.Split(',')[1]); fairyBossPrepareTime = int.Parse(_stepTime.Split(',')[0]); } public void HandInFairyFood() { var singlepack = packModel.GetSinglePack(PackType.Item); var count = 0; if (singlepack != null) { count = singlepack.GetCountById(fairyBossFood); } if (count > 0) { CA605_tagCMFamilyDonate pak = new CA605_tagCMFamilyDonate(); GameNetSystem.Instance.SendInfo(pak); } else { SysNotifyMgr.Instance.ShowTip("FairyFoodHandError"); } } } } using LitJson; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Snxxz.UI { public class FairyBossModel : Model { public override void Init() { ParseConfig(); StageLoad.Instance.onStageLoadFinish+= OnStageLoadFinish; PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += OnRefreshFairyInfo; PlayerDatas.Instance.fairyData.OnRefreshFairyMine += OnRefreshFairyInfo; } public override void UnInit() { StageLoad.Instance.onStageLoadFinish -= OnStageLoadFinish; PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= OnRefreshFairyInfo; PlayerDatas.Instance.fairyData.OnRefreshFairyMine -= OnRefreshFairyInfo; } DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } } PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } } FairyModel fairyModel { get { return ModelCenter.Instance.GetModel<FairyModel>(); } } public const int MapId = 31210; public int challengeTimes; public int[] hurtBuffInfo; public string fairyBossInfo { get; private set; } public int fairyBossNpcId { get; private set; } public int fairyBossFood { get; private set; } public int fairyBossContinueTime { get; private set; } public int fairyBossPrepareTime { get; private set; } public int fairyLevelLimit { get; private set; } /// <summary> /// key---世界等级上限 value---预览物品id /// </summary> public Dictionary<int, int[]> fairyBossAwardDict { get; private set; } public List<int> m_LeagueTableHides { get; private set; } public string leagueTableName { get; private set; } Dictionary<int, int> fairyBossWeekCntDict = new Dictionary<int, int>(); private void ParseConfig() { var cfg = FuncConfigConfig.Get("FamilyBossFB"); challengeTimes = int.Parse(cfg.Numerical1); hurtBuffInfo = JsonMapper.ToObject<int[]>(cfg.Numerical2); cfg = FuncConfigConfig.Get("FamilyBossInfo"); fairyBossInfo = cfg.Numerical1; fairyBossNpcId = int.Parse(cfg.Numerical2); fairyBossFood = int.Parse(cfg.Numerical3); fairyBossAwardDict = new Dictionary<int, int[]>(); cfg = FuncConfigConfig.Get("FamilyBossDrop"); var _json = LitJson.JsonMapper.ToObject(cfg.Numerical1); foreach (var _key in _json.Keys) { var _worldLv = int.Parse(_key); fairyBossAwardDict.Add(_worldLv, LitJson.JsonMapper.ToObject<int[]>(_json[_key].ToJson())); } cfg = FuncConfigConfig.Get("LeagueTable"); m_LeagueTableHides = new List<int>(); m_LeagueTableHides.AddRange(ConfigParse.GetMultipleStr<int>(cfg.Numerical1)); leagueTableName = cfg.Numerical2; var configs = FamilyConfig.GetValues(); for (int i = 0; i < configs.Count; i++) { fairyBossWeekCntDict.Add(configs[i].familyLV, configs[i].bossFBCnt); if (fairyLevelLimit == 0 && configs[i].bossFBCnt > 0) { fairyLevelLimit = configs[i].familyLV; } } GetDungeonContinueTime(); } Redpoint redpoint = new Redpoint(10701, 1070102); public Redpoint redpoint1 = new Redpoint(1070102, 10701020); public Redpoint redpoint2 = new Redpoint(1070102, 10701021); private void OnStageLoadFinish() { GameObject _go = GameObject.Find(leagueTableName); if (_go != null) { if (m_LeagueTableHides.Contains(PlayerDatas.Instance.baseData.MapID)) { _go.SetActive(false); } else { _go.SetActive(true); } } } public int GetFairyBossWeekCount() { var lv = 1; var fairyData = PlayerDatas.Instance.fairyData; if (!fairyData.HasFairy) { return 0; } lv = fairyData.fairy.FamilyLV; if (fairyBossWeekCntDict.ContainsKey(lv)) { return fairyBossWeekCntDict[lv]; } return 0; } public bool TryGetWeekCnt(int _fairyLv, out int cnt) { return fairyBossWeekCntDict.TryGetValue(_fairyLv, out cnt); } private void OnRefreshFairyInfo() { UpdateRedPoint(); } public void UpdateRedPoint() { redpoint.state = RedPointState.None; redpoint1.state = RedPointState.None; redpoint2.state = RedPointState.None; if (PlayerDatas.Instance.baseData.MapID != MapId) { if (challengeTimes > 0) { redpoint.state = RedPointState.Simple; } } foreach (var key in FamilyBossHurtAwardConfig.personalHurtAwards.Keys) { if (GetAwardState(key) == 1) { redpoint1.state = RedPointState.Simple; break; } } foreach (var key in FamilyBossHurtAwardConfig.familyHurtAwards.Keys) { if (GetAwardState(key) == 1) { redpoint2.state = RedPointState.Simple; break; } } } public bool IsFairyBossOpen() { PlayerFairyData fairyData = PlayerDatas.Instance.fairyData; if (!fairyModel.fairyBossFuncOpen) { return false; } return true; } private void GetDungeonContinueTime() { //var _list = dungeonModel.GetDungeonIds(MapId); //var _dungeonCfg = DungeonConfig.Get(_list[0]); //var _stepTime = _dungeonCfg.StepTime; //_stepTime = _stepTime.Replace("[", string.Empty); //_stepTime = _stepTime.Replace("]", string.Empty); fairyBossContinueTime = 1;// int.Parse(_stepTime.Split(',')[1]); fairyBossPrepareTime = 0;// int.Parse(_stepTime.Split(',')[0]); } public void HandInFairyFood() { var singlepack = packModel.GetSinglePack(PackType.Item); var count = 0; if (singlepack != null) { count = singlepack.GetCountById(fairyBossFood); } if (count > 0) { CA605_tagCMFamilyDonate pak = new CA605_tagCMFamilyDonate(); GameNetSystem.Instance.SendInfo(pak); } else { SysNotifyMgr.Instance.ShowTip("FairyFoodHandError"); } } public int m_FightMemCount; public long m_FamilyHurt; public event Action OnUpdateFamilyBossFBInfoEvent; public void UpdateHFamilyBosFBInfo(HA40E_tagGCFamilyBosFBInfo netPack) { m_FightMemCount = netPack.FightMemCount; m_FamilyHurt = netPack.HurtTotal + netPack.HurtTotalPoint * 100000000; OnUpdateFamilyBossFBInfoEvent?.Invoke(); } public event Action OnUpdateFamilyBossFBPlayerInfoEvent; public long m_PlayerHurt; public int m_FightTimes; public int m_PersonalHurtAward; public int m_FamilyHurtAward; public void UpdateFamilyBossFBPlayerInfo(HA507_tagMCFamilyBosFBPlayerInfo netPack) { m_PlayerHurt = netPack.HurtTotal + netPack.HurtTotalPoint * 100000000; m_FightTimes = (int)netPack.FightSeconds; m_PersonalHurtAward = (int)netPack.HurtAwardState; m_FamilyHurtAward = (int)netPack.HurtAwardStateFamily; OnUpdateFamilyBossFBPlayerInfoEvent?.Invoke(); UpdateRedPoint(); } //0 伤害未达到 1 未领取 2 已领取 public int GetAwardState(int key) { var awardType = key / 1000; var awardIndex = key % 1000; if (awardType == 1) { var config = FamilyBossHurtAwardConfig.personalHurtAwards[key]; if (m_PlayerHurt < config.NeedHurtTotal) { return 0; } if (((int)Math.Pow(2, awardIndex) & m_PersonalHurtAward) == 0) { return 1; } return 2; } else { var config = FamilyBossHurtAwardConfig.familyHurtAwards[key]; if (m_FamilyHurt < config.NeedHurtTotal) { return 0; } if (((int)Math.Pow(2, awardIndex) & m_FamilyHurtAward) == 0) { return 1; } return 2; } } public float receiveTime; public void OnReceiveHelpMessage(string _mission) { var json = JsonMapper.ToObject(_mission); if (json != null && json.Keys.Contains("fightMemCount")) { m_FightMemCount = int.Parse(json["fightMemCount"].ToJson()); } if (json != null && json.Keys.Contains("hurtValue")) { m_PlayerHurt = long.Parse(json["hurtValue"].ToJson()); } if (json != null && json.Keys.Contains("fightSeconds")) { m_FightTimes = int.Parse(json["fightSeconds"].ToJson()); receiveTime = Time.time; } } } } System/FairyAu/FairyModel.cs
@@ -799,11 +799,13 @@ { if (PlayerDatas.Instance.fairyData.HasFairy) { var fairy = PlayerDatas.Instance.fairyData.fairy; if (fairy != null && fairy.FamilyLV >= fairyBossModel.fairyLevelLimit) if (TimeUtility.Hour == 4 || TimeUtility.Hour == 5) { return true; return false; } //var fairy = PlayerDatas.Instance.fairyData.fairy; //if (fairy != null && fairy.FamilyLV >= fairyBossModel.fairyLevelLimit) return true; } return false; } System/Message/RichNormalEvent.cs
@@ -96,6 +96,20 @@ { WindowJumpMgr.Instance.WindowJumpTo((JumpUIType)id); } else { var list = href.mSplits["openui"].Split('_'); int funcOrder = 0; if (list.Length != 1) { funcOrder = int.Parse(list[1]); } WindowJumpMgr.Instance.WindowJumpToEx(list[0], 1, 0, funcOrder); if (list.Length > 2) { ModelCenter.Instance.GetModel<RoleModel>().openUIMark = int.Parse(list[2]); } } } break; case RichTextEventEnum.OPENURL: System/Role/RoleModel.cs
@@ -11,6 +11,7 @@ public class RoleModel : Model,IBeforePlayerDataInitialize,IAfterPlayerDataInitialize,IPlayerLoginOk { public int openUIMark = 0; //自定义openui带的数字含义,规律其一为功能ID*10000 + 数字 Dictionary<int,Int2> customAwardsDict = new Dictionary<int, Int2>(); public event Action OnCustomAwardsEvent; Utility/ConfigInitiator.cs
@@ -325,6 +325,7 @@ normalTasks.Add(new ConfigInitTask("ActFeastTravelTaskConfig", () => { ActFeastTravelTaskConfig.Init(); }, () => { return ActFeastTravelTaskConfig.inited; })); normalTasks.Add(new ConfigInitTask("NPCExConfig", () => { NPCExConfig.Init(); }, () => { return NPCExConfig.inited; })); normalTasks.Add(new ConfigInitTask("CustomAward", () => { CustomAwardConfig.Init(); }, () => { return CustomAwardConfig.inited; })); normalTasks.Add(new ConfigInitTask("FamilyBossHurtAward", () => { FamilyBossHurtAwardConfig.Init(); }, () => { return FamilyBossHurtAwardConfig.inited; })); } static List<ConfigInitTask> doingTasks = new List<ConfigInitTask>();