协议定义

This commit is contained in:
bob
2025-08-12 17:28:22 +08:00
parent 15723850c0
commit f8b876ca2f
19 changed files with 1150 additions and 329 deletions

View File

@@ -30,3 +30,9 @@ message Chat2G_ChatMessage // IRouteMessage
{ {
ChatMessageInfo Message = 1; //聊天内容 ChatMessageInfo Message = 1; //聊天内容
} }
///创建聊天频道
message Club2Chat_CreateChannel // IRouteMessage
{
int64 ChannelId = 1; //频道id
}

View File

@@ -0,0 +1,86 @@
syntax = "proto3";
package Fantasy.Network.Message;
///请求邮件列表
message C2Game_GetMailsRequest // ICustomRouteRequest,Game2C_GetMailsResponse,GameRoute
{
}
///获取邮件列表响应
message Game2C_GetMailsResponse // ICustomRouteResponse
{
repeated MailInfo Mail = 1;
}
///新邮件推送
message Game2C_HaveMail // ICustomRouteMessage,GameRoute
{
MailInfo Mail = 1;
}
message Game2C_MailState // ICustomRouteMessage,GameRoute
{
int32 MailState = 1;
int64 MailId = 2;
}
////////////// ******** 聊天 *******/////////////
///创建频道
message C2Chat_CreateChannelRequest // ICustomRouteRequest,Caht2C_CreateChannelResponse,ChatRoute
{
string Name = 1; //频道名称
}
///创建频道响应
message Caht2C_CreateChannelResponse // ICustomRouteResponse
{
int64 ChannelId = 1; //创建的频道id
}
///请求进入频道
message C2Chat_JoinChannelRequest // ICustomRouteRequest,Caht2C_JoinChannelResponse,ChatRoute
{
int64 Target = 1; // 频道id
}
///进入频道响应
message Caht2C_JoinChannelResponse // ICustomRouteResponse
{
}
///发送聊天
message C2Chat_SendMessageRequest // ICustomRouteRequest,Caht2C_SendMessageResponse,ChatRoute
{
int32 Type = 1; //消息类型 0.频道聊天 1.私聊
string Message = 2;
int64 Target = 3; //目标id频道id或者好友id
}
///发送聊天响应
message Caht2C_SendMessageResponse // ICustomRouteResponse
{
}
///推送消息
message Chat2C_Message // ICustomRouteMessage,ChatRoute
{
ChatMessageInfo Message = 1;
}
///获取聊天记录请求
message C2Chat_GetChatRecordRequest // ICustomRouteRequest,Caht2C_GetChatRecordResponse,ChatRoute
{
int64 Target = 1; // 好友id或频道id
int32 Type = 2; // 获取聊天记录类型 0.频道 1.好友
}
///获取聊天记录响应
message Caht2C_GetChatRecordResponse // ICustomRouteResponse
{
repeated ChatMessageInfo Messages = 1; //聊天记录
}

View File

@@ -2,7 +2,6 @@ syntax = "proto3";
package Fantasy.Network.Message; package Fantasy.Network.Message;
// 协议分为: // 协议分为:
// ProtoBuf:可以在Outer和Inner文件里使用。 // ProtoBuf:可以在Outer和Inner文件里使用。
// MemoryPack:可以在Outer和Inner文件里使用。 // MemoryPack:可以在Outer和Inner文件里使用。
@@ -51,65 +50,5 @@ message C2Game_GetRoleInfoRequest // ICustomRouteRequest,Game2C_GetRoleInfoRespo
message Game2C_GetRoleInfoResponse // ICustomRouteResponse message Game2C_GetRoleInfoResponse // ICustomRouteResponse
{ {
string Name; RoleSimpleInfo Roles = 1; //角色列表
string RoleId;
}
///请求邮件列表
message C2Game_GetMailsRequest // ICustomRouteRequest,Game2C_GetMailsResponse,GameRoute
{
}
///获取邮件列表响应
message Game2C_GetMailsResponse // ICustomRouteResponse
{
repeated MailInfo Mail = 1;
}
///新邮件推送
message Game2C_HaveMail // ICustomRouteMessage,GameRoute
{
MailInfo Mail = 1;
}
message Game2C_MailState // ICustomRouteMessage,GameRoute
{
int32 MailState = 1;
int64 MailId = 2;
}
message C2Chat_JoinChannelRequest // ICustomRouteRequest,Caht2C_JoinChannelResponse,ChatRoute
{
int64 Target = 1; // 频道id
}
///进入频道响应
message Caht2C_JoinChannelResponse // ICustomRouteResponse
{
}
///发送聊天
message C2Chat_SendMessageRequest // ICustomRouteRequest,Caht2C_SendMessageResponse,ChatRoute
{
int32 Type = 1; //消息类型 0.频道聊天 1.私聊
string Message = 2;
int64 Target = 3; //目标id频道id或者好友id
}
///发送聊天响应
message Caht2C_SendMessageResponse // ICustomRouteResponse
{
}
///推送消息
message Chat2C_Message // ICustomRouteMessage,ChatRoute
{
ChatMessageInfo Message = 1;
}
message C2G_LoginRequest1 // IRequest,G2C_LoginResponse
{
string ToKen = 1;
} }

View File

