Core/GameEngine/Model/Player/Realm/RealmModel.cs
@@ -170,39 +170,6 @@ { } #region 玩家是否在打坐状态 public bool IsInJumpToDaZuo = false; public Dictionary<uint, byte> playerSitDic = new Dictionary<uint, byte>(); public void OnRefreshData(H0411_tagPlayerSit vNetData) { if (playerSitDic.ContainsKey(vNetData.PlayerID)) { playerSitDic[vNetData.PlayerID] = vNetData.Type; } else { playerSitDic.Add(vNetData.PlayerID, vNetData.Type); } GActorPlayerBase player = GAMgr.Instance.GetBySID(vNetData.PlayerID) as GActorPlayerBase; if (player != null) { if (vNetData.Type == 0) { GA_Player _otherPlayer = player as GA_Player; if (_otherPlayer != null) { _otherPlayer.StopMoveToPosition(); } player.Dazuo(); } else if (vNetData.Type == 1) { player.IdleImmediate(); } } } #endregion #region 配置 public const int REALM_DUNGEON_ID = 31110; public int realmHoleLimit { get; private set; } 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) Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0411_tagPlayerSit.cs
@@ -8,15 +8,6 @@ public class DTC0411_tagPlayerSit : DtcBasic { RealmModel m_RealmModel; RealmModel realmModel { get { return m_RealmModel ?? (m_RealmModel = ModelCenter.Instance.GetModel<RealmModel>()); } } FairyFeastModel fairyFeastModel { get { return ModelCenter.Instance.GetModel<FairyFeastModel>(); } @@ -30,7 +21,7 @@ if (vNetData != null) { realmModel.OnRefreshData(vNetData); PlayerSitHandler.Instance.ReceivePackage(vNetData); fairyFeastModel.UpdateTransmitState(vNetData); } } Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0429_tagObjResetPos.cs
@@ -43,8 +43,8 @@ if (vNetData.Reason == 0) { if (!model.playerSitDic.ContainsKey(vNetData.ObjID) || model.playerSitDic[vNetData.ObjID] == 1) if (!PlayerSitHandler.Instance.playerSitDict.ContainsKey(vNetData.ObjID) || PlayerSitHandler.Instance.playerSitDict[vNetData.ObjID] == 1) { _actor.IdleImmediate(); _actor.StopPathFind(); 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); } } } } } Lua/Gen/SnxxzUIRealmModelWrap.cs
@@ -26,7 +26,6 @@ Utils.RegisterFunc(L, Utils.METHOD_IDX, "OnBeforePlayerDataInitialize", _m_OnBeforePlayerDataInitialize); Utils.RegisterFunc(L, Utils.METHOD_IDX, "Init", _m_Init); Utils.RegisterFunc(L, Utils.METHOD_IDX, "UnInit", _m_UnInit); Utils.RegisterFunc(L, Utils.METHOD_IDX, "OnRefreshData", _m_OnRefreshData); Utils.RegisterFunc(L, Utils.METHOD_IDX, "GetRealmHelperAttr", _m_GetRealmHelperAttr); Utils.RegisterFunc(L, Utils.METHOD_IDX, "IsBigRealm", _m_IsBigRealm); Utils.RegisterFunc(L, Utils.METHOD_IDX, "TryGetRealmStage", _m_TryGetRealmStage); @@ -48,8 +47,6 @@ Utils.RegisterFunc(L, Utils.GETTER_IDX, "realmSuppressHurt", _g_get_realmSuppressHurt); Utils.RegisterFunc(L, Utils.GETTER_IDX, "IsRealmHighest", _g_get_IsRealmHighest); Utils.RegisterFunc(L, Utils.GETTER_IDX, "IsDungeonState", _g_get_IsDungeonState); Utils.RegisterFunc(L, Utils.GETTER_IDX, "IsInJumpToDaZuo", _g_get_IsInJumpToDaZuo); Utils.RegisterFunc(L, Utils.GETTER_IDX, "playerSitDic", _g_get_playerSitDic); Utils.RegisterFunc(L, Utils.GETTER_IDX, "realmRedpoint", _g_get_realmRedpoint); Utils.RegisterFunc(L, Utils.GETTER_IDX, "openedRealmUpWin", _g_get_openedRealmUpWin); @@ -57,8 +54,6 @@ Utils.RegisterFunc(L, Utils.SETTER_IDX, "openByDungeonStep", _s_set_openByDungeonStep); Utils.RegisterFunc(L, Utils.SETTER_IDX, "leaderId", _s_set_leaderId); Utils.RegisterFunc(L, Utils.SETTER_IDX, "realmDungeonState", _s_set_realmDungeonState); Utils.RegisterFunc(L, Utils.SETTER_IDX, "IsInJumpToDaZuo", _s_set_IsInJumpToDaZuo); Utils.RegisterFunc(L, Utils.SETTER_IDX, "playerSitDic", _s_set_playerSitDic); Utils.RegisterFunc(L, Utils.SETTER_IDX, "realmRedpoint", _s_set_realmRedpoint); Utils.RegisterFunc(L, Utils.SETTER_IDX, "openedRealmUpWin", _s_set_openedRealmUpWin); @@ -176,34 +171,6 @@ { gen_to_be_invoked.UnInit( ); return 0; } } catch(System.Exception gen_e) { return LuaAPI.luaL_error(L, "c# exception:" + gen_e); } } [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))] static int _m_OnRefreshData(RealStatePtr L) { try { ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L); Snxxz.UI.RealmModel gen_to_be_invoked = (Snxxz.UI.RealmModel)translator.FastGetCSObj(L, 1); { H0411_tagPlayerSit _vNetData = (H0411_tagPlayerSit)translator.GetObject(L, 2, typeof(H0411_tagPlayerSit)); gen_to_be_invoked.OnRefreshData( _vNetData ); @@ -576,34 +543,6 @@ } [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))] static int _g_get_IsInJumpToDaZuo(RealStatePtr L) { try { ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L); Snxxz.UI.RealmModel gen_to_be_invoked = (Snxxz.UI.RealmModel)translator.FastGetCSObj(L, 1); LuaAPI.lua_pushboolean(L, gen_to_be_invoked.IsInJumpToDaZuo); } catch(System.Exception gen_e) { return LuaAPI.luaL_error(L, "c# exception:" + gen_e); } return 1; } [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))] static int _g_get_playerSitDic(RealStatePtr L) { try { ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L); Snxxz.UI.RealmModel gen_to_be_invoked = (Snxxz.UI.RealmModel)translator.FastGetCSObj(L, 1); translator.Push(L, gen_to_be_invoked.playerSitDic); } catch(System.Exception gen_e) { return LuaAPI.luaL_error(L, "c# exception:" + gen_e); } return 1; } [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))] static int _g_get_realmRedpoint(RealStatePtr L) { try { @@ -686,36 +625,6 @@ Snxxz.UI.RealmModel gen_to_be_invoked = (Snxxz.UI.RealmModel)translator.FastGetCSObj(L, 1); gen_to_be_invoked.realmDungeonState = LuaAPI.lua_toboolean(L, 2); } catch(System.Exception gen_e) { return LuaAPI.luaL_error(L, "c# exception:" + gen_e); } return 0; } [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))] static int _s_set_IsInJumpToDaZuo(RealStatePtr L) { try { ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L); Snxxz.UI.RealmModel gen_to_be_invoked = (Snxxz.UI.RealmModel)translator.FastGetCSObj(L, 1); gen_to_be_invoked.IsInJumpToDaZuo = LuaAPI.lua_toboolean(L, 2); } catch(System.Exception gen_e) { return LuaAPI.luaL_error(L, "c# exception:" + gen_e); } return 0; } [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))] static int _s_set_playerSitDic(RealStatePtr L) { try { ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L); Snxxz.UI.RealmModel gen_to_be_invoked = (Snxxz.UI.RealmModel)translator.FastGetCSObj(L, 1); gen_to_be_invoked.playerSitDic = (System.Collections.Generic.Dictionary<uint, byte>)translator.GetObject(L, 2, typeof(System.Collections.Generic.Dictionary<uint, byte>)); } catch(System.Exception gen_e) { return LuaAPI.luaL_error(L, "c# exception:" + gen_e); System/Activity/ActivityNotifyBehaviour.cs
@@ -149,6 +149,16 @@ case DailyQuestType.CrossServerPk: WindowCenter.Instance.Open<CrossServerWin>(); break; case DailyQuestType.AllianceBoss1: dungeonModel.currentDungeon = new Dungeon(AllianceBossModel.DATAMAPID, 0); AllianceBossEntranceWin.dailyQuestId = (int)DailyQuestType.AllianceBoss1; WindowCenter.Instance.Open<AllianceBossEntranceWin>(); break; case DailyQuestType.AllianceBoss2: dungeonModel.currentDungeon = new Dungeon(AllianceBossModel.DATAMAPID, 1); AllianceBossEntranceWin.dailyQuestId = (int)DailyQuestType.AllianceBoss2; WindowCenter.Instance.Open<AllianceBossEntranceWin>(); break; } } else System/FairyAu/AllianceBossEntranceWin.cs
@@ -21,6 +21,7 @@ [SerializeField] Text m_Description; [SerializeField] ItemBehaviour[] m_Items; [SerializeField] Button m_Goto; [SerializeField] Button m_Close; AllianceBossModel allianceBossModel { get { return ModelCenter.Instance.GetModel<AllianceBossModel>(); } } DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } } @@ -35,6 +36,7 @@ protected override void AddListeners() { m_Goto.AddListener(GotoAllianceBoss); m_Close.AddListener(CloseClick); } protected override void OnPreOpen() System/Realm/PlayerSitHandler.cs
New file @@ -0,0 +1,37 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerSitHandler : Singleton<PlayerSitHandler> { public bool isSit { get; private set; } public Dictionary<uint, byte> playerSitDict { get; private set; } public void ReceivePackage(H0411_tagPlayerSit vNetData) { if (playerSitDict == null) { playerSitDict = new Dictionary<uint, byte>(); } playerSitDict[vNetData.PlayerID] = vNetData.Type; GActorPlayerBase playerBase = GAMgr.Instance.GetBySID(vNetData.PlayerID) as GActorPlayerBase; if (playerBase != null) { if (vNetData.Type == 0) { GA_Player player = playerBase as GA_Player; if (player != null) { player.StopMoveToPosition(); } playerBase.Dazuo(); } else if (vNetData.Type == 1) { playerBase.IdleImmediate(); } } } } System/Realm/PlayerSitHandler.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 1b34b1d36e3ce9d42b77359b37c09df5 timeCreated: 1552289981 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: