|
@@ -6,6 +6,7 @@ using Fort23.Core;
|
|
using Fort23.UTool;
|
|
using Fort23.UTool;
|
|
using GameLogic.Combat;
|
|
using GameLogic.Combat;
|
|
using GameLogic.Combat.CombatTool;
|
|
using GameLogic.Combat.CombatTool;
|
|
|
|
+using Unity.Plastic.Newtonsoft.Json.Serialization;
|
|
using UnityEngine;
|
|
using UnityEngine;
|
|
using Utility;
|
|
using Utility;
|
|
using Random = UnityEngine.Random;
|
|
using Random = UnityEngine.Random;
|
|
@@ -22,9 +23,14 @@ public class EventSystemManager : Singleton<EventSystemManager>
|
|
|
|
|
|
public bool isTriggerEvent;
|
|
public bool isTriggerEvent;
|
|
|
|
|
|
|
|
+ List<DivineSenseConfig> divineSenseConfigs = new List<DivineSenseConfig>();
|
|
|
|
+
|
|
|
|
+ List<int> qualitys = new List<int>() { 1, 2, 3, 4, 5, 6 };
|
|
|
|
+
|
|
public void CustomInit(IDialogueMono dialogueMono)
|
|
public void CustomInit(IDialogueMono dialogueMono)
|
|
{
|
|
{
|
|
eventConfigs = ConfigComponent.Instance.GetAll<EventConfig>().ToList();
|
|
eventConfigs = ConfigComponent.Instance.GetAll<EventConfig>().ToList();
|
|
|
|
+ divineSenseConfigs = ConfigComponent.Instance.GetAll<DivineSenseConfig>().ToList();
|
|
this.dialogueMono = dialogueMono;
|
|
this.dialogueMono = dialogueMono;
|
|
StaticUpdater.Instance.AddRenderUpdateCallBack(Update);
|
|
StaticUpdater.Instance.AddRenderUpdateCallBack(Update);
|
|
}
|
|
}
|
|
@@ -56,8 +62,9 @@ public class EventSystemManager : Singleton<EventSystemManager>
|
|
AccountFileInfo.Instance.playerData.divineSenseexp += AccountFileInfo.Instance.playerData.divineSensePoint;
|
|
AccountFileInfo.Instance.playerData.divineSenseexp += AccountFileInfo.Instance.playerData.divineSensePoint;
|
|
AccountFileInfo.Instance.playerData.divineSensePoint = 0;
|
|
AccountFileInfo.Instance.playerData.divineSensePoint = 0;
|
|
EventManager.Instance.Dispatch(CustomEventType.DivineSensePointChange, null);
|
|
EventManager.Instance.Dispatch(CustomEventType.DivineSensePointChange, null);
|
|
- //todo 神识升级逻辑
|
|
|
|
- AccountFileInfo.Instance.SavePlayerData();
|
|
|
|
|
|
+ // 神识升级逻辑
|
|
|
|
+ UpDivinesense();
|
|
|
|
+ // AccountFileInfo.Instance.SavePlayerData();
|
|
|
|
|
|
var eventConfigs = DetectEvents(bigMapId, count);
|
|
var eventConfigs = DetectEvents(bigMapId, count);
|
|
if (eventConfigs == null || eventConfigs.Count == 0)
|
|
if (eventConfigs == null || eventConfigs.Count == 0)
|
|
@@ -74,37 +81,50 @@ public class EventSystemManager : Singleton<EventSystemManager>
|
|
return eventLists;
|
|
return eventLists;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private void UpDivinesense()
|
|
|
|
+ {
|
|
|
|
+ for (var i = AccountFileInfo.Instance.playerData.divineSenseLevel - 1; i < divineSenseConfigs.Count; i++)
|
|
|
|
+ {
|
|
|
|
+ if (AccountFileInfo.Instance.playerData.divineSenseexp >= divineSenseConfigs[i].exp)
|
|
|
|
+ {
|
|
|
|
+ AccountFileInfo.Instance.playerData.divineSenseexp -= divineSenseConfigs[i].exp;
|
|
|
|
+ AccountFileInfo.Instance.playerData.divineSenseLevel = divineSenseConfigs[i].ID;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ AccountFileInfo.Instance.SavePlayerData();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
|
|
private List<EventConfig> DetectEvents(int bigMapId, int eventCount)
|
|
private List<EventConfig> DetectEvents(int bigMapId, int eventCount)
|
|
{
|
|
{
|
|
- if (isTriggerEvent)
|
|
|
|
- return default;
|
|
|
|
BigMap bigMap = ConfigComponent.Instance.Get<BigMap>(bigMapId);
|
|
BigMap bigMap = ConfigComponent.Instance.Get<BigMap>(bigMapId);
|
|
DivineSenseConfig divineSenseConfig = ConfigComponent.Instance.Get<DivineSenseConfig>(AccountFileInfo.Instance.playerData.divineSenseLevel);
|
|
DivineSenseConfig divineSenseConfig = ConfigComponent.Instance.Get<DivineSenseConfig>(AccountFileInfo.Instance.playerData.divineSenseLevel);
|
|
|
|
|
|
- List<int> qualitys = new List<int>() { 1, 2, 3, 4, 5, 6 };
|
|
|
|
|
|
|
|
- //先掉落出品质
|
|
|
|
- int quality = UtilTools.GetRandomByWeight(qualitys, divineSenseConfig.QualityBonusChance);
|
|
|
|
|
|
+ LogTool.Log($"使用神识,神识等级:{AccountFileInfo.Instance.playerData.divineSenseLevel}");
|
|
|
|
|
|
|
|
|
|
- // 获取通用事件
|
|
|
|
- List<EventConfig> globalEvents = eventConfigs.Where(e => e.EventTriggerType == 1 && CanTriggerEvent(e.ID) && e.EventQuality == quality).ToList();
|
|
|
|
|
|
+ var triggeredEvents = new List<EventConfig>();
|
|
|
|
+ for (int i = 0; i < eventCount; i++)
|
|
|
|
+ {
|
|
|
|
+ //先掉落出品质
|
|
|
|
+ int quality = UtilTools.GetRandomByWeight(qualitys, divineSenseConfig.QualityBonusChance);
|
|
|
|
|
|
|
|
|
|
- //神识场景事件
|
|
|
|
- List<EventConfig> candidateEvents = eventConfigs.Where(e => bigMap.DivineSenseGeneralEvent.Contains(e.ID) && CanTriggerEvent(e.ID) && e.EventQuality == quality).ToList();
|
|
|
|
|
|
+ // 获取通用事件
|
|
|
|
+ List<EventConfig> globalEvents = eventConfigs.Where(e => e.EventTriggerType == 1 && CanTriggerEvent(e.ID) && e.EventQuality == quality).ToList();
|
|
|
|
|
|
- if (candidateEvents.Count == 0 && globalEvents.Count == 0)
|
|
|
|
- {
|
|
|
|
- LogTool.Error("没有可以刷新的事件");
|
|
|
|
- return default;
|
|
|
|
- }
|
|
|
|
|
|
+
|
|
|
|
+ //神识场景事件
|
|
|
|
+ List<EventConfig> candidateEvents = eventConfigs.Where(e => bigMap.DivineSenseGeneralEvent.Contains(e.ID) && CanTriggerEvent(e.ID) && e.EventQuality == quality).ToList();
|
|
|
|
+
|
|
|
|
+ if (candidateEvents.Count == 0 && globalEvents.Count == 0)
|
|
|
|
+ {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
- var triggeredEvents = new List<EventConfig>();
|
|
|
|
- for (int i = 0; i < eventCount; i++)
|
|
|
|
- {
|
|
|
|
int randomValue1 = Random.Range(0, 101);
|
|
int randomValue1 = Random.Range(0, 101);
|
|
//刷场景事件
|
|
//刷场景事件
|
|
if (randomValue1 >= bigMap.DivineSenseGeneralProbability && candidateEvents.Count > 0)
|
|
if (randomValue1 >= bigMap.DivineSenseGeneralProbability && candidateEvents.Count > 0)
|