@@ -0,0 +1,116 @@
syntax = "proto3";
package Fantasy.Network.Message;
message ClubInfo
{
int64 Id = 1; //工会ID
string Name = 2; //工会名称
int64 CreateTime = 3; //创建时间
int64 OwnerId = 4; //工会创建者ID
int32 MemberCount = 5; //成员数量
}
///请求创建工会
message C2S_CreateRequest // ICustomRouteRequest,Caht2C_GetChatRecordResponse,SocialRoute
{
string Name = 1; //工会名称
}
///创建工会响应
message S2C_CreateResponse // ICustomRouteResponse
{
ClubInfo Club = 1; //创建的工会信息
}
///请求工会信息
message C2S_GetClubInfoRequest // ICustomRouteRequest,S2C_GetClubInfoResponse,SocialRoute
{
int64 ClubId = 1; //工会ID
}
///响应工会信息
message S2C_GetClubInfoResponse // ICustomRouteResponse
{
string Name = 1; //工会名称
}
/// 请求工会成员列表
message C2S_GetMemberListRequest // ICustomRouteRequest,S2C_GetMemberListResponse,SocialRoute
{
int64 ClubId = 1; //工会ID
}
/// 响应工会成员列表
message S2C_GetMemberListResponse // ICustomRouteResponse
{
repeated RoleSimpleInfo Members = 1; //工会成员列表
}
///获取工会列表请求
message C2S_GetClubListRequest // ICustomRouteRequest,S2C_GetClubListResponse,SocialRoute
{
}
///获取工会列表响应
message S2C_GetClubListResponse // ICustomRouteResponse
{
repeated ClubInfo Clubs = 1; //工会列表
}
/// 请求加入工会
message C2S_JoinClubRequest // ICustomRouteRequest,S2C_JoinClubResponse,SocialRoute
{
int64 ClubId = 1; //工会ID
}
/// 响应加入工会
message S2C_JoinClubResponse // ICustomRouteResponse
{
ClubInfo Club = 1; //加入的工会信息
}
/// 请求退出工会
message C2S_LeaveClubRequest // ICustomRouteRequest,S2C_LeaveClubResponse,SocialRoute
{
int64 ClubId = 1; //工会ID
}
/// 响应退出工会
message S2C_LeaveClubResponse // ICustomRouteResponse
{
int64 ClubId = 1; //退出的工会ID
}
/// 请求解散工会
message C2S_DissolveClubRequest // ICustomRouteRequest,S2C_DissolveClubResponse,SocialRoute
{
int64 ClubId = 1; //工会ID
}
/// 响应解散工会
message S2C_DissolveClubResponse // ICustomRouteResponse
{
int64 ClubId = 1; //解散的工会ID
}
/// 请求操作申请
message C2S_DisposeJoinRequest // ICustomRouteRequest,S2C_DisposeJoinResponse,SocialRoute
{
int64 ClubId = 1; //工会ID
int64 ApplicantId = 2; //申请人ID
int32 Agree = 3; //是否同意申请1表示同意0表示拒绝
}
/// 响应操作申请
message S2C_DisposeJoinResponse // ICustomRouteResponse
{
int64 ClubId = 1; //工会ID
int64 ApplicantId = 2; //申请人ID
int32 Agree = 3; //是否同意申请1表示同意0表示拒绝
}
///推送消息
message S2C_ClubChange // ICustomRouteMessage,SocialRoute
{
ClubInfo Club = 1;
int32 ChangeType = 2; //变更类型 0.创建 1.解散 2.加入 3.退出 4.申请处理
}

View File

@@ -2,3 +2,4 @@
GateRoute = 1001 // Gate GateRoute = 1001 // Gate
ChatRoute = 1002 // Chat ChatRoute = 1002 // Chat
GameRoute = 1003 // Game GameRoute = 1003 // Game
SocialRoute = 1004 // Social

View File

@@ -28,6 +28,8 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Folder Include="Game\Friend\" />
<Folder Include="Generate\NetworkProtocol\" />
<Folder Include="Map\" /> <Folder Include="Map\" />
</ItemGroup> </ItemGroup>

View File

@@ -0,0 +1,8 @@
using Fantasy.Entitas;
namespace NB.Club;
public class ClubManageComponent : Entity
{
public readonly Dictionary<long, Club> Clubs = new();
}

View File

@@ -0,0 +1,337 @@
using ProtoBuf;
using System.Collections.Generic;
using MongoDB.Bson.Serialization.Attributes;
using Fantasy;
using Fantasy.Network.Interface;
using Fantasy.Serialize;
// ReSharper disable InconsistentNaming
// ReSharper disable RedundantUsingDirective
// ReSharper disable RedundantOverriddenMember
// ReSharper disable PartialTypeWithSinglePart
// ReSharper disable UnusedAutoPropertyAccessor.Global
// ReSharper disable MemberCanBePrivate.Global
// ReSharper disable CheckNamespace
#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type.
#pragma warning disable CS8618
namespace Fantasy
{
/// <summary>
/// 请求邮件列表
/// </summary>
[ProtoContract]
public partial class C2Game_GetMailsRequest : AMessage, ICustomRouteRequest, IProto
{
public static C2Game_GetMailsRequest Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<C2Game_GetMailsRequest>();
}
public override void Dispose()
{
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<C2Game_GetMailsRequest>(this);
#endif
}
[ProtoIgnore]
public Game2C_GetMailsResponse ResponseType { get; set; }
public uint OpCode() { return OuterOpcode.C2Game_GetMailsRequest; }
[ProtoIgnore]
public int RouteType => Fantasy.RouteType.GameRoute;
}
/// <summary>
/// 获取邮件列表响应
/// </summary>
[ProtoContract]
public partial class Game2C_GetMailsResponse : AMessage, ICustomRouteResponse, IProto
{
public static Game2C_GetMailsResponse Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<Game2C_GetMailsResponse>();
}
public override void Dispose()
{
ErrorCode = default;
Mail.Clear();
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<Game2C_GetMailsResponse>(this);
#endif
}
public uint OpCode() { return OuterOpcode.Game2C_GetMailsResponse; }
[ProtoMember(1)]
public List<MailInfo> Mail = new List<MailInfo>();
[ProtoMember(2)]
public uint ErrorCode { get; set; }
}
/// <summary>
/// 新邮件推送
/// </summary>
[ProtoContract]
public partial class Game2C_HaveMail : AMessage, ICustomRouteMessage, IProto
{
public static Game2C_HaveMail Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<Game2C_HaveMail>();
}
public override void Dispose()
{
Mail = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<Game2C_HaveMail>(this);
#endif
}
public uint OpCode() { return OuterOpcode.Game2C_HaveMail; }
[ProtoIgnore]
public int RouteType => Fantasy.RouteType.GameRoute;
[ProtoMember(1)]
public MailInfo Mail { get; set; }
}
[ProtoContract]
public partial class Game2C_MailState : AMessage, ICustomRouteMessage, IProto
{
public static Game2C_MailState Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<Game2C_MailState>();
}
public override void Dispose()
{
MailState = default;
MailId = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<Game2C_MailState>(this);
#endif
}
public uint OpCode() { return OuterOpcode.Game2C_MailState; }
[ProtoIgnore]
public int RouteType => Fantasy.RouteType.GameRoute;
[ProtoMember(1)]
public int MailState { get; set; }
[ProtoMember(2)]
public long MailId { get; set; }
}
/// <summary>
/// /////////// ******** 聊天 *******/////////////
/// </summary>
/// <summary>
/// 创建频道
/// </summary>
[ProtoContract]
public partial class C2Chat_CreateChannelRequest : AMessage, ICustomRouteRequest, IProto
{
public static C2Chat_CreateChannelRequest Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<C2Chat_CreateChannelRequest>();
}
public override void Dispose()
{
Name = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<C2Chat_CreateChannelRequest>(this);
#endif
}
[ProtoIgnore]
public Caht2C_CreateChannelResponse ResponseType { get; set; }
public uint OpCode() { return OuterOpcode.C2Chat_CreateChannelRequest; }
[ProtoIgnore]
public int RouteType => Fantasy.RouteType.ChatRoute;
[ProtoMember(1)]
public string Name { get; set; }
}
/// <summary>
/// 创建频道响应
/// </summary>
[ProtoContract]
public partial class Caht2C_CreateChannelResponse : AMessage, ICustomRouteResponse, IProto
{
public static Caht2C_CreateChannelResponse Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<Caht2C_CreateChannelResponse>();
}
public override void Dispose()
{
ErrorCode = default;
ChannelId = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<Caht2C_CreateChannelResponse>(this);
#endif
}
public uint OpCode() { return OuterOpcode.Caht2C_CreateChannelResponse; }
[ProtoMember(1)]
public long ChannelId { get; set; }
[ProtoMember(2)]
public uint ErrorCode { get; set; }
}
/// <summary>
/// 请求进入频道
/// </summary>
[ProtoContract]
public partial class C2Chat_JoinChannelRequest : AMessage, ICustomRouteRequest, IProto
{
public static C2Chat_JoinChannelRequest Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<C2Chat_JoinChannelRequest>();
}
public override void Dispose()
{
Target = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<C2Chat_JoinChannelRequest>(this);
#endif
}
[ProtoIgnore]
public Caht2C_JoinChannelResponse ResponseType { get; set; }
public uint OpCode() { return OuterOpcode.C2Chat_JoinChannelRequest; }
[ProtoIgnore]
public int RouteType => Fantasy.RouteType.ChatRoute;
[ProtoMember(1)]
public long Target { get; set; }
}
/// <summary>
/// 进入频道响应
/// </summary>
[ProtoContract]
public partial class Caht2C_JoinChannelResponse : AMessage, ICustomRouteResponse, IProto
{
public static Caht2C_JoinChannelResponse Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<Caht2C_JoinChannelResponse>();
}
public override void Dispose()
{
ErrorCode = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<Caht2C_JoinChannelResponse>(this);
#endif
}
public uint OpCode() { return OuterOpcode.Caht2C_JoinChannelResponse; }
[ProtoMember(1)]
public uint ErrorCode { get; set; }
}
/// <summary>
/// 发送聊天
/// </summary>
[ProtoContract]
public partial class C2Chat_SendMessageRequest : AMessage, ICustomRouteRequest, IProto
{
public static C2Chat_SendMessageRequest Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<C2Chat_SendMessageRequest>();
}
public override void Dispose()
{
Type = default;
Message = default;
Target = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<C2Chat_SendMessageRequest>(this);
#endif
}
[ProtoIgnore]
public Caht2C_SendMessageResponse ResponseType { get; set; }
public uint OpCode() { return OuterOpcode.C2Chat_SendMessageRequest; }
[ProtoIgnore]
public int RouteType => Fantasy.RouteType.ChatRoute;
[ProtoMember(1)]
public int Type { get; set; }
[ProtoMember(2)]
public string Message { get; set; }
[ProtoMember(3)]
public long Target { get; set; }
}
/// <summary>
/// 发送聊天响应
/// </summary>
[ProtoContract]
public partial class Caht2C_SendMessageResponse : AMessage, ICustomRouteResponse, IProto
{
public static Caht2C_SendMessageResponse Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<Caht2C_SendMessageResponse>();
}
public override void Dispose()
{
ErrorCode = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<Caht2C_SendMessageResponse>(this);
#endif
}
public uint OpCode() { return OuterOpcode.Caht2C_SendMessageResponse; }
[ProtoMember(1)]
public uint ErrorCode { get; set; }
}
/// <summary>
/// 推送消息
/// </summary>
[ProtoContract]
public partial class Chat2C_Message : AMessage, ICustomRouteMessage, IProto
{
public static Chat2C_Message Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<Chat2C_Message>();
}
public override void Dispose()
{
Message = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<Chat2C_Message>(this);
#endif
}
public uint OpCode() { return OuterOpcode.Chat2C_Message; }
[ProtoIgnore]
public int RouteType => Fantasy.RouteType.ChatRoute;
[ProtoMember(1)]
public ChatMessageInfo Message { get; set; }
}
/// <summary>
/// 获取聊天记录请求
/// </summary>
[ProtoContract]
public partial class C2Chat_GetChatRecordRequest : AMessage, ICustomRouteRequest, IProto
{
public static C2Chat_GetChatRecordRequest Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<C2Chat_GetChatRecordRequest>();
}
public override void Dispose()
{
Target = default;
Type = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<C2Chat_GetChatRecordRequest>(this);
#endif
}
[ProtoIgnore]
public Caht2C_GetChatRecordResponse ResponseType { get; set; }
public uint OpCode() { return OuterOpcode.C2Chat_GetChatRecordRequest; }
[ProtoIgnore]
public int RouteType => Fantasy.RouteType.ChatRoute;
[ProtoMember(1)]
public long Target { get; set; }
[ProtoMember(2)]
public int Type { get; set; }
}
/// <summary>
/// 获取聊天记录响应
/// </summary>
[ProtoContract]
public partial class Caht2C_GetChatRecordResponse : AMessage, ICustomRouteResponse, IProto
{
public static Caht2C_GetChatRecordResponse Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<Caht2C_GetChatRecordResponse>();
}
public override void Dispose()
{
ErrorCode = default;
Messages.Clear();
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<Caht2C_GetChatRecordResponse>(this);
#endif
}
public uint OpCode() { return OuterOpcode.Caht2C_GetChatRecordResponse; }
[ProtoMember(1)]
public List<ChatMessageInfo> Messages = new List<ChatMessageInfo>();
[ProtoMember(2)]
public uint ErrorCode { get; set; }
}
}

View File

@@ -132,4 +132,25 @@ namespace Fantasy
[ProtoMember(1)] [ProtoMember(1)]
public ChatMessageInfo Message { get; set; } public ChatMessageInfo Message { get; set; }
} }
/// <summary>
/// 创建聊天频道
/// </summary>
[ProtoContract]
public partial class Club2Chat_CreateChannel : AMessage, IRouteMessage, IProto
{
public static Club2Chat_CreateChannel Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<Club2Chat_CreateChannel>();
}
public override void Dispose()
{
ChannelId = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<Club2Chat_CreateChannel>(this);
#endif
}
public uint OpCode() { return InnerOpcode.Club2Chat_CreateChannel; }
[ProtoMember(1)]
public long ChannelId { get; set; }
}
} }

View File

@@ -7,5 +7,6 @@ namespace Fantasy
public const uint G2Chat_EnterRequest = 1073751826; public const uint G2Chat_EnterRequest = 1073751826;
public const uint Chat2G_EnterResponse = 1207969554; public const uint Chat2G_EnterResponse = 1207969554;
public const uint Chat2G_ChatMessage = 939534097; public const uint Chat2G_ChatMessage = 939534097;
public const uint Club2Chat_CreateChannel = 939534098;
} }
} }

View File

@@ -181,248 +181,15 @@ namespace Fantasy
public override void Dispose() public override void Dispose()
{ {
ErrorCode = default; ErrorCode = default;
Name = default; Roles = default;
RoleId = default;
#if FANTASY_NET || FANTASY_UNITY #if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<Game2C_GetRoleInfoResponse>(this); GetScene().MessagePoolComponent.Return<Game2C_GetRoleInfoResponse>(this);
#endif #endif
} }
public uint OpCode() { return OuterOpcode.Game2C_GetRoleInfoResponse; } public uint OpCode() { return OuterOpcode.Game2C_GetRoleInfoResponse; }
[ProtoMember(1)] [ProtoMember(1)]
public string Name { get; set; } public RoleSimpleInfo Roles { get; set; }
[ProtoMember(2)]
public string RoleId { get; set; }
[ProtoMember(3)]
public uint ErrorCode { get; set; }
}
/// <summary>
/// 请求邮件列表
/// </summary>
[ProtoContract]
public partial class C2Game_GetMailsRequest : AMessage, ICustomRouteRequest, IProto
{
public static C2Game_GetMailsRequest Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<C2Game_GetMailsRequest>();
}
public override void Dispose()
{
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<C2Game_GetMailsRequest>(this);
#endif
}
[ProtoIgnore]
public Game2C_GetMailsResponse ResponseType { get; set; }
public uint OpCode() { return OuterOpcode.C2Game_GetMailsRequest; }
[ProtoIgnore]
public int RouteType => Fantasy.RouteType.GameRoute;
}
/// <summary>
/// 获取邮件列表响应
/// </summary>
[ProtoContract]
public partial class Game2C_GetMailsResponse : AMessage, ICustomRouteResponse, IProto
{
public static Game2C_GetMailsResponse Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<Game2C_GetMailsResponse>();
}
public override void Dispose()
{
ErrorCode = default;
Mail.Clear();
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<Game2C_GetMailsResponse>(this);
#endif
}
public uint OpCode() { return OuterOpcode.Game2C_GetMailsResponse; }
[ProtoMember(1)]
public List<MailInfo> Mail = new List<MailInfo>();
[ProtoMember(2)] [ProtoMember(2)]
public uint ErrorCode { get; set; } public uint ErrorCode { get; set; }
} }
/// <summary>
/// 新邮件推送
/// </summary>
[ProtoContract]
public partial class Game2C_HaveMail : AMessage, ICustomRouteMessage, IProto
{
public static Game2C_HaveMail Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<Game2C_HaveMail>();
}
public override void Dispose()
{
Mail = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<Game2C_HaveMail>(this);
#endif
}
public uint OpCode() { return OuterOpcode.Game2C_HaveMail; }
[ProtoIgnore]
public int RouteType => Fantasy.RouteType.GameRoute;
[ProtoMember(1)]
public MailInfo Mail { get; set; }
}
[ProtoContract]
public partial class Game2C_MailState : AMessage, ICustomRouteMessage, IProto
{
public static Game2C_MailState Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<Game2C_MailState>();
}
public override void Dispose()
{
MailState = default;
MailId = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<Game2C_MailState>(this);
#endif
}
public uint OpCode() { return OuterOpcode.Game2C_MailState; }
[ProtoIgnore]
public int RouteType => Fantasy.RouteType.GameRoute;
[ProtoMember(1)]
public int MailState { get; set; }
[ProtoMember(2)]
public long MailId { get; set; }
}
[ProtoContract]
public partial class C2Chat_JoinChannelRequest : AMessage, ICustomRouteRequest, IProto
{
public static C2Chat_JoinChannelRequest Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<C2Chat_JoinChannelRequest>();
}
public override void Dispose()
{
Target = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<C2Chat_JoinChannelRequest>(this);
#endif
}
[ProtoIgnore]
public Caht2C_JoinChannelResponse ResponseType { get; set; }
public uint OpCode() { return OuterOpcode.C2Chat_JoinChannelRequest; }
[ProtoIgnore]
public int RouteType => Fantasy.RouteType.ChatRoute;
[ProtoMember(1)]
public long Target { get; set; }
}
/// <summary>
/// 进入频道响应
/// </summary>
[ProtoContract]
public partial class Caht2C_JoinChannelResponse : AMessage, ICustomRouteResponse, IProto
{
public static Caht2C_JoinChannelResponse Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<Caht2C_JoinChannelResponse>();
}
public override void Dispose()
{
ErrorCode = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<Caht2C_JoinChannelResponse>(this);
#endif
}
public uint OpCode() { return OuterOpcode.Caht2C_JoinChannelResponse; }
[ProtoMember(1)]
public uint ErrorCode { get; set; }
}
/// <summary>
/// 发送聊天
/// </summary>
[ProtoContract]
public partial class C2Chat_SendMessageRequest : AMessage, ICustomRouteRequest, IProto
{
public static C2Chat_SendMessageRequest Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<C2Chat_SendMessageRequest>();
}
public override void Dispose()
{
Type = default;
Message = default;
Target = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<C2Chat_SendMessageRequest>(this);
#endif
}
[ProtoIgnore]
public Caht2C_SendMessageResponse ResponseType { get; set; }
public uint OpCode() { return OuterOpcode.C2Chat_SendMessageRequest; }
[ProtoIgnore]
public int RouteType => Fantasy.RouteType.ChatRoute;
[ProtoMember(1)]
public int Type { get; set; }
[ProtoMember(2)]
public string Message { get; set; }
[ProtoMember(3)]
public long Target { get; set; }
}
/// <summary>
/// 发送聊天响应
/// </summary>
[ProtoContract]
public partial class Caht2C_SendMessageResponse : AMessage, ICustomRouteResponse, IProto
{
public static Caht2C_SendMessageResponse Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<Caht2C_SendMessageResponse>();
}
public override void Dispose()
{
ErrorCode = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<Caht2C_SendMessageResponse>(this);
#endif
}
public uint OpCode() { return OuterOpcode.Caht2C_SendMessageResponse; }
[ProtoMember(1)]
public uint ErrorCode { get; set; }
}
/// <summary>
/// 推送消息
/// </summary>
[ProtoContract]
public partial class Chat2C_Message : AMessage, ICustomRouteMessage, IProto
{
public static Chat2C_Message Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<Chat2C_Message>();
}
public override void Dispose()
{
Message = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<Chat2C_Message>(this);
#endif
}
public uint OpCode() { return OuterOpcode.Chat2C_Message; }
[ProtoIgnore]
public int RouteType => Fantasy.RouteType.ChatRoute;
[ProtoMember(1)]
public ChatMessageInfo Message { get; set; }
}
[ProtoContract]
public partial class C2G_LoginRequest1 : AMessage, IRequest, IProto
{
public static C2G_LoginRequest1 Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<C2G_LoginRequest1>();
}
public override void Dispose()
{
ToKen = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<C2G_LoginRequest1>(this);
#endif
}
[ProtoIgnore]
public G2C_LoginResponse ResponseType { get; set; }
public uint OpCode() { return OuterOpcode.C2G_LoginRequest1; }
[ProtoMember(1)]
public string ToKen { get; set; }
}
} }

View File

@@ -2,22 +2,42 @@ namespace Fantasy
{ {
public static partial class OuterOpcode public static partial class OuterOpcode
{ {
public const uint C2A_LoginRequest = 268445457; public const uint C2Game_GetMailsRequest = 2281711377;
public const uint A2C_LoginResponse = 402663185; public const uint Game2C_GetMailsResponse = 2415929105;
public const uint C2G_LoginRequest = 268445458;
public const uint G2C_LoginResponse = 402663186;
public const uint G2C_RepeatLogin = 134227729;
public const uint C2Game_GetRoleInfoRequest = 2281711377;
public const uint Game2C_GetRoleInfoResponse = 2415929105;
public const uint C2Game_GetMailsRequest = 2281711378;
public const uint Game2C_GetMailsResponse = 2415929106;
public const uint Game2C_HaveMail = 2147493649; public const uint Game2C_HaveMail = 2147493649;
public const uint Game2C_MailState = 2147493650; public const uint Game2C_MailState = 2147493650;
public const uint C2Chat_CreateChannelRequest = 2281711378;
public const uint Caht2C_CreateChannelResponse = 2415929106;
public const uint C2Chat_JoinChannelRequest = 2281711379; public const uint C2Chat_JoinChannelRequest = 2281711379;
public const uint Caht2C_JoinChannelResponse = 2415929107; public const uint Caht2C_JoinChannelResponse = 2415929107;
public const uint C2Chat_SendMessageRequest = 2281711380; public const uint C2Chat_SendMessageRequest = 2281711380;
public const uint Caht2C_SendMessageResponse = 2415929108; public const uint Caht2C_SendMessageResponse = 2415929108;
public const uint Chat2C_Message = 2147493651; public const uint Chat2C_Message = 2147493651;
public const uint C2G_LoginRequest1 = 268445459; public const uint C2Chat_GetChatRecordRequest = 2281711381;
public const uint Caht2C_GetChatRecordResponse = 2415929109;
public const uint C2A_LoginRequest = 268445457;
public const uint A2C_LoginResponse = 402663185;
public const uint C2G_LoginRequest = 268445458;
public const uint G2C_LoginResponse = 402663186;
public const uint G2C_RepeatLogin = 134227729;
public const uint C2Game_GetRoleInfoRequest = 2281711382;
public const uint Game2C_GetRoleInfoResponse = 2415929110;
public const uint C2S_CreateRequest = 2281711383;
public const uint S2C_CreateResponse = 2415929111;
public const uint C2S_GetClubInfoRequest = 2281711384;
public const uint S2C_GetClubInfoResponse = 2415929112;
public const uint C2S_GetMemberListRequest = 2281711385;
public const uint S2C_GetMemberListResponse = 2415929113;
public const uint C2S_GetClubListRequest = 2281711386;
public const uint S2C_GetClubListResponse = 2415929114;
public const uint C2S_JoinClubRequest = 2281711387;
public const uint S2C_JoinClubResponse = 2415929115;
public const uint C2S_LeaveClubRequest = 2281711388;
public const uint S2C_LeaveClubResponse = 2415929116;
public const uint C2S_DissolveClubRequest = 2281711389;
public const uint S2C_DissolveClubResponse = 2415929117;
public const uint C2S_DisposeJoinRequest = 2281711390;
public const uint S2C_DisposeJoinResponse = 2415929118;
public const uint S2C_ClubChange = 2147493652;
} }
} }

View File

