Core/GameEngine/Model/Config/RealmXXZLConfig.cs
New file @@ -0,0 +1,211 @@ //-------------------------------------------------------- // [Author]: Fish // [ Date ]: 2023年10月14日 //-------------------------------------------------------- using System.Collections.Generic; using System.IO; using System.Threading; using System; using UnityEngine; public partial class RealmXXZLConfig { public readonly int TaskID; public readonly int TaskType; public readonly int NeedValue; public readonly string AwardItemList; public readonly string Desc; public RealmXXZLConfig() { } public RealmXXZLConfig(string input) { try { var tables = input.Split('\t'); int.TryParse(tables[0],out TaskID); int.TryParse(tables[1],out TaskType); int.TryParse(tables[2],out NeedValue); AwardItemList = tables[3]; Desc = tables[4]; } catch (Exception ex) { DebugEx.Log(ex); } } static Dictionary<string, RealmXXZLConfig> configs = new Dictionary<string, RealmXXZLConfig>(); public static RealmXXZLConfig Get(string id) { if (!inited) { Debug.Log("RealmXXZLConfig 还未完成初始化。"); return null; } if (configs.ContainsKey(id)) { return configs[id]; } RealmXXZLConfig config = null; if (rawDatas.ContainsKey(id)) { config = configs[id] = new RealmXXZLConfig(rawDatas[id]); rawDatas.Remove(id); } return config; } public static RealmXXZLConfig 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<RealmXXZLConfig> GetValues() { var values = new List<RealmXXZLConfig>(); 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 +"/RealmXXZL.txt"; } else { path = AssetVersionUtility.GetAssetFilePath("config/RealmXXZL.txt"); } configs.Clear(); var tempConfig = new RealmXXZLConfig(); 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 RealmXXZLConfig(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 RealmXXZLConfig(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/RealmXXZLConfig.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: 10d3a4534c4e2af4d815a55968f34373 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA3B7_tagMCBOSSAttactCnt.cs
@@ -29,6 +29,7 @@ case 0: worldBossModel.wearyValue = (int)info.KillCnt; worldBossModel.extraBossWearyValue = (int)info.ItemAddCnt; worldBossModel.killCntTotal = (int)info.KillCntTotal; break; case 1: bossHomeModel.wearyValue = (int)info.KillCnt; System/Dungeon/DungeonData.cs
@@ -254,6 +254,7 @@ public int extraTimes { get; private set; } //使用物品增加的额外次数 public int recoverTimes { get; private set; } //找回次数 public Dictionary<int, int> lineGrades; //副本线路对应星级值列表 public int enterCntTotal { get; private set; } //找回次数 public DungeonRecord(HA320_tagMCPlayerFBInfoData.tagMCFBInfo _serverInfo) { @@ -295,6 +296,7 @@ this.lineGrades[i * 9 + j] = (tempValue % b) / a; } } this.enterCntTotal = (int)_serverInfo.EnterCntTotal; } public void UpdateRecord(HA3BD_tagMCBuyEnterInfo.tagMCBuyInfo _serverInfo) System/Dungeon/DungeonModel.cs
@@ -283,6 +283,19 @@ } } public int GetAllEnterTimes(int _dataMapId) { DungeonRecord record; if (TryGetRecord(_dataMapId, out record)) { return record.enterCntTotal; } else { return 0; } } public int GetBuyTimesLimit(int _dataMapId) { var config = DungeonOpenTimeConfig.Get(_dataMapId); System/FindPrecious/PersonalBossModel.cs
@@ -300,6 +300,20 @@ } return false; } //是否通关过 public bool IsFBPass(int lineId) { DungeonRecord dungeonRecord; if (dungeonModel.TryGetRecord(PERSONALBOSS_MAPID, out dungeonRecord)) { if (dungeonRecord.lineGrades.ContainsKey(lineId) && dungeonRecord.lineGrades[lineId] != 0) { return true; } } return false; } } public class PersonalBossData System/FindPrecious/WorldBossModel.cs
@@ -58,6 +58,8 @@ } } public int killCntTotal; public bool funcOpenClickSymbol { get { return LocalSave.GetBool("WorldBossClickSymbol_" + PlayerDatas.Instance.PlayerId); } set { System/MainInterfacePanel/FunctionForecastTip.cs
@@ -22,8 +22,13 @@ [SerializeField] Text _NameText;//标题名 [SerializeField] Text _Information;//信息内容 [SerializeField] Text m_Information_reward;//有奖励可领取 [SerializeField] ButtonEx xxzlBtn;//修仙之路按钮 [SerializeField] Text xxzlTxt;//修仙之路进度 [SerializeField] UIEffect xxzlEffect;//修仙之路特效 public static Action<int> FunctionOpenTagEvent; FeatureNoticeModel featureNoticeModel { get { return ModelCenter.Instance.GetModel<FeatureNoticeModel>(); } } RealmModel realmModel { get { return ModelCenter.Instance.GetModel<RealmModel>(); } } public void Init()//初始化 { PlayerDatas.Instance.playerDataRefreshEvent += OnPlayersUpLV; @@ -64,6 +69,24 @@ List<FunctionForecastConfig> configs = new List<FunctionForecastConfig>(); void DataAssignment() { if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Realm) || realmModel.IsRealmXXZLOver()) { xxzlBtn.SetActive(false); } else { xxzlBtn.SetActive(true); xxzlBtn.AddListener(() => { WindowCenter.Instance.Open<RealmWin>(); }); xxzlTxt.text = realmModel.GetXXZLProcess() + "/" + RealmXXZLConfig.GetKeys().Count; if (realmModel.xxzlRedpoint.state == RedPointState.Simple) xxzlEffect.Play(); else xxzlEffect.Stop(); } if (FuncOpen.Instance.IsFuncOpen(OpenTag)) { _FunctionForecastPanel.SetActive(false); @@ -100,8 +123,9 @@ { _FunctionForecastPanel.SetActive(true); _FunctionIcon.SetSprite("PersonBossIcon"); m_Information_reward.SetActive(true); _NameText.SetActive(false); m_Information_reward.SetActive(false); _NameText.SetActive(true); _NameText.text = Language.Get("Z1043"); _Information.SetActive(false); } else @@ -117,7 +141,7 @@ _FunctionForecastPanel.SetActive(true); m_Information_reward.SetActive(false); _NameText.SetActive(true); _Information.SetActive(true); _Information.SetActive(false); _FunctionIcon.SetSprite(FunctionForecastConfig.Get(ID).FuncIconKey); _NameText.text = FunctionForecastConfig.Get(ID).Describe; _Information.text= FunctionForecastConfig.Get(ID).OpenDescribe; System/MainInterfacePanel/MainInterfaceWin.cs
@@ -92,7 +92,7 @@ SliderOpen = true; m_SkillContainer.Init(); m_FunctionForecastTip.Init(); m_HeadPortraitTip.Init(); m_LowSettingTip.Init(); m_ChatTip.Init(); @@ -180,6 +180,7 @@ protected override void OnAfterOpen() { m_FunctionForecastTip.Init(); m_HighSettingTip.AfterOpen(); m_ChatTip.OnAfterOpen(); HandleAchievement(); System/MainWin/MainWinTopGrid.cs
@@ -1,136 +1,148 @@ //-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, March 28, 2019 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; using DG.Tweening; namespace Snxxz.UI { public class MainWinTopGrid : MonoBehaviour { [SerializeField] bool m_AlwayShow; // 配置逻辑参考 IsOpen 函数 [SerializeField] int m_FunctionId; [SerializeField] int m_ActivityType = 0; //活动模板 [SerializeField] int m_OpenServerActivityType = 100; [SerializeField] bool m_IsAnyOpenServerActivity = false; [SerializeField] Operation m_OperationActivityType = Operation.max; [SerializeField] RectTransform m_Content; [SerializeField] CanvasGroup m_CanvasGroup; [SerializeField] IsPlayerUIeffect m_IsPlayerUIeffect; public RectTransform rectTransform { get { return this.transform as RectTransform; } } public bool alwayShow { get { return m_AlwayShow; } } float targetY = 0f; float targetAlpha = 0f; public void Switch(bool active, float offset, float delay) { if (m_AlwayShow) { return; } targetY = active ? 0 : (120f + offset); targetAlpha = active ? 1f : 0f; if (active) { m_Content.DOLocalMoveY(targetY, 0.3f).SetDelay(delay).SetEase(Ease.OutSine).OnComplete(PlayerUIEffect); } else { m_Content.DOLocalMoveY(targetY, 0.3f).SetDelay(delay).SetEase(Ease.InSine).OnStart(StopUIEffect); } m_CanvasGroup.DOFade(targetAlpha, 0.3f).SetDelay(delay).SetEase(active ? Ease.OutSine : Ease.InSine); m_CanvasGroup.blocksRaycasts = active; } public void SwitchImmediately(bool active, float offset) { if (m_AlwayShow) { return; } targetY = active ? 0 : (120f + offset); targetAlpha = active ? 1f : 0f; m_Content.anchoredPosition = m_Content.anchoredPosition.SetY(targetY); m_CanvasGroup.alpha = targetAlpha; m_CanvasGroup.blocksRaycasts = active; if (active) { PlayerUIEffect(); } else { StopUIEffect(); } } public bool IsOpen() { if (m_FunctionId > 0) { if (m_FunctionId == 130) { return ILRuntimeUtility.Instance.ModelInvoke<bool>("NeedForWhiteModel", "IsOpen"); } else if (m_FunctionId == 193) { return ILRuntimeUtility.Instance.ModelInvoke<bool>("OnlineRechargeModel", "IsOpen") && !ILRuntimeUtility.Instance.ModelInvoke<bool>("OnlineRechargeModel", "IsBottomButtonOpen"); } return FuncOpen.Instance.IsFuncOpen(m_FunctionId); } //默认100为不判定 if (m_OpenServerActivityType != 100) { return OpenServerActivityCenter.Instance.IsActivityOpen(m_OpenServerActivityType, m_ActivityType); } if (m_IsAnyOpenServerActivity) { var functionOrder = 0; return OpenServerActivityCenter.Instance.IsAnyActivityOpen(out functionOrder, m_ActivityType); } if (m_OperationActivityType != Operation.max) { return OperationTimeHepler.Instance.SatisfyOpenCondition(m_OperationActivityType); } return false; } private void PlayerUIEffect() { if (m_IsPlayerUIeffect != null) { m_IsPlayerUIeffect.StartPlayUIEffect(); } } private void StopUIEffect() { if (m_IsPlayerUIeffect != null) { m_IsPlayerUIeffect.ObtainPlayUIEffect(); } } } } //-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, March 28, 2019 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; using DG.Tweening; namespace Snxxz.UI { public class MainWinTopGrid : MonoBehaviour { [SerializeField] bool m_AlwayShow; // 配置逻辑参考 IsOpen 函数 [SerializeField] int m_FunctionId; [SerializeField] int m_ActivityType = 0; //活动模板 [SerializeField] int m_OpenServerActivityType = 100; [SerializeField] bool m_IsAnyOpenServerActivity = false; [SerializeField] Operation m_OperationActivityType = Operation.max; [SerializeField] RectTransform m_Content; [SerializeField] CanvasGroup m_CanvasGroup; [SerializeField] IsPlayerUIeffect m_IsPlayerUIeffect; TreasureFindHostModel treasureFindHostModel { get { return ModelCenter.Instance.GetModel<TreasureFindHostModel>(); } } public RectTransform rectTransform { get { return this.transform as RectTransform; } } public bool alwayShow { get { return m_AlwayShow; } } float targetY = 0f; float targetAlpha = 0f; public void Switch(bool active, float offset, float delay) { if (m_AlwayShow) { return; } targetY = active ? 0 : (120f + offset); targetAlpha = active ? 1f : 0f; if (active) { m_Content.DOLocalMoveY(targetY, 0.3f).SetDelay(delay).SetEase(Ease.OutSine).OnComplete(PlayerUIEffect); } else { m_Content.DOLocalMoveY(targetY, 0.3f).SetDelay(delay).SetEase(Ease.InSine).OnStart(StopUIEffect); } m_CanvasGroup.DOFade(targetAlpha, 0.3f).SetDelay(delay).SetEase(active ? Ease.OutSine : Ease.InSine); m_CanvasGroup.blocksRaycasts = active; } public void SwitchImmediately(bool active, float offset) { if (m_AlwayShow) { return; } targetY = active ? 0 : (120f + offset); targetAlpha = active ? 1f : 0f; m_Content.anchoredPosition = m_Content.anchoredPosition.SetY(targetY); m_CanvasGroup.alpha = targetAlpha; m_CanvasGroup.blocksRaycasts = active; if (active) { PlayerUIEffect(); } else { StopUIEffect(); } } public bool IsOpen() { if (m_FunctionId > 0) { if (m_FunctionId == 130) { return ILRuntimeUtility.Instance.ModelInvoke<bool>("NeedForWhiteModel", "IsOpen"); } else if (m_FunctionId == 193) { return ILRuntimeUtility.Instance.ModelInvoke<bool>("OnlineRechargeModel", "IsOpen") && !ILRuntimeUtility.Instance.ModelInvoke<bool>("OnlineRechargeModel", "IsBottomButtonOpen"); } else if (m_FunctionId == 124 && FuncOpen.Instance.IsFuncOpen(m_FunctionId)) { //仙宝寻主已经全部获取 if (treasureFindHostModel.CheckTreasureFindHostFinish()) return false; return true; } return FuncOpen.Instance.IsFuncOpen(m_FunctionId); } //默认100为不判定 if (m_OpenServerActivityType != 100) { return OpenServerActivityCenter.Instance.IsActivityOpen(m_OpenServerActivityType, m_ActivityType); } if (m_IsAnyOpenServerActivity) { var functionOrder = 0; return OpenServerActivityCenter.Instance.IsAnyActivityOpen(out functionOrder, m_ActivityType); } if (m_OperationActivityType != Operation.max) { return OperationTimeHepler.Instance.SatisfyOpenCondition(m_OperationActivityType); } return false; } private void PlayerUIEffect() { if (m_IsPlayerUIeffect != null) { m_IsPlayerUIeffect.StartPlayUIEffect(); } } private void StopUIEffect() { if (m_IsPlayerUIeffect != null) { m_IsPlayerUIeffect.ObtainPlayUIEffect(); } } } } System/Realm/RealmModel.cs
@@ -20,6 +20,7 @@ public int realmEquipDisplayLevel { get; private set; } public int realmLevelUpReikiPoint { get; private set; } public bool isBossPass { get; private set; } public int xxzlAwardState { get; private set; } public int realmExpTime { get; private set; } public long startExp { get; private set; } @@ -89,6 +90,7 @@ public readonly Redpoint challengeRedpoint = new Redpoint(114, 11402); //public readonly Redpoint realmPoolRedpoint = new Redpoint(114, 11403); public readonly Redpoint realmDailyRedpoint = new Redpoint(114, 11404); public readonly Redpoint xxzlRedpoint = new Redpoint(114, 11405); int m_SelectRealm = 0; public int selectRealm @@ -129,11 +131,13 @@ public event Action selectRealmRefresh; public event Action realmExpRefresh; public event Action<bool> xxzlStateRefresh; EquipModel equipModel { get { return ModelCenter.Instance.GetModel<EquipModel>(); } } EquipStarModel equipStarModel { get { return ModelCenter.Instance.GetModel<EquipStarModel>(); } } PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } } ActivitiesPushModel pushModel { get { return ModelCenter.Instance.GetModel<ActivitiesPushModel>(); } } TreasureModel treasureModel { get { return ModelCenter.Instance.GetModel<TreasureModel>(); } } public override void Init() { @@ -142,6 +146,7 @@ GlobalTimeEvent.Instance.secondEvent += PerSecond; packModel.refreshItemCountEvent += RefreshItemCountEvent; FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent; WindowCenter.Instance.windowBeforeOpenEvent += OnBeforeWindowOpen; ParseConfig(); } @@ -154,6 +159,7 @@ buffSeconds = 0; buffAddRate = 0; realmEffectCount = 0; xxzlAwardState = 0; SysNotifyMgr.Instance.OnSystemNotifyEvent -= OnSystemNotifyEvent; } @@ -667,7 +673,15 @@ public void ReceivePackage(HA311_tagMCSyncRealmInfo package) { int beforeAwardState = xxzlAwardState; isBossPass = package.IsPass == 1; xxzlAwardState = (int)package.XXZLAwardState; bool isOver = false; if (beforeAwardState != 0 && beforeAwardState != xxzlAwardState && IsRealmXXZLOver()) { isOver = true; } xxzlStateRefresh?.Invoke(isOver); RefreshRedpoint(); } @@ -779,11 +793,19 @@ } } void RefreshRedpoint() { var levelUpable = false; var challengeable = false; var dailyRedpointable = false; levelUpRedpoint.state = RedPointState.None; challengeRedpoint.state = RedPointState.None; realmDailyRedpoint.state = RedPointState.None; if (!IsRealmXXZLOver()) return; if (FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Realm)) { @@ -837,6 +859,130 @@ // realmPoolRedpoint.state = isPoolFull ? RedPointState.Simple : RedPointState.None; //} #region 修仙之路 public int selectXXZL; //任务完成进度 public bool IsRealmXXZLMissionFinish(int missionID, out int process) { var config = RealmXXZLConfig.Get(missionID); bool isFinish = false; process = 0; switch (config.TaskType) { case 1: isFinish = treasureModel.IsTreasureCollected(config.NeedValue); process = isFinish ? 1 : 0; break; case 2: process = ModelCenter.Instance.GetModel<SkyTowerModel>().highestPassFloor; isFinish = process >= config.NeedValue; break; case 3: process = ModelCenter.Instance.GetModel<WorldBossModel>().killCntTotal; isFinish = process >= config.NeedValue; break; case 4: process = (int)ModelCenter.Instance.GetModel<DailyQuestModel>().ActivityPlaceInfo.TotalCount; isFinish = process >= config.NeedValue; break; case 5: isFinish = ModelCenter.Instance.GetModel<PersonalBossModel>().IsFBPass(config.NeedValue); process = isFinish ? 1 : 0; break; case 6: process = ModelCenter.Instance.GetModel<DungeonModel>().GetAllEnterTimes(60010); isFinish = process >= config.NeedValue; break; case 7: process = ModelCenter.Instance.GetModel<ReikiRootModel>().GetReikiRootTotalPointWithFree(); isFinish = process >= config.NeedValue; break; } return isFinish; } public bool IsRealmXXZLOver() { var count = RealmXXZLConfig.GetKeys().Count; return xxzlAwardState == (Math.Pow(2, count + 1) - 2); } public int GetXXZLProcess() { var ids = RealmXXZLConfig.GetKeys(); int process = 0; foreach (var id in ids) { if (IsGetAward(int.Parse(id))) { process++; } } return process; } public bool IsGetAward(int missionID) { return (xxzlAwardState & (int)Math.Pow(2, missionID)) != 0; } void RefreshXXZLRedpoint() { xxzlRedpoint.state = RedPointState.None; if (IsRealmXXZLOver()) { WindowCenter.Instance.windowBeforeOpenEvent -= OnBeforeWindowOpen; return; } var ids = RealmXXZLConfig.GetKeys(); foreach (var id in ids) { int process; if (!IsGetAward(int.Parse(id)) && IsRealmXXZLMissionFinish(int.Parse(id), out process)) { xxzlRedpoint.state = RedPointState.Simple; return; } } } void OnBeforeWindowOpen(Window window) { if (window.name == "MainInterfaceWin") { RefreshXXZLRedpoint(); } } public void FocusSelectIndex() { var ids = RealmXXZLConfig.GetKeys(); int index = -1; foreach (var id in ids) { int missionID = int.Parse(id); int process; var state = IsGetAward(missionID); bool isFinish = IsRealmXXZLMissionFinish(missionID, out process); if (!state && isFinish) { selectXXZL = missionID - 1; return; } else if (!state && !isFinish && index == -1) { index = missionID - 1; } } selectXXZL = index; } #endregion } public struct RealmLevelUpEquipCondition System/Realm/RealmWin.cs
@@ -3,9 +3,11 @@ // [ Date ]: Tuesday, October 10, 2017 //-------------------------------------------------------- using LitJson; using System; using System.Collections; using System.Collections.Generic; using System.Reflection; using UnityEngine; using UnityEngine.UI; @@ -33,6 +35,20 @@ [SerializeField] UIEffect m_EffectCover; [SerializeField] UIEffect m_EffectBoss; [SerializeField] UIEffect m_EffectBase; [SerializeField] Transform m_RealmContainer; [SerializeField] Transform m_XxzlContainer; [SerializeField] List<ButtonEx> juanImgs; [SerializeField] List<UIEffect> juanEffects; [SerializeField] List<ItemCell> items; [SerializeField] Text xxzlMission; [SerializeField] IntensifySmoothSlider ExpSlider; [SerializeField] Text processTxt; [SerializeField] Button activeBtn; [SerializeField] Image activedImg; [SerializeField] Button leftBtn; [SerializeField] Button rightBtn; [SerializeField] UIEffect xxzlOverEffect; int cacheRealmLevel = 0; ulong cacheFightPower = 0; @@ -93,6 +109,28 @@ m_Close.onClick.AddListener(OnBack); m_GotoBoss.AddListener(GotoBoss); m_RealmRestraint.AddListener(RealmRestraint); for (int i = 0; i < juanImgs.Count; i++) { int index = i; juanImgs[i].AddListener(() => { model.selectXXZL = index; DisplayXXZL(); juanEffects[index].Play(); }); } leftBtn.AddListener(() => { if (model.selectXXZL == 0) return; model.selectXXZL--; juanImgs[model.selectXXZL].onClick.Invoke(); }); rightBtn.AddListener(() => { if (model.selectXXZL == juanImgs.Count - 1) return; model.selectXXZL++; juanImgs[model.selectXXZL].onClick.Invoke(); }); } protected override void OnPreOpen() @@ -105,18 +143,24 @@ m_RealmAnimation.onCoverChange += OnCoverChange; mainDateModel.customDisplayPower += CustomDisplayPower; WindowCenter.Instance.windowAfterCloseEvent += WindowAfterCloseEvent; model.xxzlStateRefresh += Model_xxzlStateRefresh; cacheRealmLevel = PlayerDatas.Instance.baseData.realmLevel; cacheFightPower = PlayerDatas.Instance.baseData.FightPoint; customUpPower = 0; model.SetDayRemind(); model.FocusSelectIndex(); } protected override void OnActived() { base.OnActived(); var isOver = model.IsRealmXXZLOver(); m_RealmContainer.SetActive(isOver); m_XxzlContainer.SetActive(!isOver); m_RealmState = RealmState.LevelUp; HideRealmBoss(); @@ -133,6 +177,7 @@ protected override void OnAfterOpen() { DisplayXXZL(); } protected override void OnPreClose() @@ -145,6 +190,7 @@ mainDateModel.customDisplayPower -= CustomDisplayPower; m_RealmAnimation.onCoverChange -= OnCoverChange; WindowCenter.Instance.windowAfterCloseEvent -= WindowAfterCloseEvent; model.xxzlStateRefresh -= Model_xxzlStateRefresh; HideRealmUp(); } @@ -370,6 +416,8 @@ void StartTween() { if (!model.IsRealmXXZLOver()) return; m_RealmBriefTween.Play(); var realmLevel = PlayerDatas.Instance.baseData.realmLevel; @@ -611,6 +659,89 @@ LevelUp, Boss, } public void DisplayXXZL() { var isOver = model.IsRealmXXZLOver(); m_RealmContainer.SetActive(isOver); m_XxzlContainer.SetActive(!isOver); if (isOver) return; int process; for (int i = 0; i < juanImgs.Count; i++) { juanImgs[i].SetColorful(null, model.IsGetAward(i+1)); var alphaObj = juanImgs[i].GetComponent<UIAlphaTween>(); if (i == model.selectXXZL) { alphaObj.Play(); } else { alphaObj.Stop(); } } int missionID = model.selectXXZL + 1; var config = RealmXXZLConfig.Get(missionID); xxzlMission.text = config.Desc; process = 0; bool isMissionFinish = model.IsRealmXXZLMissionFinish(missionID, out process); var needValue = config.NeedValue; if (config.TaskType == 1 || config.TaskType == 5) needValue = 1; ExpSlider.value = Math.Max(1, process/needValue); processTxt.text = process + "/" + needValue; var awards = JsonMapper.ToObject<int[][]>(config.AwardItemList); for (int i = 0; i < items.Count; i++) { if (i < awards.Length) { items[i].SetActive(true); int itemID = awards[i][0]; items[i].Init(new ItemCellModel(itemID, false, (ulong)awards[i][1])); items[i].button.AddListener(() => { ItemTipUtility.Show(itemID); }); } else { items[i].SetActive(false); } } bool awardState = model.IsGetAward(missionID); activeBtn.SetActive(!awardState); activeBtn.interactable = isMissionFinish; activeBtn.SetColorful(null, isMissionFinish); activeBtn.AddListener(() => { CA504_tagCMPlayerGetReward pak = new CA504_tagCMPlayerGetReward(); pak.RewardType = 62; pak.DataEx = (uint)missionID; GameNetSystem.Instance.SendInfo(pak); juanImgs[missionID - 1].SetColorful(null, true); juanImgs[missionID - 1].GetComponent<ScaleTween>().Play(); juanEffects[missionID - 1].Play(); }); activedImg.SetActive(awardState); juanEffects[model.selectXXZL].Play(); } private void Model_xxzlStateRefresh(bool obj) { DisplayXXZL(); if (obj) { xxzlOverEffect.Play(); OnActived(); } } } } System/Treasure/TreasureModel.cs
@@ -889,6 +889,16 @@ return 0; } public bool IsTreasureCollected(int _treasureId) { Treasure treasure; if (TryGetTreasure(_treasureId, out treasure)) { return treasure.state == TreasureState.Collected; } return false; } public int GetTreasureFightPower(int _treasureId, bool _real = true) { Treasure treasure; UI/Decorate/Tweens/UIAlphaTween.cs
@@ -91,6 +91,15 @@ } } public void Stop() { doTween = false; accumulatedTime = 0f; StopAllCoroutines(); SetStartState(); } void Start() { if (trigger == Trigger.Start) Utility/ConfigInitiator.cs
@@ -326,6 +326,8 @@ 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; })); normalTasks.Add(new ConfigInitTask("RealmXXZL", () => { RealmXXZLConfig.Init(); }, () => { return RealmXXZLConfig.inited; })); } static List<ConfigInitTask> doingTasks = new List<ConfigInitTask>();