少年修仙传客户端代码仓库
client_Hale
2019-03-11 acce79cb4a8e0d2b941c68521b7aaf38065208fb
6317 【前端】【2.0】场景化单机战斗
4个文件已修改
88 ■■■■■ 已修改文件
Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0102_tagCDBPlayer.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Stage/MapEditor/Game/ClientSceneManager.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Stage/MapEditor/Game/TransferGroup.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Stage/MapEditor/Game/TriggerHandler.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0102_tagCDBPlayer.cs
@@ -118,6 +118,7 @@
        MainRedDot.Instance.Register();
        SettingEffectMgr.Instance.Begin();
        QuickSetting.Instance.SetQuickSetting(package.Setting);
        ClientSceneManager.Instance.ReConnectClear();
        // 初始化摄像机
        if (!CameraController.Instance)
Fight/Stage/MapEditor/Game/ClientSceneManager.cs
@@ -10,6 +10,7 @@
    private Dictionary<int, IEventHandler> m_EventHandlerDict = new Dictionary<int, IEventHandler>();
    private List<IEventHandler> m_ReadyRemoveEventHandlerList = new List<IEventHandler>();
    private Dictionary<int, uint> m_TriggerIDToMissionIDDict = new Dictionary<int, uint>();
    private Dictionary<int, TriggerHandler> m_TriggerHandlerDict = new Dictionary<int, TriggerHandler>();
    private List<int> m_ReadyRemoveTriggerList = new List<int>();
    private Dictionary<int, List<GActorNpcFight>> m_EventActorDict = new Dictionary<int, List<GActorNpcFight>>();
@@ -177,6 +178,8 @@
            m_TransferGroupList.Add(new TransferGroup(_trasfer));
        }
        TriggerHandler.OnEnter += OnTriggerEnter;
        TriggerHandler.OnExit += OnTriggerExit;
    }
    public void UnInit()
@@ -187,12 +190,22 @@
        }
        m_TransferGroupList.Clear();
        ReConnectClear();
        TriggerHandler.OnEnter -= OnTriggerEnter;
        TriggerHandler.OnExit -= OnTriggerExit;
        m_Inited = false;
    }
    public void ReConnectClear()
    {
        foreach (var _triggerID in m_TriggerIDToMissionIDDict.Keys)
        {
            DelayUnTrigger(_triggerID);
        }
        m_Inited = false;
        m_TriggerIDToMissionIDDict.Clear();
        m_TriggerHandlerDict.Clear();
    }
    public void Update()
@@ -200,6 +213,11 @@
        foreach (var _trasfer in m_TransferGroupList)
        {
            _trasfer.Update();
        }
        foreach (var _triggerHandler in m_TriggerHandlerDict.Values)
        {
            _triggerHandler.Update();
        }
        m_ReadyRemoveEventHandlerList.Clear();
@@ -248,6 +266,7 @@
    private IEnumerator DelayTrigger(uint missionID, int triggerID)
    {
        // ID为0, 约定为清空触发
        if (triggerID == 0)
        {
            yield return SnxxzGame.Instance.StartCoroutine(DelayUnTrigger(triggerID));
@@ -285,6 +304,8 @@
                continue;
            }
            var _triggerHandler = new TriggerHandler(_trigger);
            m_TriggerHandlerDict[_trigger.id] = _triggerHandler;
            foreach (var _eventID in _trigger.evevntIDs)
            {
                if (!m_MapData.eventDict.ContainsKey(_eventID))
@@ -304,4 +325,22 @@
            break;
        }
    }
    private void OnTriggerEnter(int id)
    {
        Debug.Log("进入了触发器范围: " + id);
    }
    private void OnTriggerExit(int id)
    {
        if (m_TriggerHandlerDict.ContainsKey(id))
        {
            Debug.Log("退出了触发器范围: " + id);
            CA225_tagCMClientTaskCount _a225 = new CA225_tagCMClientTaskCount
            {
                CountID = 10000
            };
            GameNetSystem.Instance.SendInfo(_a225);
        }
    }
}
Fight/Stage/MapEditor/Game/TransferGroup.cs
@@ -96,6 +96,7 @@
                    m_Step = 1;
                    m_InCreaseTime = 0;
                    m_FlyingEffect = SFXPlayUtility.Instance.PlayBattleEffect(1180, _hero);
                    SFXPlayUtility.Instance.PlayBattleEffect(1181, _p.position, Vector3.forward);
                    _hero.Idle();
                    _hero.SwitchHeadNameBindNode(true);
                }
Fight/Stage/MapEditor/Game/TriggerHandler.cs
@@ -1,12 +1,55 @@
using H2Engine;
using UnityEngine;
using UnityEngine.Events;
public class TriggerHandler
{
    private MapTrigger m_Trigger;
    public static UnityAction<int> OnEnter;
    public static UnityAction<int> OnExit;
    private bool m_InOrOut;
    public TriggerHandler(MapTrigger trigger)
    {
        m_Trigger = trigger;
    }
    public void Update()
    {
        var _hero = PlayerDatas.Instance.hero;
        if (_hero == null)
        {
            return;
        }
        if (m_InOrOut)
        {
            if (_hero.Pos.x < m_Trigger.position.x - m_Trigger.size.x * .5f
             || _hero.Pos.x > m_Trigger.position.x + m_Trigger.size.x * .5f
             || _hero.Pos.z < m_Trigger.position.z - m_Trigger.size.z * .5f
             || _hero.Pos.z > m_Trigger.position.z + m_Trigger.size.z * .5f)
            {
                m_InOrOut = false;
                if (OnExit != null)
                {
                    OnExit(m_Trigger.id);
                }
            }
        }
        else
        {
            if (_hero.Pos.x > m_Trigger.position.x - m_Trigger.size.x * .5f
             && _hero.Pos.x < m_Trigger.position.x + m_Trigger.size.x * .5f
             && _hero.Pos.z > m_Trigger.position.z - m_Trigger.size.z * .5f
             && _hero.Pos.z < m_Trigger.position.z + m_Trigger.size.z * .5f)
            {
                m_InOrOut = true;
                if (OnEnter != null)
                {
                    OnEnter(m_Trigger.id);
                }
            }
        }
    }
}