From 6eb915c129fc90c6f4c82ae097dd6ffad5239efc Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 25 Jan 2021 14:28:30 +0800 Subject: +scripts --- Client/Assets/Scripts/XMainClient/XPlayerAction.cs | 247 +++++++++++++++++++++ 1 file changed, 247 insertions(+) create mode 100644 Client/Assets/Scripts/XMainClient/XPlayerAction.cs (limited to 'Client/Assets/Scripts/XMainClient/XPlayerAction.cs') diff --git a/Client/Assets/Scripts/XMainClient/XPlayerAction.cs b/Client/Assets/Scripts/XMainClient/XPlayerAction.cs new file mode 100644 index 00000000..390e8ec0 --- /dev/null +++ b/Client/Assets/Scripts/XMainClient/XPlayerAction.cs @@ -0,0 +1,247 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using XMainClient.UI; +using XMainClient.UI.UICommon; +using XUtliPoolLib; + +namespace XMainClient +{ + internal class XPlayerAction : IXPlayerAction, IXInterface + { + public bool Deprecated { get; set; } + + public bool IsValid + { + get + { + return XSingleton.singleton.SceneReady && XEntity.ValideEntity(XSingleton.singleton.Player) && !XSingleton.singleton.Player.IsCorrectingMe; + } + } + + private Vector3 _last_pos = Vector3.zero; + + private Vector3 _last_pos_driver = Vector3.zero; + + private XCameraWallComponent _component = null; + + public void CameraWallEnter(AnimationCurve curve, Vector3 intersection, Vector3 cornerdir, float sector, float inDegree, float outDegree, bool positive) + { + bool flag = sector > 0f; + if (flag) + { + bool flag2 = this._component == null; + if (flag2) + { + this._component = (XSingleton.singleton.GameCamera.GetXComponent(XCameraWallComponent.uuID) as XCameraWallComponent); + } + this._component.Effect(curve, intersection, cornerdir, sector, inDegree, outDegree, positive); + } + } + + public void CameraWallExit(float angle) + { + bool flag = this._component == null; + if (flag) + { + this._component = (XSingleton.singleton.GameCamera.GetXComponent(XCameraWallComponent.uuID) as XCameraWallComponent); + } + this._component.EndEffect(); + } + + public void CameraWallVertical(float angle) + { + bool flag = this._component == null; + if (flag) + { + this._component = (XSingleton.singleton.GameCamera.GetXComponent(XCameraWallComponent.uuID) as XCameraWallComponent); + } + this._component.VerticalEffect(angle); + } + + public void SetExternalString(string exString, bool bOnce) + { + bool syncMode = XSingleton.singleton.SyncMode; + if (syncMode) + { + PtcC2G_AddLevelScriptExtString ptcC2G_AddLevelScriptExtString = new PtcC2G_AddLevelScriptExtString(); + ptcC2G_AddLevelScriptExtString.Data.extString = exString; + XSingleton.singleton.Send(ptcC2G_AddLevelScriptExtString); + } + else + { + XSingleton.singleton.SetExternalString(exString, bOnce); + } + } + + public void PlayCutScene(string cutscene) + { + XSingleton.singleton.AddErrorLog("Cutscene wall is depracated.", null, null, null, null, null); + } + + public void TransferToSceneLocation(Vector3 pos, Vector3 forward) + { + bool syncMode = XSingleton.singleton.SyncMode; + if (!syncMode) + { + XOnEntityTransferEventArgs @event = XEventPool.GetEvent(); + @event.Firer = XSingleton.singleton.Player; + XSingleton.singleton.FireEvent(@event); + List ally = XSingleton.singleton.GetAlly(XSingleton.singleton.Player); + for (int i = 0; i < ally.Count; i++) + { + bool flag = ally[i] != XSingleton.singleton.Player; + if (flag) + { + XOnEntityTransferEventArgs event2 = XEventPool.GetEvent(); + event2.Firer = ally[i]; + XSingleton.singleton.FireEvent(event2); + bool flag2 = ally[i].MobbedBy != null && ally[i].MobbedBy.IsRole && ally[i].Attributes != null && ally[i].Attributes.RunSpeed > 0f; + if (flag2) + { + bool flag3 = ally[i].Nav != null; + if (flag3) + { + ally[i].Nav.Interrupt(); + } + ally[i].CorrectMe(pos, forward, false, true); + } + } + } + XSingleton.singleton.Player.CorrectMe(pos, forward, false, true); + } + } + + public void TransferToNewScene(uint sceneID) + { + XSingleton.singleton.SwitchTo(XSingleton.singleton.CurrentStage.Stage, sceneID); + } + + public void GotoBattle() + { + bool flag = XSingleton.singleton.IsRecording(); + if (!flag) + { + XTaskDocument specificDocument = XDocuments.GetSpecificDocument(XTaskDocument.uuID); + bool flag2 = !XSingleton.singleton.Player.IsNavigating || (XSingleton.singleton.Player.IsNavigating && XSingleton.singleton.LastNpc == null && specificDocument.NaviTarget == 1); + bool flag3 = flag2 && XSingleton.singleton.Player.Net.SyncSequence > 1u; + if (flag3) + { + bool flag4 = XSingleton.singleton.IsUIShowed(); + if (flag4) + { + this.AdjustPosForDungeonEnter(null); + specificDocument.ResetNavi(); + } + else + { + bool inTutorial = XSingleton.singleton.InTutorial; + if (!inTutorial) + { + XSingleton.singleton.OnGenericClick(); + DlgBase.singleton.SetAutoSelectScene((int)specificDocument.NaviScene, 0, 0u); + DlgBase.singleton.FadeShow(); + XSingleton.singleton.Player.Nav.Interrupt(); + XSingleton.singleton.Player.Net.ReportMoveAction(Vector3.zero, 0.0); + XSingleton.singleton.Freezed = true; + XSingleton.singleton.SetTimer(0.5f, new XTimerMgr.ElapsedEventHandler(this.AdjustPosForDungeonEnter), null); + } + } + } + } + } + + public void GotoTerritoryBattle(int index) + { + XSingleton.singleton.AddGreenLog("enter scene: " + index, null, null, null, null, null); + XGuildTerritoryDocument specificDocument = XDocuments.GetSpecificDocument(XGuildTerritoryDocument.uuID); + specificDocument.SendGCFEnterin(index); + } + + public void GotoNest() + { + bool flag = !XSingleton.singleton.Player.IsNavigating || (XSingleton.singleton.Player.IsNavigating && XSingleton.singleton.LastNpc == null && DlgBase.singleton._TaskNaviHandler.IsNavigateToBattle == 2); + bool flag2 = flag && XSingleton.singleton.IsSystemOpened(XSysDefine.XSys_Activity_DragonNest); + if (flag2) + { + bool flag3 = XSingleton.singleton.IsUIShowed(); + if (flag3) + { + this.AdjustPosForDungeonEnter(null); + } + else + { + XSingleton.singleton.OnGenericClick(); + DlgBase.singleton.SetVisibleWithAnimation(true, null); + XSingleton.singleton.Player.Nav.Interrupt(); + XSingleton.singleton.Player.Net.ReportMoveAction(Vector3.zero, 0.0); + XSingleton.singleton.Freezed = true; + XSingleton.singleton.SetTimer(0.5f, new XTimerMgr.ElapsedEventHandler(this.AdjustPosForDungeonEnter), null); + } + } + } + + public void GotoFishing(int seatIndex, bool bFishing) + { + XHomeFishingDocument specificDocument = XDocuments.GetSpecificDocument(XHomeFishingDocument.uuID); + specificDocument.SetFishingUIState(bFishing); + } + + public void GotoYororuya() + { + bool flag = !XSingleton.singleton.Player.IsNavigating || (XSingleton.singleton.Player.IsNavigating && XSingleton.singleton.LastNpc == null && DlgBase.singleton._TaskNaviHandler.IsNavigateToBattle == 2); + bool flag2 = flag && XSingleton.singleton.IsSystemOpened(XSysDefine.XSys_Yorozuya); + if (flag2) + { + bool flag3 = XSingleton.singleton.IsUIShowed(); + if (flag3) + { + this.AdjustPosForDungeonEnter(null); + } + else + { + bool inTutorial = XSingleton.singleton.InTutorial; + if (!inTutorial) + { + XSingleton.singleton.OnGenericClick(); + DlgBase.singleton.SetVisible(true, true); + XSingleton.singleton.Player.Nav.Interrupt(); + XSingleton.singleton.Player.Net.ReportMoveAction(Vector3.zero, 0.0); + XSingleton.singleton.Freezed = true; + XSingleton.singleton.SetTimer(0.5f, new XTimerMgr.ElapsedEventHandler(this.AdjustPosForDungeonEnter), null); + } + } + } + } + + public Vector3 PlayerPosition(bool notplayertrigger) + { + Vector3 position; + if (notplayertrigger) + { + position = XSingleton.singleton.Dirver.EngineObject.Position; + } + else + { + position = XSingleton.singleton.Player.EngineObject.Position; + } + return position; + } + + public Vector3 PlayerLastPosition(bool notplayertrigger) + { + return notplayertrigger ? this._last_pos_driver : this._last_pos; + } + + public void RefreshPosition() + { + this._last_pos = (XEntity.ValideEntity(XSingleton.singleton.Player) ? XSingleton.singleton.Player.EngineObject.Position : this._last_pos); + this._last_pos_driver = ((XSingleton.singleton.Dirver == XSingleton.singleton.Player) ? this._last_pos : (XEntity.ValideEntity(XSingleton.singleton.Dirver) ? XSingleton.singleton.Dirver.EngineObject.Position : this._last_pos_driver)); + } + + private void AdjustPosForDungeonEnter(object o) + { + XSingleton.singleton.Player.Net.ReportMoveAction(XSingleton.singleton.Player.MoveObj.Position - XSingleton.singleton.Player.MoveObj.Forward * 2f, 0f, false, false, true, 0f); + } + } +} -- cgit v1.1-26-g67d0