Core/GameEngine/Model/Config/ActorShowConfig.cs
@@ -1,298 +1,311 @@ //-------------------------------------------------------- // [Author]: Fish // [ Date ]: Thursday, February 14, 2019 //-------------------------------------------------------- using System.Collections.Generic; using System.IO; using System.Threading; using System; using UnityEngine; [XLua.LuaCallCSharp] public partial class ActorShowConfig { public readonly int ID; public readonly int NpcID; public readonly int MapID; public readonly int line; public readonly int[] showNpcs; public readonly int length; public readonly int showNameTime; public readonly int BindMissionID; public readonly int type; public readonly int[] scale; public readonly int[] NpcFace; public readonly int[] PosX; public readonly int[] PosY; public readonly int shadow; public readonly int effect; public readonly int uieffect; public readonly string[] mob; public readonly string cam; public readonly int[] Height; public readonly int DialogueTime; public readonly int Dialogue; public readonly int soundId; public readonly int soundTime; public readonly int step; public ActorShowConfig() { } public ActorShowConfig(string input) { try { var tables = input.Split('\t'); int.TryParse(tables[0],out ID); int.TryParse(tables[1],out NpcID); int.TryParse(tables[2],out MapID); int.TryParse(tables[3],out line); string[] showNpcsStringArray = tables[4].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); showNpcs = new int[showNpcsStringArray.Length]; for (int i=0;i<showNpcsStringArray.Length;i++) { int.TryParse(showNpcsStringArray[i],out showNpcs[i]); } int.TryParse(tables[5],out length); int.TryParse(tables[6],out showNameTime); int.TryParse(tables[7],out BindMissionID); int.TryParse(tables[8],out type); string[] scaleStringArray = tables[9].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); scale = new int[scaleStringArray.Length]; for (int i=0;i<scaleStringArray.Length;i++) { int.TryParse(scaleStringArray[i],out scale[i]); } string[] NpcFaceStringArray = tables[10].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); NpcFace = new int[NpcFaceStringArray.Length]; for (int i=0;i<NpcFaceStringArray.Length;i++) { int.TryParse(NpcFaceStringArray[i],out NpcFace[i]); } string[] PosXStringArray = tables[11].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); PosX = new int[PosXStringArray.Length]; for (int i=0;i<PosXStringArray.Length;i++) { int.TryParse(PosXStringArray[i],out PosX[i]); } string[] PosYStringArray = tables[12].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); PosY = new int[PosYStringArray.Length]; for (int i=0;i<PosYStringArray.Length;i++) { int.TryParse(PosYStringArray[i],out PosY[i]); } int.TryParse(tables[13],out shadow); int.TryParse(tables[14],out effect); int.TryParse(tables[15],out uieffect); mob = tables[16].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); cam = tables[17]; string[] HeightStringArray = tables[18].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); Height = new int[HeightStringArray.Length]; for (int i=0;i<HeightStringArray.Length;i++) { int.TryParse(HeightStringArray[i],out Height[i]); } int.TryParse(tables[19],out DialogueTime); int.TryParse(tables[20],out Dialogue); int.TryParse(tables[21],out soundId); int.TryParse(tables[22],out soundTime); int.TryParse(tables[23],out step); } catch (Exception ex) { DebugEx.Log(ex); } } static Dictionary<string, ActorShowConfig> configs = new Dictionary<string, ActorShowConfig>(); public static ActorShowConfig Get(string id) { if (!inited) { Debug.Log("ActorShowConfig 还未完成初始化。"); return null; } if (configs.ContainsKey(id)) { return configs[id]; } ActorShowConfig config = null; if (rawDatas.ContainsKey(id)) { config = configs[id] = new ActorShowConfig(rawDatas[id]); rawDatas.Remove(id); } return config; } public static ActorShowConfig 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<ActorShowConfig> GetValues() { var values = new List<ActorShowConfig>(); values.AddRange(configs.Values); var keys = new List<string>(rawDatas.Keys); foreach (var key in keys) { values.Add(Get(key)); } 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 +"/ActorShow.txt"; } else { path = AssetVersionUtility.GetAssetFilePath("config/ActorShow.txt"); } var tempConfig = new ActorShowConfig(); 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 ActorShowConfig(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 ActorShowConfig(line); configs[id] = config; (config as IConfigPostProcess).OnConfigParseCompleted(); } else { rawDatas[id] = line; } } catch (System.Exception ex) { Debug.LogError(ex); } } inited = true; }); } } } //-------------------------------------------------------- // [Author]: Fish // [ Date ]: Saturday, April 27, 2019 //-------------------------------------------------------- using System.Collections.Generic; using System.IO; using System.Threading; using System; using UnityEngine; [XLua.LuaCallCSharp] public partial class ActorShowConfig { public readonly int ID; public readonly int NpcID; public readonly int MapID; public readonly int line; public readonly int[] showNpcs; public readonly int length; public readonly int showNameTime; public readonly int BindMissionID; public readonly int type; public readonly int[] scale; public readonly int[] NpcFace; public readonly int[] PosX; public readonly int[] PosY; public readonly int shadow; public readonly int[] effect; public readonly int uieffect; public readonly string[] mob; public readonly int[] clipActions; public readonly string cam; public readonly int[] Height; public readonly int DialogueTime; public readonly int Dialogue; public readonly int soundId; public readonly int soundTime; public readonly int step; public ActorShowConfig() { } public ActorShowConfig(string input) { try { var tables = input.Split('\t'); int.TryParse(tables[0], out ID); int.TryParse(tables[1], out NpcID); int.TryParse(tables[2], out MapID); int.TryParse(tables[3], out line); string[] showNpcsStringArray = tables[4].Trim().Split(StringUtility.splitSeparator, StringSplitOptions.RemoveEmptyEntries); showNpcs = new int[showNpcsStringArray.Length]; for (int i = 0; i < showNpcsStringArray.Length; i++) { int.TryParse(showNpcsStringArray[i], out showNpcs[i]); } int.TryParse(tables[5], out length); int.TryParse(tables[6], out showNameTime); int.TryParse(tables[7], out BindMissionID); int.TryParse(tables[8], out type); string[] scaleStringArray = tables[9].Trim().Split(StringUtility.splitSeparator, StringSplitOptions.RemoveEmptyEntries); scale = new int[scaleStringArray.Length]; for (int i = 0; i < scaleStringArray.Length; i++) { int.TryParse(scaleStringArray[i], out scale[i]); } string[] NpcFaceStringArray = tables[10].Trim().Split(StringUtility.splitSeparator, StringSplitOptions.RemoveEmptyEntries); NpcFace = new int[NpcFaceStringArray.Length]; for (int i = 0; i < NpcFaceStringArray.Length; i++) { int.TryParse(NpcFaceStringArray[i], out NpcFace[i]); } string[] PosXStringArray = tables[11].Trim().Split(StringUtility.splitSeparator, StringSplitOptions.RemoveEmptyEntries); PosX = new int[PosXStringArray.Length]; for (int i = 0; i < PosXStringArray.Length; i++) { int.TryParse(PosXStringArray[i], out PosX[i]); } string[] PosYStringArray = tables[12].Trim().Split(StringUtility.splitSeparator, StringSplitOptions.RemoveEmptyEntries); PosY = new int[PosYStringArray.Length]; for (int i = 0; i < PosYStringArray.Length; i++) { int.TryParse(PosYStringArray[i], out PosY[i]); } int.TryParse(tables[13], out shadow); string[] effectStringArray = tables[14].Trim().Split(StringUtility.splitSeparator, StringSplitOptions.RemoveEmptyEntries); effect = new int[effectStringArray.Length]; for (int i = 0; i < effectStringArray.Length; i++) { int.TryParse(effectStringArray[i], out effect[i]); } int.TryParse(tables[15], out uieffect); mob = tables[16].Trim().Split(StringUtility.splitSeparator, StringSplitOptions.RemoveEmptyEntries); string[] clipActionsStringArray = tables[17].Trim().Split(StringUtility.splitSeparator, StringSplitOptions.RemoveEmptyEntries); clipActions = new int[clipActionsStringArray.Length]; for (int i = 0; i < clipActionsStringArray.Length; i++) { int.TryParse(clipActionsStringArray[i], out clipActions[i]); } cam = tables[18]; string[] HeightStringArray = tables[19].Trim().Split(StringUtility.splitSeparator, StringSplitOptions.RemoveEmptyEntries); Height = new int[HeightStringArray.Length]; for (int i = 0; i < HeightStringArray.Length; i++) { int.TryParse(HeightStringArray[i], out Height[i]); } int.TryParse(tables[20], out DialogueTime); int.TryParse(tables[21], out Dialogue); int.TryParse(tables[22], out soundId); int.TryParse(tables[23], out soundTime); int.TryParse(tables[24], out step); } catch (Exception ex) { DebugEx.Log(ex); } } static Dictionary<string, ActorShowConfig> configs = new Dictionary<string, ActorShowConfig>(); public static ActorShowConfig Get(string id) { if (!inited) { Debug.Log("ActorShowConfig 还未完成初始化。"); return null; } if (configs.ContainsKey(id)) { return configs[id]; } ActorShowConfig config = null; if (rawDatas.ContainsKey(id)) { config = configs[id] = new ActorShowConfig(rawDatas[id]); rawDatas.Remove(id); } return config; } public static ActorShowConfig 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<ActorShowConfig> GetValues() { var values = new List<ActorShowConfig>(); values.AddRange(configs.Values); var keys = new List<string>(rawDatas.Keys); foreach (var key in keys) { values.Add(Get(key)); } 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 + "/ActorShow.txt"; } else { path = AssetVersionUtility.GetAssetFilePath("config/ActorShow.txt"); } var tempConfig = new ActorShowConfig(); 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 ActorShowConfig(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 ActorShowConfig(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/ActorShowConfig.cs.meta
@@ -1,6 +1,6 @@ fileFormatVersion: 2 guid: ef8ad14c092549545a7623899eb26c2a timeCreated: 1550121904 timeCreated: 1556351379 licenseType: Pro MonoImporter: serializedVersion: 2 Fight/Actor/AI/Process/PN_AttackCount.cs
@@ -16,13 +16,22 @@ m_Target.OnAttackObj += OnAttackObj; #if UNITY_EDITOR Debug.LogFormat("开始检测NPC攻击次数, 需要攻击: {0} 次"); if (RuntimeLogUtility.s_LogProcessInfo) { Debug.LogFormat("开始检测NPC攻击次数, 需要攻击: {0} 次"); } #endif } private void OnAttackObj(uint sid, int skillId) { m_AttackCount += 1; #if UNITY_EDITOR if (RuntimeLogUtility.s_LogProcessInfo) { Debug.LogFormat("NPC攻击次数: {0} 次", m_AttackCount); } #endif } public override bool IsOver() Fight/Actor/AI/Process/PN_AutoAI.cs
@@ -3,7 +3,10 @@ public override void Init() { #if UNITY_EDITOR UnityEngine.Debug.LogFormat("恢复自动AI状态"); if (RuntimeLogUtility.s_LogProcessInfo) { UnityEngine.Debug.LogFormat("恢复自动AI状态"); } #endif } Fight/Actor/AI/Process/PN_BeAttackCount.cs
@@ -15,7 +15,10 @@ { m_Target.OnAttacked += OnBeAttacked; #if UNITY_EDITOR UnityEngine.Debug.LogFormat("开始计算被攻击次数"); if (RuntimeLogUtility.s_LogProcessInfo) { UnityEngine.Debug.LogFormat("开始计算被攻击次数"); } #endif } @@ -23,7 +26,10 @@ { m_BeAttackCount += 1; #if UNITY_EDITOR UnityEngine.Debug.LogFormat("被攻击次数: {0}", m_BeAttackCount); if (RuntimeLogUtility.s_LogProcessInfo) { UnityEngine.Debug.LogFormat("被攻击次数: {0}", m_BeAttackCount); } #endif } @@ -36,7 +42,10 @@ { m_Target.OnAttacked -= OnBeAttacked; #if UNITY_EDITOR UnityEngine.Debug.LogFormat("被攻击检测节点结束"); if (RuntimeLogUtility.s_LogProcessInfo) { UnityEngine.Debug.LogFormat("被攻击检测节点结束"); } #endif } Fight/Actor/AI/Process/PN_CastSkill.cs
@@ -10,7 +10,10 @@ { m_Target.lockSkillID = param; #if UNITY_EDITOR UnityEngine.Debug.LogFormat("进入释放技能: {0} 节点", param); if (RuntimeLogUtility.s_LogProcessInfo) { UnityEngine.Debug.LogFormat("进入释放技能: {0} 节点", param); } #endif } @@ -30,7 +33,10 @@ { m_Target.lockSkillID = -1; #if UNITY_EDITOR UnityEngine.Debug.LogFormat("{0} 技能释放结束", param); if (RuntimeLogUtility.s_LogProcessInfo) { UnityEngine.Debug.LogFormat("{0} 技能释放结束", param); } #endif } Fight/Actor/AI/Process/PN_CommonAttack.cs
@@ -9,7 +9,10 @@ { m_Target.lockCommonAtk = true; #if UNITY_EDITOR UnityEngine.Debug.LogFormat("开始锁定普攻"); if (RuntimeLogUtility.s_LogProcessInfo) { UnityEngine.Debug.LogFormat("开始锁定普攻"); } #endif } Fight/Actor/AI/Process/PN_Die.cs
@@ -16,7 +16,10 @@ ClientSceneManager.Instance.NpcDead(m_Target.belongEventID, m_Target, m_Target.NpcConfig.NPCID); } #if UNITY_EDITOR UnityEngine.Debug.LogFormat("强制对象死亡"); if (RuntimeLogUtility.s_LogProcessInfo) { UnityEngine.Debug.LogFormat("强制对象死亡"); } #endif } Fight/Actor/AI/Process/PN_HpPer.cs
@@ -12,7 +12,10 @@ public override void Init() { #if UNITY_EDITOR UnityEngine.Debug.LogFormat("开始等待血量下降到: {0}", m_Target.ActorInfo.RealMaxHp * m_Per); if (RuntimeLogUtility.s_LogProcessInfo) { UnityEngine.Debug.LogFormat("开始等待血量下降到: {0}", m_Target.ActorInfo.RealMaxHp * m_Per); } #endif } @@ -24,7 +27,10 @@ public override void UnInit() { #if UNITY_EDITOR UnityEngine.Debug.LogFormat("血量下降到: {0} 了", m_Target.ActorInfo.RealHp); if (RuntimeLogUtility.s_LogProcessInfo) { UnityEngine.Debug.LogFormat("血量下降到: {0} 了", m_Target.ActorInfo.RealHp); } #endif } Fight/Actor/AI/Process/PN_LockHp.cs
@@ -11,14 +11,20 @@ { m_Target.LockHp(0); #if UNITY_EDITOR UnityEngine.Debug.LogFormat("解除锁定血量"); if (RuntimeLogUtility.s_LogProcessInfo) { UnityEngine.Debug.LogFormat("解除锁定血量"); } #endif } else { m_Target.LockHp(param * Constants.F_BETA); #if UNITY_EDITOR UnityEngine.Debug.LogFormat("开始锁定血量: {0}", param * Constants.F_BETA); if (RuntimeLogUtility.s_LogProcessInfo) { UnityEngine.Debug.LogFormat("开始锁定血量: {0}", param * Constants.F_BETA); } #endif } } Fight/Actor/AI/Process/PN_OpenDialog.cs
@@ -27,7 +27,10 @@ _hero.Behaviour.StopHandupAI(); } #if UNITY_EDITOR Debug.LogFormat("开始对话: {0}", param); if (RuntimeLogUtility.s_LogProcessInfo) { Debug.LogFormat("开始对话: {0}", param); } #endif m_Target.isTalking = true; } @@ -36,7 +39,10 @@ { m_IsOver = true; #if UNITY_EDITOR Debug.LogFormat("对话: {0} 结束", param); if (RuntimeLogUtility.s_LogProcessInfo) { Debug.LogFormat("对话: {0} 结束", param); } #endif } Fight/Actor/AI/Process/PN_PlayEffect.cs
@@ -9,7 +9,10 @@ public sealed override void Init() { #if UNITY_EDITOR UnityEngine.Debug.LogFormat("进入播放特效: {0} 节点", param); if (RuntimeLogUtility.s_LogProcessInfo) { UnityEngine.Debug.LogFormat("进入播放特效: {0} 节点", param); } #endif m_Target.ProcessEffectDict[param] = SFXPlayUtility.Instance.PlayBattleEffect(param, m_Target); } @@ -22,7 +25,10 @@ public sealed override void UnInit() { #if UNITY_EDITOR UnityEngine.Debug.LogFormat("{0} 特效播放结束", param); if (RuntimeLogUtility.s_LogProcessInfo) { UnityEngine.Debug.LogFormat("{0} 特效播放结束", param); } #endif } Fight/Actor/AI/Process/PN_ShowMotion.cs
@@ -25,7 +25,10 @@ } #if UNITY_EDITOR UnityEngine.Debug.LogFormat("开始播放动画: {0}", param); if (RuntimeLogUtility.s_LogProcessInfo) { UnityEngine.Debug.LogFormat("开始播放动画: {0}", param); } #endif var _actorShow = ActorShowConfig.Get(param); @@ -47,7 +50,10 @@ public override void UnInit() { #if UNITY_EDITOR UnityEngine.Debug.LogFormat("动画: {0} 播放结束", param); if (RuntimeLogUtility.s_LogProcessInfo) { UnityEngine.Debug.LogFormat("动画: {0} 播放结束", param); } #endif m_Target.isTalking = false; } Fight/Actor/AI/Process/PN_StartPlayerAI.cs
@@ -3,7 +3,10 @@ public sealed override void Init() { #if UNITY_EDITOR UnityEngine.Debug.LogFormat("恢复自动AI状态"); if (RuntimeLogUtility.s_LogProcessInfo) { UnityEngine.Debug.LogFormat("恢复自动AI状态"); } #endif GA_Hero _hero = PlayerDatas.Instance.hero; Fight/Actor/AI/Process/PN_StopAI.cs
@@ -9,6 +9,12 @@ public sealed override void Init() { m_Target.isStopAI = (param == 1); #if UNITY_EDITOR if (RuntimeLogUtility.s_LogProcessInfo) { UnityEngine.Debug.LogFormat("停止AI逻辑"); } #endif } public sealed override bool IsOver() Fight/Actor/AI/Process/PN_StopEffect.cs
@@ -14,7 +14,10 @@ SFXPlayUtility.Instance.Release(_sfx); m_Target.ProcessEffectDict.Remove(param); #if UNITY_EDITOR UnityEngine.Debug.LogFormat("进入停止特效: {0} 节点", param); if (RuntimeLogUtility.s_LogProcessInfo) { UnityEngine.Debug.LogFormat("进入停止特效: {0} 节点", param); } #endif } } @@ -27,7 +30,10 @@ public sealed override void UnInit() { #if UNITY_EDITOR UnityEngine.Debug.LogFormat("{0} 特效停止结束", param); if (RuntimeLogUtility.s_LogProcessInfo) { UnityEngine.Debug.LogFormat("{0} 特效停止结束", param); } #endif } Fight/Actor/AI/Process/PN_WaitTime.cs
@@ -12,6 +12,12 @@ public override void Init() { m_StartTime = Time.time; #if UNITY_EDITOR if (RuntimeLogUtility.s_LogProcessInfo) { UnityEngine.Debug.LogFormat("开始等待时间 {0} 毫秒", param); } #endif } public override bool IsOver() @@ -22,6 +28,12 @@ public override void UnInit() { #if UNITY_EDITOR if (RuntimeLogUtility.s_LogProcessInfo) { UnityEngine.Debug.LogFormat("等待时间结束"); } #endif } public override void Update() Fight/Actor/HeroBehaviour.cs
@@ -234,7 +234,7 @@ } } if (PreFightMission.Instance.IsFinished() == false) if (!PreFightMission.Instance.IsFinished()) { return; } Fight/GameActor/GA_NpcClientFightNorm.cs
@@ -139,6 +139,8 @@ lockHp = 0; isTalking = false; isStopAI = false; heroAttacked = false; AutoAI(); if (m_ProcessManager == null) @@ -148,8 +150,6 @@ m_ProcessManager.Load(this); InitAI(); heroAttacked = false; } protected virtual void InitAI() Fight/GameActor/GA_NpcFightBoss.cs
@@ -79,7 +79,9 @@ public override void RefreshLifeBar(ulong value) { var _hero = PlayerDatas.Instance.hero; if (_hero != null && _hero.SelectTarget == this) if ((_hero != null && _hero.SelectTarget == this) || ModelCenter.Instance.GetModel<HazyDemonKingModel>().IsInDungeon) { // 非选中状态下不刷新 if (s_HpRefresh != null) Fight/GameActor/GActorPlayerBase.cs
@@ -458,6 +458,13 @@ #region 装备穿戴相关 private GameObject m_ClothesModel; public GameObject ClothedModel { get { return m_ClothesModel; } } private GameObject m_WeaponModel; private GameObject m_SecondaryModel; private GameObject m_WingModel; Fight/MapTransferUtility.cs
@@ -236,9 +236,10 @@ { public int npcID; public int sid; public bool directTransfer; } public void MoveToNPC(int _npcID, int _sid = 0) public void MoveToNPC(int _npcID, int _sid = 0, bool direct = false) { #if UNITY_EDITOR Debug.LogFormat("想要切换至目标npc: {0}", _npcID); @@ -247,7 +248,8 @@ var _data = new MoveToData { npcID = _npcID, sid = _sid sid = _sid, directTransfer = direct }; StartCoroutine("CoMoveToNPC", _data); } @@ -307,80 +309,87 @@ // 判断是否在同一张地图中 if (_npcLocation.mapId != PlayerDatas.Instance.baseData.MapID) { int _idx1 = m_TransMapLine.IndexOf(PlayerDatas.Instance.baseData.MapID); int _idx2 = m_TransMapLine.IndexOf(_npcLocation.mapId); bool _valid = true; if (_idx1 == -1) if (data.directTransfer) { _valid = false; Debug.LogErrorFormat("寻找的地图ID不在线路中: {0}", PlayerDatas.Instance.baseData.MapID); _MoveToNPC(NpcID, sid); } if (_idx2 == -1) else { _valid = false; Debug.LogErrorFormat("寻找的地图ID不在线路中: {0}", _npcLocation.mapId); } if (_valid) { int _nextMapID = -1; // 顺序 if (_idx2 > _idx1) int _idx1 = m_TransMapLine.IndexOf(PlayerDatas.Instance.baseData.MapID); int _idx2 = m_TransMapLine.IndexOf(_npcLocation.mapId); bool _valid = true; if (_idx1 == -1) { _nextMapID = m_TransMapLine[_idx1 + 1]; _valid = false; Debug.LogErrorFormat("寻找的地图ID不在线路中: {0}", PlayerDatas.Instance.baseData.MapID); } // 逆序 else if (_idx2 == -1) { _nextMapID = m_TransMapLine[_idx1 - 1]; _valid = false; Debug.LogErrorFormat("寻找的地图ID不在线路中: {0}", _npcLocation.mapId); } // 先寻找传送点 int _transportID = GetNextTransportID(PlayerDatas.Instance.baseData.MapID, _nextMapID); if (_transportID != -1) if (_valid) { if (_curStage) int _nextMapID = -1; // 顺序 if (_idx2 > _idx1) { Vector3 _moveToPos; if (_curStage.TryGetTransportPosition(_transportID, out _moveToPos)) _nextMapID = m_TransMapLine[_idx1 + 1]; } // 逆序 else { _nextMapID = m_TransMapLine[_idx1 - 1]; } // 先寻找传送点 int _transportID = GetNextTransportID(PlayerDatas.Instance.baseData.MapID, _nextMapID); if (_transportID != -1) { if (_curStage) { while (true) Vector3 _moveToPos; if (_curStage.TryGetTransportPosition(_transportID, out _moveToPos)) { if (PathFinder.WalkAble(_hero.Pos, _moveToPos)) while (true) { break; if (PathFinder.WalkAble(_hero.Pos, _moveToPos)) { break; } var _nextPos = ClientSceneManager.Instance.GetTransPoint(_hero.Pos, _moveToPos); // 如果找到的下一个点 if (!PathFinder.WalkAble(_hero.Pos, _nextPos) || _nextPos == Vector3.zero) { Debug.LogErrorFormat("移动至NPC: {0} 时找不到任何跳跃点", NpcID); break; } float _dis = MathUtility.DistanceSqrtXZ(_hero.Pos, _nextPos); while (_dis > 0.01f) { _dis = MathUtility.DistanceSqrtXZ(_hero.Pos, _nextPos); _hero.MoveToPosition(_nextPos); yield return null; } while (!GA_Hero.s_Flying) { yield return null; } while (GA_Hero.s_Flying) { yield return null; } } var _nextPos = ClientSceneManager.Instance.GetTransPoint(_hero.Pos, _moveToPos); // 如果找到的下一个点 if (!PathFinder.WalkAble(_hero.Pos, _nextPos) || _nextPos == Vector3.zero) { Debug.LogErrorFormat("移动至NPC: {0} 时找不到任何跳跃点", NpcID); break; } float _dis = MathUtility.DistanceSqrtXZ(_hero.Pos, _nextPos); while (_dis > 0.01f) { _dis = MathUtility.DistanceSqrtXZ(_hero.Pos, _nextPos); _hero.MoveToPosition(_nextPos); yield return null; } while (!GA_Hero.s_Flying) { yield return null; } while (GA_Hero.s_Flying) { yield return null; } _hero.MoveToPosition(_moveToPos); yield break; } _hero.MoveToPosition(_moveToPos); yield break; } } } _MoveToNPC(NpcID, sid); } _MoveToNPC(NpcID, sid); yield break; } _destPostion = new Vector3(_npcLocation.position.x, 0, _npcLocation.position.y); Fight/PreFightMission.cs
@@ -89,7 +89,7 @@ { var _actorShowConfig = ActorShowConfig.Get(9); GameObject _prefab = InstanceResourcesLoader.LoadEffect(_actorShowConfig.effect); GameObject _prefab = InstanceResourcesLoader.LoadEffect(_actorShowConfig.effect.Length > 0 ? _actorShowConfig.effect[0] : 0); GameObjectPoolManager.Instance.CacheGameObject(_prefab, 1, false); _prefab = InstanceResourcesLoader.LoadEffect(_actorShowConfig.uieffect); GameObjectPoolManager.Instance.CacheGameObject(_prefab, 1, false); @@ -97,7 +97,7 @@ _actorShowConfig = ActorShowConfig.Get(12); _prefab = InstanceResourcesLoader.LoadEffect(_actorShowConfig.effect); _prefab = InstanceResourcesLoader.LoadEffect(_actorShowConfig.effect.Length > 0 ? _actorShowConfig.effect[0] : 0); GameObjectPoolManager.Instance.CacheGameObject(_prefab, 1, false); _prefab = InstanceResourcesLoader.LoadEffect(_actorShowConfig.uieffect); GameObjectPoolManager.Instance.CacheGameObject(_prefab, 1, false); Fight/Stage/Dungeon/AdventureStage.cs
@@ -2,14 +2,16 @@ using Snxxz.UI; using UnityEngine.SceneManagement; using UnityEngine; using System; using System; public class AdventureStage : Singleton<AdventureStage> { public bool IsInAdventureStage { get; private set; } private Vector3 m_CacheHeroPos; private GA_NpcClientFunc m_Npc; private bool dungeonFightWinOpenRecord = false; public event Action onLoadAdventureStage; public event Action onExitAdventureStage; @@ -18,7 +20,7 @@ public void Enter() { IsInAdventureStage = true; IsInAdventureStage = true; ClientDungeonStageUtility.RequestStartClientDungeon(0, 0); m_CacheHeroPos = PlayerDatas.Instance.hero.Pos; SnxxzGame.Instance.StartCoroutine(_Enter()); @@ -33,7 +35,7 @@ private IEnumerator _Enter() { WindowCenter.Instance.Open<LoadingWin>(); WindowCenter.Instance.Open<LoadingWin>(); WindowCenter.Instance.Close<MainInterfaceWin>(); if (!AssetSource.sceneFromEditor) { @@ -45,37 +47,44 @@ if (_hero != null) { _hero.Pos = new Vector3(9.517f, 18.742f, 7.485f); _hero.Behaviour.StopHandupAI(); _hero.Behaviour.StopKillUntilDieAI(); } CameraController.Instance.Apply(); yield return null; WindowCenter.Instance.Close<LoadingWin>(); WindowCenter.Instance.Open<MainInterfaceWin>(); WindowCenter.Instance.Close<LoadingWin>(); WindowCenter.Instance.Open<MainInterfaceWin>(); dungeonFightWinOpenRecord = WindowCenter.Instance.IsOpen<DungeonFightWin>(); if (!dungeonFightWinOpenRecord) { WindowCenter.Instance.Open<DungeonFightWin>(); } BossShowModel.Instance.bossShowCompletedEvent -= BossShowCompletedEvent; BossShowModel.Instance.bossShowCompletedEvent += BossShowCompletedEvent; if (onLoadAdventureStage != null) { onLoadAdventureStage(); if (onLoadAdventureStage != null) { onLoadAdventureStage(); } } private void BossShowCompletedEvent() { } private void BossShowCompletedEvent() { m_Npc = GAMgr.Instance.ReqClntNoFightNpc<GA_NpcClientFunc>((uint)hazyRegionModel.GetAdventureNpcId(), E_ActorGroup.FuncNpc); m_Npc.Pos = new Vector3(9.012f, 18.76f, 9.089f); m_Npc.Rotation = Quaternion.Euler(0f, 165f, 0f); NPCInteractProcessor.s_NpcInteractEvent -= OnNpcTalkEvent; NPCInteractProcessor.s_NpcInteractEvent += OnNpcTalkEvent; } NPCInteractProcessor.s_NpcInteractEvent += OnNpcTalkEvent; } private IEnumerator _Exit() { NPCInteractProcessor.s_NpcInteractEvent -= OnNpcTalkEvent; NPCInteractProcessor.s_NpcInteractEvent -= OnNpcTalkEvent; BossShowModel.Instance.bossShowCompletedEvent -= BossShowCompletedEvent; GAMgr.Instance.ServerDie(m_Npc.ServerInstID); GAMgr.Instance.Release(m_Npc); WindowCenter.Instance.Open<LoadingWin>(); WindowCenter.Instance.Open<LoadingWin>(); WindowCenter.Instance.Close<MainInterfaceWin>(); var _async = SceneManager.UnloadSceneAsync("Map140_Qy"); yield return _async; @@ -89,13 +98,17 @@ _hero.Pos = m_CacheHeroPos; } CameraController.Instance.Apply(); yield return null; yield return null; WindowCenter.Instance.Open<MainInterfaceWin>(); WindowCenter.Instance.Close<LoadingWin>(); WindowCenter.Instance.Close<LoadingWin>(); if (!dungeonFightWinOpenRecord) { WindowCenter.Instance.Close<DungeonFightWin>(); } if (onExitAdventureStage != null) { onExitAdventureStage(); if (onExitAdventureStage != null) { onExitAdventureStage(); } } @@ -108,8 +121,8 @@ if (m_Npc.NpcConfig.NPCID == npcid && m_Npc.ServerInstID == sid) { if (!WindowCenter.Instance.IsOpen<HazyRegionDialogueWin>()) { if (!WindowCenter.Instance.IsOpen<HazyRegionDialogueWin>()) { hazyRegionModel.StartAdventureDialogue(); } } Lua/Gen/ActorShowConfigWrap.cs
@@ -40,7 +40,6 @@ Utils.RegisterFunc(L, Utils.GETTER_IDX, "PosX", _g_get_PosX); Utils.RegisterFunc(L, Utils.GETTER_IDX, "PosY", _g_get_PosY); Utils.RegisterFunc(L, Utils.GETTER_IDX, "shadow", _g_get_shadow); Utils.RegisterFunc(L, Utils.GETTER_IDX, "effect", _g_get_effect); Utils.RegisterFunc(L, Utils.GETTER_IDX, "uieffect", _g_get_uieffect); Utils.RegisterFunc(L, Utils.GETTER_IDX, "mob", _g_get_mob); Utils.RegisterFunc(L, Utils.GETTER_IDX, "cam", _g_get_cam); @@ -578,20 +577,6 @@ ActorShowConfig gen_to_be_invoked = (ActorShowConfig)translator.FastGetCSObj(L, 1); LuaAPI.xlua_pushinteger(L, gen_to_be_invoked.shadow); } catch(System.Exception gen_e) { return LuaAPI.luaL_error(L, "c# exception:" + gen_e); } return 1; } [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))] static int _g_get_effect(RealStatePtr L) { try { ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L); ActorShowConfig gen_to_be_invoked = (ActorShowConfig)translator.FastGetCSObj(L, 1); LuaAPI.xlua_pushinteger(L, gen_to_be_invoked.effect); } catch(System.Exception gen_e) { return LuaAPI.luaL_error(L, "c# exception:" + gen_e); } System/Alchemy/AlchemyDrugWin.cs
@@ -38,6 +38,8 @@ SetDefaultSelect(); model.jumpAlchemy = 0; m_AlchemyScroll.Display((int)m_AlchemyType); DisplayAlchmey(); m_AlchemyDrug.Display(); @@ -81,10 +83,28 @@ } var qualities = AlchemyConfig.GetAlchemyQualities((int)m_AlchemyType); model.selectQuality = qualities.First(); var alchemys = AlchemyConfig.GetAlchemies((int)m_AlchemyType, model.selectQuality); model.selectAlchemy = alchemys[0]; if (model.jumpAlchemy != 0) { foreach (var quality in qualities) { var alchemys = AlchemyConfig.GetAlchemies((int)m_AlchemyType, quality); if (alchemys.Contains(model.jumpAlchemy)) { model.selectQuality = quality; model.selectAlchemy = model.jumpAlchemy; return; } } } { model.selectQuality = qualities.First(); var alchemys = AlchemyConfig.GetAlchemies((int)m_AlchemyType, model.selectQuality); model.selectAlchemy = alchemys[0]; } } private void SelectQualityRefresh() System/Alchemy/AlchemyModel.cs
@@ -64,6 +64,8 @@ public int stoveExp { get; private set; } public string alchemySuccRate { get; private set; } public int jumpAlchemy { get; set; } public bool isServerPrepare { get; private set; } Clock m_AlchemingClock = null; System/BossShow/BossShowModel.cs
@@ -201,16 +201,25 @@ var _hero = PlayerDatas.Instance.hero; if (_handleFight && _hero != null && !_hero.ActorInfo.serverDie) { bool _needStart = false; int _dgDataID = ModelCenter.Instance.GetModel<DungeonModel>().GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID); var dungeonOpen = DungeonOpenTimeConfig.Get(_dgDataID); if (dungeonOpen != null) { if (dungeonOpen.DoFight == 1) { _hero.Behaviour.StartHandupAI(); _needStart = true; } } else { if (!ClientSceneManager.Instance.IsClientFightMode) { _needStart = true; } } if (_needStart) { _hero.Behaviour.StartHandupAI(); } @@ -309,6 +318,11 @@ { for (int i = 0; i < showTargetList.Count; i++) { if (showTargetList[i].npcId == 1) { showTargetList[i].Destroy(); continue; } List<ShowActor> list = GetShowActor(showTargetList[i].npcId); if (list == null) { System/BossShow/ShowActor.cs
@@ -50,8 +50,16 @@ this.m_Index = index; this.m_Instance = instanceid; m_NpcCfg = NPCConfig.Get(npcID); Appear(index, _actorShowConfig); if (npcId == 1) { Appear(index, _actorShowConfig); } else { m_NpcCfg = NPCConfig.Get(npcID); Appear(index, _actorShowConfig); } } public void Appear(int index, ActorShowConfig _actorShowConfig) @@ -60,10 +68,21 @@ this.actorShowModel = _actorShowConfig; if (m_Model == null) { m_Model = GameObjectPoolManager.Instance.RequestNpcGameObject(m_NpcId); m_Animator = m_Model.AddMissingComponent<Animator>(); m_CacheLayer = m_Model.layer; m_Model.gameObject.SetLayer(LayerUtility.BossShow, true); if (npcId != 1) { m_Model = GameObjectPoolManager.Instance.RequestNpcGameObject(m_NpcId); m_Animator = m_Model.AddMissingComponent<Animator>(); m_CacheLayer = m_Model.layer; m_Model.gameObject.SetLayer(LayerUtility.BossShow, true); } else { var hero = PlayerDatas.Instance.hero; m_Model = GameObject.Instantiate(hero.ClothedModel) as GameObject; m_Animator = m_Model.AddMissingComponent<Animator>(); m_CacheLayer = m_Model.layer; m_Model.gameObject.SetLayer(LayerUtility.BossShow, true); } } m_Model.SetActive(true); m_Model.transform.position = new Vector3((float)actorShowModel.PosX[m_Index] / 200, 0, (float)actorShowModel.PosY[m_Index] / 200); @@ -72,7 +91,7 @@ RaycastHit _hit; var _heightPos = m_Model.transform.position; if (actorShowModel.Height.Length > 1) if (actorShowModel.Height.Length > 1 && m_Index == 0) { _heightPos.x = (float)actorShowModel.Height[0] / 200; _heightPos.y = 0; @@ -85,7 +104,21 @@ } m_Model.transform.rotation = MathUtility.GetClientRotationFromAngle(actorShowModel.NpcFace[m_Index]); var controller = AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerShowSuffix, actorShowModel.mob[m_Index]); RuntimeAnimatorController controller = null; if (npcId == 1) { var job = PlayerDatas.Instance.baseData.Job; var _controllerName = "A_Zs"; if (job == 2) { _controllerName = "A_Fs"; } controller = AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerShowSuffix, _controllerName); } else { controller = AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerShowSuffix, actorShowModel.mob[m_Index]); } if (controller != null) { m_CacheAnimator = m_Animator.runtimeAnimatorController; @@ -94,8 +127,16 @@ if (m_Animator != null) { m_Animator.enabled = true; m_Animator.Play(Animator.StringToHash("Show"), 0, 0); nextAction = GAStaticDefine.Act_Show; m_Animator.Play(Animator.StringToHash("Idle"), 0, 0); nextAction = 0; if (m_Index < actorShowModel.clipActions.Length) { nextAction = actorShowModel.clipActions[m_Index]; } else { nextAction = GAStaticDefine.Act_Show; } } } else @@ -107,16 +148,17 @@ } } if (actorShowModel.effect != 0) if (actorShowModel.effect != null && m_Index < actorShowModel.effect.Length && actorShowModel.effect[m_Index] != 0) { sfxController = SFXPlayUtility.Instance.Play(actorShowModel.effect, m_Model.transform); sfxController = SFXPlayUtility.Instance.Play(actorShowModel.effect[m_Index], m_Model.transform); if (sfxController != null) { sfxController.duration = 0; } } RequestCircleShadow(); if (shadow) if (shadow && m_NpcId != 1) { shadow.transform.localScale = m_NpcCfg.IsBoss == 1 ? Vector3.one * 3 : Vector3.one; shadow.gameObject.SetLayer(LayerUtility.BossShow, true); @@ -172,4 +214,19 @@ RecyleCircleShadow(); } public void Destroy() { if (m_Model != null) { GameObject.Destroy(m_Model); m_Model = null; } if (sfxController != null) { SFXPlayUtility.Instance.Release(sfxController); sfxController = null; } RecyleCircleShadow(); } } System/Dungeon/DungeonFightWin.cs
@@ -217,6 +217,18 @@ private void ExitDungeon() { if (AdventureStage.Instance.IsInAdventureStage) { ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("HazyExitAdventureConfirm"), (bool isOk) => { if (isOk) { AdventureStage.Instance.Exit(); } }); return; } var dataMapId = model.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID); var config = DungeonOpenTimeConfig.Get(dataMapId); string language = string.Empty; @@ -362,6 +374,10 @@ { if (immedidately) { m_ContainerFuncBtn.localPosition = MainPositionTween.isDefaultState ? m_ContainerFuncBottom.localPosition : m_ContainerFuncUp.localPosition; } else { if (MainPositionTween.isDefaultState) { m_Tweener = m_ContainerFuncBtn.DOLocalMoveY(m_ContainerFuncBottom.localPosition.y, 1); @@ -370,10 +386,6 @@ { m_Tweener = m_ContainerFuncBtn.DOLocalMoveY(m_ContainerFuncUp.localPosition.y, 1); } } else { m_ContainerFuncBtn.localPosition = MainPositionTween.isDefaultState ? m_ContainerFuncBottom.localPosition : m_ContainerFuncUp.localPosition; } } System/Dungeon/TargetBriefInfoWin.cs
@@ -15,6 +15,8 @@ public static PlayerInfo playerInfo { get; private set; } public static MonsterInfo bossInfo { get; private set; } static HazyDemonKingModel hazyDemonKingModel { get { return ModelCenter.Instance.GetModel<HazyDemonKingModel>(); } } public static void Init() { GA_NpcFightBoss.s_OnSelect += OnShowBossLifeBar; @@ -30,6 +32,11 @@ static void OnShowBossLifeBar(uint _instanceId, int _npcId, bool _show) { if (CrossServerUtility.IsCrossServerOneVsOne() && _show) { return; } if (hazyDemonKingModel.IsInDungeon && !_show) { return; } @@ -128,6 +135,11 @@ return; } if (hazyDemonKingModel.IsInDungeon) { return; } if (_show) { var player = GAMgr.Instance.GetBySID(_instanceId) as GActorPlayerBase; @@ -173,6 +185,11 @@ return; } if (hazyDemonKingModel.IsInDungeon) { return; } bossInfo = default(MonsterInfo); var player = GAMgr.Instance.GetBySID(_instanceId) as GActorPlayerBase; if (player != null) System/HazyRegion/HazyDemonKingModel.cs
@@ -96,6 +96,11 @@ private void PerSecond() { if (!(StageLoad.Instance.currentStage is DungeonStage)) { return; } if (IsInDungeon) { var requireRefreshPlayer = false; @@ -203,6 +208,11 @@ public bool IsInDemonKingDungeon(int mapId) { if (!(StageLoad.Instance.currentStage is DungeonStage)) { return false; } if (mapId == Client_MapID) { return true; System/HazyRegion/HazyGrassModel.cs
@@ -116,6 +116,11 @@ public bool IsInGrassDungeon(int mapId) { if (!(StageLoad.Instance.currentStage is DungeonStage)) { return false; } if (mapId == Client_ReikiGrassMapID || mapId == Client_FairyGrassMapID) { System/HazyRegion/HazyRegionEntrancePanel.cs
@@ -112,6 +112,12 @@ return; } if (questState == DailyQuestModel.DailyQuestState.Completed) { SysNotifyMgr.Instance.ShowTip("OpenHazyRegionError_3"); return; } if (!model.TryAddTimes()) { SysNotifyMgr.Instance.ShowTip("OpenHazyAddTimesError_1"); System/HazyRegion/HazyRegionIncidentBehaviour.cs
@@ -33,6 +33,9 @@ [SerializeField] Text m_PlayerCount; [SerializeField] Text m_RebornTime; [Header("宝藏")] [SerializeField] UIEffect m_TitleEffect; public UIAlphaTween alphaTween { get { return m_AlphaTween; } } public UILinerMove linerMove { get { return m_LinerMove; } } @@ -98,6 +101,14 @@ findPreciousModel.bossInfoUpdateEvent += BossInfoUpdateEvent; hazyDemonKingModel.onPlayerCountRefresh -= OnPlayerCountRefresh; hazyDemonKingModel.onPlayerCountRefresh += OnPlayerCountRefresh; m_TitleEffect.gameObject.SetActive(false); switch (incidentType) { case HazyRegionIncidentType.Precious: m_TitleEffect.gameObject.SetActive(true); break; } } void DisplayBase() System/HazyRegion/HazyRegionIncidentPanel.cs
@@ -14,6 +14,7 @@ [SerializeField] Text m_Point; [SerializeField] Button m_Back; [SerializeField] Button m_Goto; [SerializeField] Text m_GotoLabel; List<int> incidents = new List<int>(); @@ -21,6 +22,7 @@ DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } } PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } } FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } } DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } } DateTime requestTime = DateTime.Now; int requestCount = 0; @@ -38,10 +40,14 @@ DisplayPoint(); DisplayIncidents(); DisplayBackButton(); DisplayGotoState(); requestCount = 0; model.incidentDirty = false; SendRequestPlayerCount(); DailyQuestActionTimer.Instance.RefreshDailyQuestState -= RefreshDailyQuestState; DailyQuestActionTimer.Instance.RefreshDailyQuestState += RefreshDailyQuestState; } void DisplayIncidents() @@ -85,6 +91,12 @@ { var lhs_config = HazyRegionConfig.Get(lhs); var rhs_config = HazyRegionConfig.Get(rhs); var lhs_precious = lhs_config.incidentType == (int)HazyRegionIncidentType.Precious; var rhs_precious = rhs_config.incidentType == (int)HazyRegionIncidentType.Precious; if (lhs_precious != rhs_precious) { return -lhs_precious.CompareTo(rhs_precious); } if (lhs_config.incidentType != rhs_config.incidentType) { return lhs_config.incidentType.CompareTo(rhs_config.incidentType); @@ -159,8 +171,31 @@ } } private void DisplayGotoState() { var questState = dailyQuestModel.GetQuestState((int)DailyQuestType.HazyRegion); m_Goto.SetColorful(m_GotoLabel, questState != DailyQuestModel.DailyQuestState.OutTime); } private void Goto() { var questState = dailyQuestModel.GetQuestState((int)DailyQuestType.HazyRegion); if (questState == DailyQuestModel.DailyQuestState.OutTime) { DailyQuestOpenTime dailyQuestOpenTime; if (dailyQuestModel.TryGetOpenTime((int)DailyQuestType.HazyRegion, out dailyQuestOpenTime)) { HourMinute hourMinute; if (dailyQuestOpenTime.TryGetTodayNearestOpenTime(out hourMinute)) { SysNotifyMgr.Instance.ShowTip("OpenHazyRegionError_1", hourMinute.hourBegin.ToString("D2"), hourMinute.hourEnd.ToString("D2")); } } return; } var error = 0; if (!model.TryGotoIncident(model.selectIncident, out error)) { @@ -267,9 +302,15 @@ } } private void RefreshDailyQuestState() { DisplayGotoState(); } public void Dispose() { m_CyclicScroll.Dispose(); DailyQuestActionTimer.Instance.RefreshDailyQuestState -= RefreshDailyQuestState; } #if UNITY_EDITOR System/KnapSack/Logic/ItemModel.cs
@@ -113,7 +113,7 @@ } } this.score = ItemLogicUtility.Instance.GetEquipScore(packType, itemId, useDataDict); this.score = ItemLogicUtility.Instance.GetEquipScore(packType, itemId, useDataDict, isAuction); } public void RefreshCount(int count) System/MainInterfacePanel/FunctionForecastTip.cs
@@ -120,26 +120,7 @@ _Information.gameObject.SetActive(true); _FunctionIcon.SetSprite(FunctionForecastConfig.Get(ID).FuncIconKey); _NameText.text = FunctionForecastConfig.Get(ID).Describe; FuncOpenLVConfig funcoPenConfig = FuncOpenLVConfig.Get(ID); if (funcoPenConfig.LimitMagicWeapon != 0 || funcoPenConfig.LimitMissionID != 0) { if (funcoPenConfig.LimitMagicWeapon != 0) { int faBaoID = funcoPenConfig.LimitMagicWeapon / 100; TreasureConfig treasure = TreasureConfig.Get(faBaoID); _Information.text = string.Format(Language.Get("FuncFBOpen"), treasure.Name); return; } if (funcoPenConfig.LimitMissionID != 0) { _Information.text = string.Format(Language.Get("TaskFuncOpen"), funcoPenConfig.LimitLV); return; } } else { _Information.text = string.Format(Language.Get("FuncLevelOpen"), funcoPenConfig.LimitLV); } _Information.text= FunctionForecastConfig.Get(ID).OpenDescribe; } System/MainInterfacePanel/FunctionForecastWin.cs
@@ -58,25 +58,7 @@ FunctionImage.SetSprite(functionForcecastConfig.FuncIconKey); IconText.text = functionForcecastConfig.FuncName; ContentText.text = functionForcecastConfig.DetailDescribe; if (openLvConfig.LimitMagicWeapon != 0 || openLvConfig.LimitMissionID != 0) { if (openLvConfig.LimitMagicWeapon != 0) { int faBaoID = openLvConfig.LimitMagicWeapon / 100; TreasureConfig treasure = TreasureConfig.Get(faBaoID); ContentText1.text = string.Format(Language.Get("FuncFBOpen"), treasure.Name); return; } if (openLvConfig.LimitMissionID != 0) { ContentText1.text = string.Format(Language.Get("TaskFuncOpen"), openLvConfig.LimitLV); return; } } else { ContentText1.text = string.Format(Language.Get("FuncLevelOpen"), openLvConfig.LimitLV); } ContentText1.text = functionForcecastConfig.OpenDescribe; } protected override void OnPreClose() System/MainInterfacePanel/MainInterfaceWin.cs
@@ -145,7 +145,7 @@ } var isNeutralMap = GeneralDefine.neutralBossMaps.Contains(PlayerDatas.Instance.baseData.MapID); if (isNeutralMap) if (isNeutralMap && !AdventureStage.Instance.IsInAdventureStage) { m_BossBriefInfos.gameObject.SetActive(true); if (PlayerDatas.Instance.baseData.MapID == DogzDungeonModel.DATA_MAPID) System/MainInterfacePanel/MainPositionTween.cs
@@ -109,7 +109,8 @@ m_ContainerBossList.gameObject.SetActive(isNeutralMap); rightTopState = RightTopState.Function; if ((isDungeon || isNeutralMap || isBossArea) && !isGuiding && switchParams.showDefault) if ((isDungeon || isNeutralMap || isBossArea || AdventureStage.Instance.IsInAdventureStage) && !isGuiding && switchParams.showDefault) { rightTopState = RightTopState.Boss; } System/MainInterfacePanel/MapSwitchingBehaviour.cs
@@ -29,7 +29,7 @@ public void Init() { int MapID = PlayerDatas.Instance.baseData.MapID; if (MapIdList.Contains(MapID)) if (MapIdList.Contains(MapID) && !AdventureStage.Instance.IsInAdventureStage) { m_Btn_MapSwitch.gameObject.SetActive(true); } System/Message/RichMoveEvent.cs
@@ -45,6 +45,11 @@ case RichTextEventEnum.MOVENPC: { int id = int.Parse(href.mSplits["movenpc"]); var movetype = 1; if (href.mSplits.ContainsKey("movetype")) { movetype = int.Parse(href.mSplits["movetype"]); } var error = 0; if (!TestMoveNpc(id, out error)) { @@ -55,7 +60,7 @@ if (hero != null) { PlayerDatas.Instance.hero.Behaviour.StopHandupAI(); SnxxzGame.Instance.StartCoroutine(WaitForSkillFinished(id)); SnxxzGame.Instance.StartCoroutine(WaitForSkillFinished(id, movetype)); } } break; @@ -202,7 +207,7 @@ SnxxzGame.Instance.StartCoroutine(WaitForSkillFinished(new Vector3(m_Posx / 2, 0, m_Posy / 2))); } private IEnumerator WaitForSkillFinished(int id) private IEnumerator WaitForSkillFinished(int id, int movetype) { GA_Hero _hero = PlayerDatas.Instance.hero; @@ -227,7 +232,7 @@ yield break; } MapTransferUtility.Instance.MoveToNPC(id); MapTransferUtility.Instance.MoveToNPC(id, 0, movetype == 1); } private IEnumerator WaitForSkillFinished(Vector3 pos) System/Tip/ItemConfirmWin.cs
@@ -66,7 +66,7 @@ var _itemCnt = ModelCenter.Instance.GetModel<PackModel>().GetItemCountByID(PackType.Item, ConfirmCancel.generalItemId); if (_itemCnt < ConfirmCancel.generalItemCnt) { ScrollTip.ShowTip(Language.Get("InsufficientQIR_Z")); ItemTipUtility.Show(ConfirmCancel.generalItemId); return; } CloseClick(); System/Treasure/HumanTreasureWin.cs
@@ -31,6 +31,7 @@ [SerializeField] Slider m_TaskSlider; [SerializeField] Text m_TaskProgress; [SerializeField] UIEffect m_EffectInduction; [SerializeField] UIEffect m_EffectInduction1; [SerializeField] Transform m_ContainerSkillDetial; [SerializeField] Image m_SkillDetailIcon; @@ -303,6 +304,7 @@ var count = m_TaskController.GetNumberOfCells(m_TaskController.m_Scorller); m_TaskController.JumpIndex(count - 1); m_EffectInduction.Play(); m_EffectInduction1.Play(); m_TaskController.mScrollRect.enabled = false; StartCoroutine(Co_DelayShowTask()); } System/WindowBase/WindowCenter.cs
@@ -553,6 +553,7 @@ float checkTimer = 0f; private void LateUpdate() { var checkMainWinImmedidately = closeCommands.Count + openCommands.Count > 0; while (closeCommands.Count > 0) { var command = closeCommands[0]; @@ -594,7 +595,7 @@ } checkTimer += Time.deltaTime; checkTimer += checkMainWinImmedidately ? 1f : Time.deltaTime; if (checkTimer > 0.5f) { checkTimer = 0f; @@ -609,15 +610,15 @@ && !IsOpen("HazyRegionDialogueWin") && !IsOpen("NormalDialogueWin"); if (exceptOpen != IsOpen("MainInterfaceWin")) if (exceptOpen != IsOpen("MainInterfaceWin") && windows.ContainsKey("MainInterfaceWin")) { if (exceptOpen) { Open("MainInterfaceWin", true); windows["MainInterfaceWin"].Open(); } else { Close("MainInterfaceWin"); windows["MainInterfaceWin"].CloseImmediately(); } } } System/WindowJump/WindowJumpMgr.cs
@@ -143,6 +143,7 @@ case JumpUIType.SkillFunc2: case JumpUIType.SkillFunc3: case JumpUIType.SkillFunc2Type2: case JumpUIType.TreasureSkill: SetJumpLogic<SkillWin>(_tagWinSearchModel.TABID); break; case JumpUIType.StrengthFunc1: @@ -716,6 +717,16 @@ break; case JumpUIType.HazyRegion: SetJumpLogic<CrossServerWin>(_tagWinSearchModel.TABID); break; case JumpUIType.Alchemy1: case JumpUIType.Alchemy2: case JumpUIType.Alchemy3: case JumpUIType.Alchemy4: case JumpUIType.Alchemy5: var selectAlchemy = 0; int.TryParse(_tagWinSearchModel.SelectActive, out selectAlchemy); ModelCenter.Instance.GetModel<AlchemyModel>().jumpAlchemy = selectAlchemy; SetJumpLogic<AlchemyBaseWin>(_tagWinSearchModel.TABID); break; default: DebugEx.Log("未添加此跳转界面:" + jumpType); @@ -1651,6 +1662,12 @@ AllianceBoss1 = 308,//仙盟Boss1 AllianceBoss2 = 309,//仙盟Boss2 FairyAuction = 310,//仙盟拍卖行 TreasureSkill = 311,//技能升级 Alchemy1 = 312,//炼丹 Alchemy2 = 313, Alchemy3 = 314, Alchemy4 = 315, Alchemy5 = 316, DhszTs = 1001,//定海神针功法提升界面 HyqTs = 1002,//皓月枪功法提升界面 Utility/RuntimeLogUtility.cs
@@ -4,6 +4,7 @@ #endif using System.Collections.Generic; using System.Text; using Snxxz.UI; public class RuntimeLogUtility : MonoBehaviour { @@ -21,6 +22,7 @@ public static bool s_ShowZZAtkValue = false; public static bool s_ForceSupperHit = false; public static bool s_ForceLuckHit = false; public static bool s_LogProcessInfo = false; public static bool s_forceAutoFight { get @@ -202,7 +204,7 @@ if (GUILayout.Button("触发客户端触发器")) { // ClientSceneManager.Instance.TriggerTest(_triggerID); GA_NpcFunc.SetNpcFuncVisible(10104003, true); // GA_NpcFunc.SetNpcFuncVisible(10104003, true); } EditorGUILayout.EndHorizontal(); @@ -212,7 +214,8 @@ if (GUILayout.Button("测试寻路")) { // Debug.Log(PathFinder.WalkAble(_start3, _end3)); MapTransferUtility.Instance.MoveToNPC(10904012); // MapTransferUtility.Instance.MoveToNPC(10904012); MapTransferUtility.Instance.MoveToLocalMapPosition(new Vector2(_end3.x, _end3.z)); } EditorGUILayout.LabelField("Log存储路径", RuntimeLogUtility.s_LogPath); @@ -240,19 +243,17 @@ RuntimeLogUtility.TEST_CLIENT_PVP_AI = EditorGUILayout.Toggle("模拟客户端PVP的AI状态", RuntimeLogUtility.TEST_CLIENT_PVP_AI); RuntimeLogUtility.s_ForceSupperHit = EditorGUILayout.Toggle("强制暴击", RuntimeLogUtility.s_ForceSupperHit); RuntimeLogUtility.s_ForceLuckHit = EditorGUILayout.Toggle("强制会心一击", RuntimeLogUtility.s_ForceLuckHit); RuntimeLogUtility.s_LogProcessInfo = EditorGUILayout.Toggle("输出AI流程控制", RuntimeLogUtility.s_LogProcessInfo); if (GUILayout.Button("创建PVP敌方")) { var _npc = GAMgr.Instance.ReqClntFightNpc<GA_NpcClientFightNorm>(30102003, E_ActorGroup.Enemy); var _npc = GAMgr.Instance.ReqClntFightNpc<GA_NpcClientFightBoss>(10103001, E_ActorGroup.Enemy); _npc.BornPos = _npc.Pos = PlayerDatas.Instance.hero.Pos; _npc.ActorInfo.ResetHp(9999999, -1, 9999999); // BossShowModel.Instance.Start(PlayerDatas.Instance.baseData.MapID, 10103001); // ClientDropItemUtility.Instance.Drop(PlayerDatas.Instance.hero.Pos, // new int[] { 5006, 5301, 5410, 5505, 10543, 1043050, // 5301, 5410, 5505, 10543, 1043050, // 5301, 5410, 5505, 10543, 1043050, // 5301, 5410, 5505, 10543, 1043050, // 5301, 5410, 5505, 10543, 1043050 }); // 5301, 5410, 5505, 10543, 1043050}); // var _npc = GAMgr.Instance.ReqClntFightNpc<GA_NpcClientFightBoss>(10103001, E_ActorGroup.Enemy); @@ -295,6 +296,7 @@ { // GA_PVPClientPlayer.Reset(); // AdventureStage.Instance.Exit(); ClientSceneManager.Instance.ExitClientFightMode(); } _navChkPos = EditorGUILayout.Vector3Field("检测点", _navChkPos);