feat: add in game command handler

This commit is contained in:
Naruse
2025-06-14 14:13:48 +08:00
parent 684eab933b
commit 07ec2f9abf
10 changed files with 201 additions and 34 deletions

View File

@@ -0,0 +1,31 @@
using KianaBH.GameServer.Command;
using KianaBH.GameServer.Game.Player;
using KianaBH.GameServer.Server.Packet.Send.Chat;
using KianaBH.Proto;
using KianaBH.Util.Extensions;
namespace KianaBH.GameServer.Game.Battle;
public class WorldChatManager(PlayerInstance player) : BasePlayerManager(player)
{
public List<ChatMsg> Chats { get; set; } = [];
public async ValueTask SendMessage(string message, ChatMsg chatMsg)
{
chatMsg.Uid = (uint)Player.Data.Uid;
chatMsg.Nickname = Player.Data.Name;
chatMsg.Time = (uint)Extensions.GetUnixSec();
chatMsg.AvatarId = (uint)Player.Data.AssistantAvatarId;
chatMsg.DressId = (uint)Player.AvatarManager!.AvatarData.Avatars.Where(avatar => avatar.AvatarId == Player.Data.AssistantAvatarId).First().DressId;
chatMsg.FrameId = (uint)Player.Data.HeadFrame;
chatMsg.CustomHeadId = (uint)Player.Data.HeadIcon;
await Player.SendPacket(new PacketRecvChatMsgNotify(chatMsg));
if (message.StartsWith('/') == true)
{
var cmd = message[1..];
CommandExecutor.ExecuteCommand(new PlayerCommandSender(Player), cmd);
}
}
}

View File

@@ -4,6 +4,7 @@ using KianaBH.Database.Account;
using KianaBH.Database.Client;
using KianaBH.Database.Player;
using KianaBH.GameServer.Game.Avatar;
using KianaBH.GameServer.Game.Battle;
using KianaBH.GameServer.Game.Inventory;
using KianaBH.GameServer.Server;
using KianaBH.KcpSharp;
@@ -20,6 +21,7 @@ public class PlayerInstance(PlayerData data)
public PlayerData Data { get; set; } = data;
public ClientData? ClientData { get; private set; }
public GuideData? GuideData { get; private set; }
public WorldChatManager? WorldChatManager { get; private set; }
public int Uid { get; set; }
public Connection? Connection { get; set; }
public bool Initialized { get; set; }
@@ -53,6 +55,7 @@ public class PlayerInstance(PlayerData data)
InventoryManager = new InventoryManager(this);
ClientData = InitializeDatabase<ClientData>();
GuideData = InitializeDatabase<GuideData>();
WorldChatManager = new WorldChatManager(this);
Data.LastActiveTime = Extensions.GetUnixSec();
await Task.CompletedTask;