49 lines
1.3 KiB
C#
49 lines
1.3 KiB
C#
using System.Diagnostics;
|
|
using Fantasy;
|
|
using Fantasy.Async;
|
|
using Fantasy.Network;
|
|
using Fantasy.Network.Interface;
|
|
using Fantasy.PacketParser;
|
|
|
|
namespace NB.Gate;
|
|
|
|
public class Chat2G_ChatMessageHandler : Route<Scene, Chat2G_ChatMessage>
|
|
{
|
|
protected override async FTask Run(Scene scene, Chat2G_ChatMessage message)
|
|
{
|
|
var chatMessage = new Chat2C_Message()
|
|
{
|
|
Message = message.Message,
|
|
};
|
|
var idList = message.IdList;
|
|
bool isAll = !(idList != null && idList.Count > 0);
|
|
|
|
var gateUnitManage = scene.GetComponent<GateUnitManageComponent>();
|
|
|
|
if (isAll)
|
|
{
|
|
foreach (var session in gateUnitManage.ForEachUnitSession())
|
|
{
|
|
session.Send(chatMessage);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (idList == null) return;
|
|
foreach (var (_, gateUnit) in gateUnitManage.Units)
|
|
{
|
|
if (gateUnit.AccountID > 0 && idList.Contains(gateUnit.AccountID))
|
|
{
|
|
Session session = gateUnit.Session;
|
|
if (session != null)
|
|
{
|
|
session.Send(chatMessage);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
await FTask.CompletedTask;
|
|
}
|
|
} |