CTT/Server/Hotfix/Game/Handler/User/G2M_UserOffLineHandler.cs

40 lines
1.2 KiB
C#

namespace ET
{
[ActorMessageHandler]
public class G2M_UserOffLineHandler : AMActorHandler<Scene, G2M_UserOffLine>
{
protected override async ETTask Run(Scene scene, G2M_UserOffLine message)
{
try
{
var unit = MapUnitComponent.Instance.Get(message.Id);
if (!unit)
{
Log.Info($"unit == null where id = {message.Id} when offLine");
return;
}
Team team = TeamComponent.Instance.Get(unit.TeamLeaderId);
if (team == null)
{
Log.Error($"team == null where {unit}");
}else
if (team.TeamState == TeamState.Fight)
{
unit.IsOffline = true;
team.AddOffLineId(unit);
return;
}
MapUnitComponent.Instance.OffLine(unit.Id);
await Game.EventSystem.Publish(new EventType.UnitOffline { unit = unit });
await ETTask.CompletedTask;
}
catch (System.Exception e)
{
Log.Error(e);
}
}
}
}