unityzgy/Assets/Scripts/PublicTool/SyncGO/NetSyncCtrl/Sender/CarSyncSender.cs
ayuan9957 bf12e02276 feat: 多语言本地化系统 - 支持中/英/法/俄实时切换
- LocalizationManager: 新增翻译表(SetFormatted/SetDuration/LocalizeOperateMsg)
- LoginPanel: InputField placeholder本地化、字体颜色保持
- HistoryPanel: 用时数据本地化、placeholder本地化
- RecordDetailPanel: 操作详情消息本地化(LanguageChanged重建)
- AppraiseWindowBase: 评价等级本地化、操作消息重建
- EditorAppraiser: 所有评估消息改用InjectOperateMsgLocalized
- StudentOperateRecorder: 新增InjectOperateMsgLocalized方法
- LocalizationLanguageTestBar: 单例模式、ScreenSpaceOverlay筛选
- 字体切换时保留颜色和verticalOverflow
2026-07-16 10:05:59 +08:00

94 lines
2.4 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XFramework;
using XFramework.NetOuter;
/// <summary>
/// 车辆同步信息发送
/// </summary>
public class CarSyncSender : StateSyncSenderBase
{
CarCtrl carCtrl;
TransGesture trans;
bool waitYield;//等待到达指定目标点后 放弃控制权
// Start is called before the first frame update
protected override void Awake()
{
base.Awake();
carCtrl = this.GetComponent<CarCtrl>();
carCtrl.selcetChangedEvent += SelectChanged;
}
//车辆选中状态变化
private void SelectChanged(bool value)
{
if (value)//选中时
{
carCtrl.carStateChangedEvent += CarStateChanged;
waitYield = false;//关闭放弃标志
SendSyncAction(NetActionType.getCtrl);
}
else
{
if (carCtrl.CarState == CarState.moving)//移动中 标记为待放开 移动完成后 放开控制权
{
waitYield = true;
}
else
{
YieldContrl();
}
}
}
//车辆状态变化
private void CarStateChanged(CarState state)
{
switch (state)
{
case CarState.moving://移动时加入状态同步队列
JoinSendList();
break;
case CarState.parking://驻车时移除队列
ExitSendList();
if (waitYield)//驻车时如果被标记了等待放开 则放开控制权
{
YieldContrl();
}
break;
case CarState.openingAnim:
SendSyncAction(NetActionType.openAnima);
break;
case CarState.closingAnim:
SendSyncAction(NetActionType.closeAnima);
break;
default:
break;
}
}
//放弃控制权
private void YieldContrl()
{
carCtrl.carStateChangedEvent -= CarStateChanged;
SendSyncAction(NetActionType.yeildCtrl);
}
public override Type GetMsgType()
{
return typeof(TransGesture);
}
public override object GetSyncMsg()
{
trans = new TransGesture(this.transform.position,this.transform.eulerAngles);
return trans;
}
}