using AX.InputSystem; using AX.MessageSystem; using System.Collections; using System.Collections.Generic; using UnityEngine; public class HookPipeControl : BaseTransformChange { public ParticleControlOfType water; protected override void Awake() { base.Awake(); water = transform.Find("WaterStraight").GetComponent(); MessageDispatcher.AddListener("W_COMMAND", WCommond); MessageDispatcher.AddListener("S_COMMAND", SCommond); } protected override void OnDestroy() { base.OnDestroy(); MessageDispatcher.RemoveListener("W_COMMAND", WCommond); MessageDispatcher.RemoveListener("S_COMMAND", SCommond); } private void SCommond(IMessage message) { var gameObjID = (long)message.Sender; if (gameObjID == GetComponent().GameObjID) { if (!GetComponent().enabled) {//连接水源后会设置不可拖动,连接水源后不能上下拖动 return; } var speed = ((WeightCmdArgs)message.Data).Weight; if (transform.position.y - speed > 0) { transform.position -= Vector3.up * speed; } YDragData arg = new YDragData() { name = gameObject.name, id = GetComponent().GameObjID, Position = transform.position, }; RecordEvent.AddEventData(CloneObjType.None, RecordEventType.ObjDraging, JsonUtility.ToJson(arg)); } } private void WCommond(IMessage message) { var gameObjID = (long)message.Sender; if (gameObjID == GetComponent().GameObjID) { if (!GetComponent().enabled) {//连接水源后会设置不可拖动,连接水源后不能上下拖动 return; } var speed = ((WeightCmdArgs)message.Data).Weight; if (transform.position.y > 0) { transform.position += Vector3.up * speed; } YDragData arg = new YDragData() { name = gameObject.name, id = GetComponent().GameObjID, Position = transform.position, }; RecordEvent.AddEventData(CloneObjType.None, RecordEventType.ObjDraging, JsonUtility.ToJson(arg)); } } protected override void ReplayEvent(IMessage obj) { var eventData = (EventData)obj.Data; if (eventData.eventType == RecordEventType.WaterSprayU) { RecordSprayerRotation data = JsonUtility.FromJson(eventData.json); if (data.gameObjID == GetComponent().gameObjID) { transform.localEulerAngles = data.rotation; } } else if (eventData.eventType == RecordEventType.WaterSprayA) { RecordSprayerRotation data = JsonUtility.FromJson(eventData.json); if (data.gameObjID == GetComponent().gameObjID) { transform.localEulerAngles = data.rotation; } } else if (eventData.eventType == RecordEventType.WaterSprayPlus) { if (eventData.json == gameObject.name) { water.Increase(0.1f); } } else if (eventData.eventType == RecordEventType.WaterSprayMinus) { if (eventData.json == gameObject.name) { water.Decrease(0.1f); } } else if (eventData.eventType == RecordEventType.ObjDraging) { YDragData data = JsonUtility.FromJson(eventData.json); if (data.name == gameObject.name) { transform.position = data.Position; } } } protected override void D(IMessage obj) { var gameObjID = (long)obj.Sender; if (gameObjID == GetComponent().GameObjID) { RotateD(); //AddRecordEvent(RecordEventType.WaterSprayD); AddRecordADEvent(); } } protected override void A(IMessage obj) { var gameObjID = (long)obj.Sender; if (gameObjID == GetComponent().GameObjID) { RotateA(); //AddRecordEvent(RecordEventType.WaterSprayA); AddRecordADEvent(); } } protected override void J(IMessage obj) { var gameObjID = (long)obj.Sender; if (gameObjID == GetComponent().GameObjID) { RotateJ(); //AddRecordEvent(RecordEventType.WaterSprayJ); AddRecordUJEvent(); } } protected override void U(IMessage obj) { var gameObjID = (long)obj.Sender; if (gameObjID == GetComponent().GameObjID) { RotateU(); //AddRecordEvent(RecordEventType.WaterSprayU); AddRecordUJEvent(); } } protected override void PressureDown(IMessage obj) { var gameObjID = (long)obj.Sender; if (gameObjID == GetComponent().GameObjID) { water.Decrease(0.5f); AddRecordEvent(RecordEventType.WaterSprayMinus); } } protected override void PressureUp(IMessage obj) { var gameObjID = (long)obj.Sender; if (gameObjID == GetComponent().GameObjID) { water.Increase(0.5f); AddRecordEvent(RecordEventType.WaterSprayPlus); } } private void RotateU() { transform.Rotate(0, -Time.deltaTime * 40, 0, Space.Self); } private void RotateJ() { transform.Rotate(0, Time.deltaTime * 40, 0, Space.Self); } private void RotateA() { transform.Rotate(0, 0, Time.deltaTime * 40, Space.Self); } private void RotateD() { transform.Rotate(0, 0, -Time.deltaTime * 40, Space.Self); } private void AddRecordUJEvent() { if (ReplaySetting.PlayStatus == PlayStatus.isEditor && RecordManager.Instance.recordStatus == RecordStatus.normal) { var eventData = new EventData(); eventData.time = RecordManager.Instance.RecordTimer; eventData.cloneObjType = GetComponent().gameObjType; eventData.eventType = RecordEventType.WaterSprayU; RecordSprayerRotation data = new RecordSprayerRotation(); data.gameObjID = GetComponent().gameObjID; data.rotation = transform.localEulerAngles; eventData.json = JsonUtility.ToJson(data); RecordManager.Instance.jsonData.eventDataList.Add(eventData); } } private void AddRecordADEvent() { if (ReplaySetting.PlayStatus == PlayStatus.isEditor && RecordManager.Instance.recordStatus == RecordStatus.normal) { var eventData = new EventData(); eventData.time = RecordManager.Instance.RecordTimer; eventData.cloneObjType = GetComponent().gameObjType; eventData.eventType = RecordEventType.WaterSprayA; RecordSprayerRotation data = new RecordSprayerRotation(); data.gameObjID = GetComponent().gameObjID; data.rotation = obj.transform.localEulerAngles; eventData.json = JsonUtility.ToJson(data); RecordManager.Instance.jsonData.eventDataList.Add(eventData); } } public float GetWaterScale() { return water.GetScaleValue(); } public void SetWaterScale(float value) { water.SetScaleValue(value); } }