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); } } }