@@ -6,5 +6,6 @@ namespace Fantasy
public const int GateRoute = 1001; // Gate public const int GateRoute = 1001; // Gate
public const int ChatRoute = 1002; // Chat public const int ChatRoute = 1002; // Chat
public const int GameRoute = 1003; // Game public const int GameRoute = 1003; // Game
public const int SocialRoute = 1004; // Social
} }
} }

View File

@@ -0,0 +1,476 @@
using ProtoBuf;
using System.Collections.Generic;
using MongoDB.Bson.Serialization.Attributes;
using Fantasy;
using Fantasy.Network.Interface;
using Fantasy.Serialize;
// ReSharper disable InconsistentNaming
// ReSharper disable RedundantUsingDirective
// ReSharper disable RedundantOverriddenMember
// ReSharper disable PartialTypeWithSinglePart
// ReSharper disable UnusedAutoPropertyAccessor.Global
// ReSharper disable MemberCanBePrivate.Global
// ReSharper disable CheckNamespace
#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type.
#pragma warning disable CS8618
namespace Fantasy
{
[ProtoContract]
public partial class ClubInfo : AMessage, IProto
{
public static ClubInfo Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<ClubInfo>();
}
public override void Dispose()
{
Id = default;
Name = default;
CreateTime = default;
OwnerId = default;
MemberCount = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<ClubInfo>(this);
#endif
}
[ProtoMember(1)]
public long Id { get; set; }
[ProtoMember(2)]
public string Name { get; set; }
[ProtoMember(3)]
public long CreateTime { get; set; }
[ProtoMember(4)]
public long OwnerId { get; set; }
[ProtoMember(5)]
public int MemberCount { get; set; }
}
/// <summary>
/// 请求创建工会
/// </summary>
[ProtoContract]
public partial class C2S_CreateRequest : AMessage, ICustomRouteRequest, IProto
{
public static C2S_CreateRequest Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<C2S_CreateRequest>();
}
public override void Dispose()
{
Name = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<C2S_CreateRequest>(this);
#endif
}
[ProtoIgnore]
public Caht2C_GetChatRecordResponse ResponseType { get; set; }
public uint OpCode() { return OuterOpcode.C2S_CreateRequest; }
[ProtoIgnore]
public int RouteType => Fantasy.RouteType.SocialRoute;
[ProtoMember(1)]
public string Name { get; set; }
}
/// <summary>
/// 创建工会响应
/// </summary>
[ProtoContract]
public partial class S2C_CreateResponse : AMessage, ICustomRouteResponse, IProto
{
public static S2C_CreateResponse Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<S2C_CreateResponse>();
}
public override void Dispose()
{
ErrorCode = default;
Club = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<S2C_CreateResponse>(this);
#endif
}
public uint OpCode() { return OuterOpcode.S2C_CreateResponse; }
[ProtoMember(1)]
public ClubInfo Club { get; set; }
[ProtoMember(2)]
public uint ErrorCode { get; set; }
}
/// <summary>
/// 请求工会信息
/// </summary>
[ProtoContract]
public partial class C2S_GetClubInfoRequest : AMessage, ICustomRouteRequest, IProto
{
public static C2S_GetClubInfoRequest Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<C2S_GetClubInfoRequest>();
}
public override void Dispose()
{
ClubId = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<C2S_GetClubInfoRequest>(this);
#endif
}
[ProtoIgnore]
public S2C_GetClubInfoResponse ResponseType { get; set; }
public uint OpCode() { return OuterOpcode.C2S_GetClubInfoRequest; }
[ProtoIgnore]
public int RouteType => Fantasy.RouteType.SocialRoute;
[ProtoMember(1)]
public long ClubId { get; set; }
}
/// <summary>
/// 响应工会信息
/// </summary>
[ProtoContract]
public partial class S2C_GetClubInfoResponse : AMessage, ICustomRouteResponse, IProto
{
public static S2C_GetClubInfoResponse Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<S2C_GetClubInfoResponse>();
}
public override void Dispose()
{
ErrorCode = default;
Name = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<S2C_GetClubInfoResponse>(this);
#endif
}
public uint OpCode() { return OuterOpcode.S2C_GetClubInfoResponse; }
[ProtoMember(1)]
public string Name { get; set; }
[ProtoMember(2)]
public uint ErrorCode { get; set; }
}
/// <summary>
/// 请求工会成员列表
/// </summary>
[ProtoContract]
public partial class C2S_GetMemberListRequest : AMessage, ICustomRouteRequest, IProto
{
public static C2S_GetMemberListRequest Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<C2S_GetMemberListRequest>();
}
public override void Dispose()
{
ClubId = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<C2S_GetMemberListRequest>(this);
#endif
}
[ProtoIgnore]
public S2C_GetMemberListResponse ResponseType { get; set; }
public uint OpCode() { return OuterOpcode.C2S_GetMemberListRequest; }
[ProtoIgnore]
public int RouteType => Fantasy.RouteType.SocialRoute;
[ProtoMember(1)]
public long ClubId { get; set; }
}
/// <summary>
/// 响应工会成员列表
/// </summary>
[ProtoContract]
public partial class S2C_GetMemberListResponse : AMessage, ICustomRouteResponse, IProto
{
public static S2C_GetMemberListResponse Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<S2C_GetMemberListResponse>();
}
public override void Dispose()
{
ErrorCode = default;
Members.Clear();
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<S2C_GetMemberListResponse>(this);
#endif
}
public uint OpCode() { return OuterOpcode.S2C_GetMemberListResponse; }
[ProtoMember(1)]
public List<RoleSimpleInfo> Members = new List<RoleSimpleInfo>();
[ProtoMember(2)]
public uint ErrorCode { get; set; }
}
/// <summary>
/// 获取工会列表请求
/// </summary>
[ProtoContract]
public partial class C2S_GetClubListRequest : AMessage, ICustomRouteRequest, IProto
{
public static C2S_GetClubListRequest Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<C2S_GetClubListRequest>();
}
public override void Dispose()
{
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<C2S_GetClubListRequest>(this);
#endif
}
[ProtoIgnore]
public S2C_GetClubListResponse ResponseType { get; set; }
public uint OpCode() { return OuterOpcode.C2S_GetClubListRequest; }
[ProtoIgnore]
public int RouteType => Fantasy.RouteType.SocialRoute;
}
/// <summary>
/// 获取工会列表响应
/// </summary>
[ProtoContract]
public partial class S2C_GetClubListResponse : AMessage, ICustomRouteResponse, IProto
{
public static S2C_GetClubListResponse Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<S2C_GetClubListResponse>();
}
public override void Dispose()
{
ErrorCode = default;
Clubs.Clear();
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<S2C_GetClubListResponse>(this);
#endif
}
public uint OpCode() { return OuterOpcode.S2C_GetClubListResponse; }
[ProtoMember(1)]
public List<ClubInfo> Clubs = new List<ClubInfo>();
[ProtoMember(2)]
public uint ErrorCode { get; set; }
}
/// <summary>
/// 请求加入工会
/// </summary>
[ProtoContract]
public partial class C2S_JoinClubRequest : AMessage, ICustomRouteRequest, IProto
{
public static C2S_JoinClubRequest Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<C2S_JoinClubRequest>();
}
public override void Dispose()
{
ClubId = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<C2S_JoinClubRequest>(this);
#endif
}
[ProtoIgnore]
public S2C_JoinClubResponse ResponseType { get; set; }
public uint OpCode() { return OuterOpcode.C2S_JoinClubRequest; }
[ProtoIgnore]
public int RouteType => Fantasy.RouteType.SocialRoute;
[ProtoMember(1)]
public long ClubId { get; set; }
}
/// <summary>
/// 响应加入工会
/// </summary>
[ProtoContract]
public partial class S2C_JoinClubResponse : AMessage, ICustomRouteResponse, IProto
{
public static S2C_JoinClubResponse Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<S2C_JoinClubResponse>();
}
public override void Dispose()
{
ErrorCode = default;
Club = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<S2C_JoinClubResponse>(this);
#endif
}
public uint OpCode() { return OuterOpcode.S2C_JoinClubResponse; }
[ProtoMember(1)]
public ClubInfo Club { get; set; }
[ProtoMember(2)]
public uint ErrorCode { get; set; }
}
/// <summary>
/// 请求退出工会
/// </summary>
[ProtoContract]
public partial class C2S_LeaveClubRequest : AMessage, ICustomRouteRequest, IProto
{
public static C2S_LeaveClubRequest Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<C2S_LeaveClubRequest>();
}
public override void Dispose()
{
ClubId = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<C2S_LeaveClubRequest>(this);
#endif
}
[ProtoIgnore]
public S2C_LeaveClubResponse ResponseType { get; set; }
public uint OpCode() { return OuterOpcode.C2S_LeaveClubRequest; }
[ProtoIgnore]
public int RouteType => Fantasy.RouteType.SocialRoute;
[ProtoMember(1)]
public long ClubId { get; set; }
}
/// <summary>
/// 响应退出工会
/// </summary>
[ProtoContract]
public partial class S2C_LeaveClubResponse : AMessage, ICustomRouteResponse, IProto
{
public static S2C_LeaveClubResponse Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<S2C_LeaveClubResponse>();
}
public override void Dispose()
{
ErrorCode = default;
ClubId = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<S2C_LeaveClubResponse>(this);
#endif
}
public uint OpCode() { return OuterOpcode.S2C_LeaveClubResponse; }
[ProtoMember(1)]
public long ClubId { get; set; }
[ProtoMember(2)]
public uint ErrorCode { get; set; }
}
/// <summary>
/// 请求解散工会
/// </summary>
[ProtoContract]
public partial class C2S_DissolveClubRequest : AMessage, ICustomRouteRequest, IProto
{
public static C2S_DissolveClubRequest Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<C2S_DissolveClubRequest>();
}
public override void Dispose()
{
ClubId = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<C2S_DissolveClubRequest>(this);
#endif
}
[ProtoIgnore]
public S2C_DissolveClubResponse ResponseType { get; set; }
public uint OpCode() { return OuterOpcode.C2S_DissolveClubRequest; }
[ProtoIgnore]
public int RouteType => Fantasy.RouteType.SocialRoute;
[ProtoMember(1)]
public long ClubId { get; set; }
}
/// <summary>
/// 响应解散工会
/// </summary>
[ProtoContract]
public partial class S2C_DissolveClubResponse : AMessage, ICustomRouteResponse, IProto
{
public static S2C_DissolveClubResponse Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<S2C_DissolveClubResponse>();
}
public override void Dispose()
{
ErrorCode = default;
ClubId = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<S2C_DissolveClubResponse>(this);
#endif
}
public uint OpCode() { return OuterOpcode.S2C_DissolveClubResponse; }
[ProtoMember(1)]
public long ClubId { get; set; }
[ProtoMember(2)]
public uint ErrorCode { get; set; }
}
/// <summary>
/// 请求操作申请
/// </summary>
[ProtoContract]
public partial class C2S_DisposeJoinRequest : AMessage, ICustomRouteRequest, IProto
{
public static C2S_DisposeJoinRequest Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<C2S_DisposeJoinRequest>();
}
public override void Dispose()
{
ClubId = default;
ApplicantId = default;
Agree = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<C2S_DisposeJoinRequest>(this);
#endif
}
[ProtoIgnore]
public S2C_DisposeJoinResponse ResponseType { get; set; }
public uint OpCode() { return OuterOpcode.C2S_DisposeJoinRequest; }
[ProtoIgnore]
public int RouteType => Fantasy.RouteType.SocialRoute;
[ProtoMember(1)]
public long ClubId { get; set; }
[ProtoMember(2)]
public long ApplicantId { get; set; }
[ProtoMember(3)]
public int Agree { get; set; }
}
/// <summary>
/// 响应操作申请
/// </summary>
[ProtoContract]
public partial class S2C_DisposeJoinResponse : AMessage, ICustomRouteResponse, IProto
{
public static S2C_DisposeJoinResponse Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<S2C_DisposeJoinResponse>();
}
public override void Dispose()
{
ErrorCode = default;
ClubId = default;
ApplicantId = default;
Agree = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<S2C_DisposeJoinResponse>(this);
#endif
}
public uint OpCode() { return OuterOpcode.S2C_DisposeJoinResponse; }
[ProtoMember(1)]
public long ClubId { get; set; }
[ProtoMember(2)]
public long ApplicantId { get; set; }
[ProtoMember(3)]
public int Agree { get; set; }
[ProtoMember(4)]
public uint ErrorCode { get; set; }
}
/// <summary>
/// 推送消息
/// </summary>
[ProtoContract]
public partial class S2C_ClubChange : AMessage, ICustomRouteMessage, IProto
{
public static S2C_ClubChange Create(Scene scene)
{
return scene.MessagePoolComponent.Rent<S2C_ClubChange>();
}
public override void Dispose()
{
Club = default;
ChangeType = default;
#if FANTASY_NET || FANTASY_UNITY
GetScene().MessagePoolComponent.Return<S2C_ClubChange>(this);
#endif
}
public uint OpCode() { return OuterOpcode.S2C_ClubChange; }
[ProtoIgnore]
public int RouteType => Fantasy.RouteType.SocialRoute;
[ProtoMember(1)]
public ClubInfo Club { get; set; }
[ProtoMember(2)]
public int ChangeType { get; set; }
}
}

