40 lines
1.2 KiB
C#
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);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|