From 9a808cbdb6dcb0ce36888290b13b2f2cdc210faa Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期四, 23 五月 2019 16:11:24 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts
---
System/MainInterfacePanel/TaskFeedbackModel.cs | 104 ++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 92 insertions(+), 12 deletions(-)
diff --git a/System/MainInterfacePanel/TaskFeedbackModel.cs b/System/MainInterfacePanel/TaskFeedbackModel.cs
index 33ba378..3c09b4b 100644
--- a/System/MainInterfacePanel/TaskFeedbackModel.cs
+++ b/System/MainInterfacePanel/TaskFeedbackModel.cs
@@ -14,6 +14,8 @@
TaskModel taskModel { get { return ModelCenter.Instance.GetModel<TaskModel>(); } }
TreasureModel treasureModel { get { return ModelCenter.Instance.GetModel<TreasureModel>(); } }
AlchemyModel alchemyModel { get { return ModelCenter.Instance.GetModel<AlchemyModel>(); } }
+ EquipModel equipModel { get { return ModelCenter.Instance.GetModel<EquipModel>(); } }
+ EquipStrengthModel equipStrengthModel { get { return ModelCenter.Instance.GetModel<EquipStrengthModel>(); } }
public override void Init()
{
@@ -164,9 +166,13 @@
if (feedback.failFuns != null)
{
var index = Mathf.Min(condition, feedback.failFuns.Count - 1);
- taskFeedbackFuncs.Clear();
- taskFeedbackFuncs.AddRange(feedback.failFuns[index]);
- WindowCenter.Instance.Open<TaskFeedbackFuncWin>();
+ List<int> succFuncs;
+ if (TryGetSatisfyConditionFuncs(feedback.failFuns[index], out succFuncs))
+ {
+ taskFeedbackFuncs.Clear();
+ taskFeedbackFuncs.AddRange(succFuncs);
+ WindowCenter.Instance.Open<TaskFeedbackFuncWin>();
+ }
}
}
}
@@ -197,9 +203,13 @@
if (feedback.failFuns != null)
{
var index = Mathf.Min(condition, feedback.failFuns.Count - 1);
- taskFeedbackFuncs.Clear();
- taskFeedbackFuncs.AddRange(feedback.failFuns[index]);
- WindowCenter.Instance.Open<TaskFeedbackFuncWin>();
+ List<int> succFuncs;
+ if (TryGetSatisfyConditionFuncs(feedback.failFuns[index], out succFuncs))
+ {
+ taskFeedbackFuncs.Clear();
+ taskFeedbackFuncs.AddRange(succFuncs);
+ WindowCenter.Instance.Open<TaskFeedbackFuncWin>();
+ }
}
}
}
@@ -223,9 +233,13 @@
{
var taskIndex = feedback.IndexOfSideTasks(condition);
var index = Mathf.Min(taskIndex, feedback.failFuns.Count - 1);
- taskFeedbackFuncs.Clear();
- taskFeedbackFuncs.AddRange(feedback.failFuns[index]);
- WindowCenter.Instance.Open<TaskFeedbackFuncWin>();
+ List<int> succFuncs;
+ if (TryGetSatisfyConditionFuncs(feedback.failFuns[index], out succFuncs))
+ {
+ taskFeedbackFuncs.Clear();
+ taskFeedbackFuncs.AddRange(succFuncs);
+ WindowCenter.Instance.Open<TaskFeedbackFuncWin>();
+ }
}
}
}
@@ -250,9 +264,13 @@
IsSatisfySideTask(feedback.sideTasks, out sideTaskId);
var taskIndex = feedback.IndexOfSideTasks(sideTaskId);
var index = Mathf.Min(taskIndex, feedback.failFuns.Count - 1);
- taskFeedbackFuncs.Clear();
- taskFeedbackFuncs.AddRange(feedback.failFuns[index]);
- WindowCenter.Instance.Open<TaskFeedbackFuncWin>();
+ List<int> succFuncs;
+ if (TryGetSatisfyConditionFuncs(feedback.failFuns[index], out succFuncs))
+ {
+ taskFeedbackFuncs.Clear();
+ taskFeedbackFuncs.AddRange(succFuncs);
+ WindowCenter.Instance.Open<TaskFeedbackFuncWin>();
+ }
}
}
}
@@ -408,6 +426,68 @@
}
return true;
}
+
+ public bool TryGetSatisfyConditionFuncs(int[] funcs, out List<int> succFuncs)
+ {
+ succFuncs = null;
+ if (funcs != null && funcs.Length > 0)
+ {
+ succFuncs = new List<int>();
+ for (int i = 0; i < funcs.Length; i++)
+ {
+ if (IsSatisfyFuncConfition(funcs[i]))
+ {
+ succFuncs.Add(funcs[i]);
+ }
+ }
+ return succFuncs.Count > 0;
+ }
+ return false;
+ }
+
+ public bool IsSatisfyFuncConfition(int func)
+ {
+ var config = TaskFeedbackFuncConfig.Get(func);
+ if (config != null)
+ {
+ switch (config.type)
+ {
+ case 1:
+ foreach (var item in config.itemCondition)
+ {
+ var count = packModel.GetItemCountByID(PackType.Item, item.x);
+ if (count < item.y)
+ {
+ return false;
+ }
+ }
+ return true;
+ case 2:
+ return reikiRootModel.freePoint > 0;
+ case 3:
+ foreach (var equipSet in equipModel.GetUnLockedEquipSets())
+ {
+ if (equipModel.ExistBetterEquip(equipSet, EquipModel.realmEquipTypes))
+ {
+ return true;
+ }
+ }
+ return false;
+ case 4:
+ MissionDetailDates taskData;
+ if (taskModel.TryGetTaskData(config.condition, out taskData))
+ {
+ return taskData.MissionState != 3;
+ }
+ return false;
+ case 5:
+ return equipStrengthModel.ExistAnySatisfyStrengh();
+ default:
+ return true;
+ }
+ }
+ return false;
+ }
}
public struct TaskFeedback
--
Gitblit v1.8.0