From cfdd99036f324b4fb0eacfd79b3d3f6606061fb0 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期一, 13 十一月 2023 14:48:55 +0800
Subject: [PATCH] 9930 子 【BT0.1】【主干】境界修改 / 【BT0.1】【主干】境界修改
---
System/Realm/RealmModel.cs | 146 ++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 146 insertions(+), 0 deletions(-)
diff --git a/System/Realm/RealmModel.cs b/System/Realm/RealmModel.cs
index ee521a7..ed5a629 100644
--- a/System/Realm/RealmModel.cs
+++ b/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
--
Gitblit v1.8.0