View File

@@ -0,0 +1,26 @@
using Fantasy;
using Fantasy.Async;
using Fantasy.Network.Interface;
namespace NB.Chat;
/// <summary>
/// 请求创建频道
/// </summary>
public class
C2Chat_CreateChannelRequestHandler : RouteRPC<ChatUnit, C2Chat_CreateChannelRequest, Caht2C_CreateChannelResponse>
{
protected override async FTask Run(ChatUnit entity, C2Chat_CreateChannelRequest request,
Caht2C_CreateChannelResponse response, Action reply)
{
var channelCenter = entity.Scene.GetComponent<ChatChannelCenterComponent>();
if (channelCenter == null)
{
response.ErrorCode = ErrorCode.ErrServer;
return;
}
var channel = await channelCenter.Create(entity);
}
}

View File

@@ -24,22 +24,22 @@ public class
if (oldChannelId > 0) if (oldChannelId > 0)
{ {
//退出旧的频道 //退出旧的频道
if (channelCenter.TryGet(oldChannelId, out var oldChannel) && oldChannel != null) var oldChannel = await channelCenter.Get(oldChannelId);
if (oldChannel != null)
{ {
oldChannel.Exit(entity); oldChannel.Exit(entity);
} }
} }
//加入新频道 //加入新频道
if (channelCenter.TryGet(request.Target, out var channel) && channel != null) var newChannel = await channelCenter.Get(request.Target);
if (newChannel != null)
{ {
channel.Enter(entity); newChannel.Enter(entity);
} }
else else
{ {
response.ErrorCode = ErrorCode.ChatNotChannel; response.ErrorCode = ErrorCode.ChatNotChannel;
} }
await FTask.CompletedTask;
} }
} }

View File

@@ -11,6 +11,14 @@ public sealed class
protected override async FTask Run(ChatUnit chatUnit, C2Chat_SendMessageRequest request, protected override async FTask Run(ChatUnit chatUnit, C2Chat_SendMessageRequest request,
Caht2C_SendMessageResponse response, Action reply) Caht2C_SendMessageResponse response, Action reply)
{ {
if (request.Type == 0) //频道聊天
{
}
else if (request.Type == 1) //私聊
{
}
ChatSceneHelper.Broadcast(chatUnit.Scene, new ChatMessageInfo() ChatSceneHelper.Broadcast(chatUnit.Scene, new ChatMessageInfo()
{ {
Content = request.Message, Content = request.Message,

View File

@@ -1,4 +1,5 @@
using Fantasy.Entitas; using Fantasy.Async;
using Fantasy.Entitas;
using Fantasy.Entitas.Interface; using Fantasy.Entitas.Interface;
using Fantasy.Helper; using Fantasy.Helper;
@@ -22,15 +23,22 @@ public class ChatChannelCenterComponentDestroySystem : DestroySystem<ChatChannel
public static class ChatChannelCenterComponentSystem public static class ChatChannelCenterComponentSystem
{ {
/// <summary> /// <summary>
/// 获取 /// 获取一个频道
/// </summary> /// </summary>
/// <param name="self"></param> /// <param name="self"></param>
/// <param name="channelId"></param> /// <param name="channelId"></param>
/// <param name="channel"></param>
/// <returns></returns> /// <returns></returns>
public static bool TryGet(this ChatChannelCenterComponent self, long channelId, out ChatChannel? channel) public static async FTask<ChatChannel?> Get(this ChatChannelCenterComponent self, long channelId)
{ {
return self.Channels.TryGetValue(channelId, out channel); if (self.Channels.TryGetValue(channelId, out var channel))
{
return channel;
}
//查数据库
channel = await self.Scene.World.DataBase.Query<ChatChannel>(channelId, true);
self.Channels.Add(channel.Id, channel);
return channel;
} }
/// <summary> /// <summary>
@@ -38,22 +46,20 @@ public static class ChatChannelCenterComponentSystem
/// </summary> /// </summary>
/// <param name="self"></param> /// <param name="self"></param>
/// <param name="unit"></param> /// <param name="unit"></param>
/// <param name="channelId"></param>
/// <returns></returns> /// <returns></returns>
public static ChatChannel Apply(this ChatChannelCenterComponent self, ChatUnit unit, long channelId) public static async FTask<ChatChannel> Create(this ChatChannelCenterComponent self, ChatUnit unit)
{ {
if (self.Channels.TryGetValue(channelId, out var channel)) var channel = Entity.Create<ChatChannel>(self.Scene, true, true);
{
return channel;
}
channel = Entity.Create<ChatChannel>(self.Scene, channelId, true, true);
channel.Creator = unit.Role.RoleId; channel.Creator = unit.Role.RoleId;
channel.CreateTime = TimeHelper.Now; channel.CreateTime = TimeHelper.Now;
self.Channels.Add(channelId, channel); self.Channels.Add(channel.Id, channel);
//保存到数据库
await self.Scene.World.DataBase.Save(channel);
return channel; return channel;
} }
/// <summary> /// <summary>
/// 解散 /// 解散
/// </summary> /// </summary>