提交示例代码
This commit is contained in:
BIN
邮件系统课程完整代码/Client/Unity/Assets/.DS_Store
vendored
Normal file
BIN
邮件系统课程完整代码/Client/Unity/Assets/.DS_Store
vendored
Normal file
Binary file not shown.
8
邮件系统课程完整代码/Client/Unity/Assets/Bundles.meta
Normal file
8
邮件系统课程完整代码/Client/Unity/Assets/Bundles.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fe27b47c7d76e49439bf5072f41f8a94
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
邮件系统课程完整代码/Client/Unity/Assets/Bundles/.DS_Store
vendored
Normal file
BIN
邮件系统课程完整代码/Client/Unity/Assets/Bundles/.DS_Store
vendored
Normal file
Binary file not shown.
8
邮件系统课程完整代码/Client/Unity/Assets/Bundles/Config.meta
Normal file
8
邮件系统课程完整代码/Client/Unity/Assets/Bundles/Config.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d0242937a20ae44ac9d626e19fdf17d4
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
邮件系统课程完整代码/Client/Unity/Assets/Scenes.meta
Normal file
8
邮件系统课程完整代码/Client/Unity/Assets/Scenes.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6ea315d0fd7389c41b19996891e99ae3
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
3775
邮件系统课程完整代码/Client/Unity/Assets/Scenes/SampleScene.unity
Normal file
3775
邮件系统课程完整代码/Client/Unity/Assets/Scenes/SampleScene.unity
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9fc0d4010bbf28b4594072e72b8655ab
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
邮件系统课程完整代码/Client/Unity/Assets/Scripts.meta
Normal file
8
邮件系统课程完整代码/Client/Unity/Assets/Scripts.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0ff18268873c34d1898f648db43ca8ed
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
邮件系统课程完整代码/Client/Unity/Assets/Scripts/.DS_Store
vendored
Normal file
BIN
邮件系统课程完整代码/Client/Unity/Assets/Scripts/.DS_Store
vendored
Normal file
Binary file not shown.
229
邮件系统课程完整代码/Client/Unity/Assets/Scripts/Entry.cs
Normal file
229
邮件系统课程完整代码/Client/Unity/Assets/Scripts/Entry.cs
Normal file
@@ -0,0 +1,229 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Fantasy;
|
||||
using Fantasy.Async;
|
||||
using Fantasy.Network;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class Entry : MonoBehaviour
|
||||
{
|
||||
private Scene _scene;
|
||||
private Session _session;
|
||||
|
||||
public Button LoginButton;
|
||||
public Button ExitButton;
|
||||
public Button SendTestButton;
|
||||
public Button GetHaveMailButton;
|
||||
public Button OpenMailButton;
|
||||
public Button ReceiveMailButton;
|
||||
public Button RemoveMailButton;
|
||||
public Button SendMailButton;
|
||||
public InputField LoginUserName;
|
||||
public InputField MailId;
|
||||
public InputField MailTitle;
|
||||
public InputField MailUserName;
|
||||
public InputField MailContent;
|
||||
void Start()
|
||||
{
|
||||
LoginButton.onClick.RemoveAllListeners();
|
||||
LoginButton.onClick.AddListener(OnLoginButtonClick);
|
||||
ExitButton.onClick.RemoveAllListeners();
|
||||
ExitButton.onClick.AddListener(OnExitButtonClick);
|
||||
SendTestButton.onClick.RemoveAllListeners();
|
||||
SendTestButton.onClick.AddListener(() =>
|
||||
{
|
||||
OnSendTestButtonClick().Coroutine();
|
||||
});
|
||||
GetHaveMailButton.onClick.RemoveAllListeners();
|
||||
GetHaveMailButton.onClick.AddListener(() =>
|
||||
{
|
||||
OnGetHaveMailButtonClick().Coroutine();
|
||||
});
|
||||
OpenMailButton.onClick.RemoveAllListeners();
|
||||
OpenMailButton.onClick.AddListener(() =>
|
||||
{
|
||||
OnOpenMailButtonClick().Coroutine();
|
||||
});
|
||||
ReceiveMailButton.onClick.RemoveAllListeners();
|
||||
ReceiveMailButton.onClick.AddListener(() =>
|
||||
{
|
||||
OnReceiveMailButtonClick().Coroutine();
|
||||
});
|
||||
RemoveMailButton.onClick.RemoveAllListeners();
|
||||
RemoveMailButton.onClick.AddListener(() =>
|
||||
{
|
||||
OnRemoveMailButtonClick().Coroutine();
|
||||
});
|
||||
SendMailButton.onClick.RemoveAllListeners();
|
||||
SendMailButton.onClick.AddListener(() =>
|
||||
{
|
||||
OnSendMailButtonClick().Coroutine();
|
||||
});
|
||||
StartAsync().Coroutine();
|
||||
}
|
||||
|
||||
private async FTask StartAsync()
|
||||
{
|
||||
Fantasy.Platform.Unity.Entry.Initialize(GetType().Assembly);
|
||||
_scene = await Scene.Create(SceneRuntimeType.MainThread);
|
||||
}
|
||||
|
||||
private void OnLoginButtonClick()
|
||||
{
|
||||
// 1、判定用户输入的用户名是否为空,如果是空,则提示用户输入用户名。
|
||||
|
||||
if (string.IsNullOrEmpty(LoginUserName.text))
|
||||
{
|
||||
Log.Error("用户名不可以为空!");
|
||||
return;
|
||||
}
|
||||
|
||||
// 2、首先创建一个连接,并且设置连接成功和失败的回调。
|
||||
_session = _scene.Connect("127.0.0.1:20000", NetworkProtocolType.KCP, () =>
|
||||
{
|
||||
Log.Debug("连接成功");
|
||||
// 首先要判定一下。当前的Session是否被断开或销毁了
|
||||
if (_session.IsDisposed)
|
||||
{
|
||||
return;
|
||||
}
|
||||
// 添加一个心跳组件,用来跟服务器保持心跳
|
||||
_session.AddComponent<SessionHeartbeatComponent>().Start(2000);
|
||||
// 执行登陆请求
|
||||
LoginRequest().Coroutine();
|
||||
}, () =>
|
||||
{
|
||||
Log.Debug("连接失败");
|
||||
}, () =>
|
||||
{
|
||||
// 能触发到连接断开的委托的时候只有如下两种情况:
|
||||
// 1、服务器主动跟客户端断开连接。
|
||||
// 2、客户端主动跟服务器断开连接。
|
||||
Log.Debug("断开连接");
|
||||
}, false, 3000);
|
||||
}
|
||||
|
||||
private void OnApplicationQuit()
|
||||
{
|
||||
_scene.Dispose();
|
||||
}
|
||||
|
||||
private async FTask LoginRequest()
|
||||
{
|
||||
var userName = LoginUserName.text;
|
||||
var response = (G2C_LoginResponse)await _session.Call(new C2G_LoginRequest()
|
||||
{
|
||||
Name = userName
|
||||
});
|
||||
if (response.ErrorCode != 0)
|
||||
{
|
||||
Log.Error($"登陆时发生错误。ErrorCode:{response.ErrorCode}");
|
||||
return;
|
||||
}
|
||||
Log.Debug($"登陆成功,UserName:{userName}");
|
||||
}
|
||||
|
||||
private void OnExitButtonClick()
|
||||
{
|
||||
if (_session == null || _session.IsDisposed)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_session.Send(new C2G_Exit());
|
||||
Log.Debug("已经跟服务器发送了断开的协议!");
|
||||
}
|
||||
|
||||
private async FTask OnSendTestButtonClick()
|
||||
{
|
||||
var userName = LoginUserName.text;
|
||||
var response = (Mail2C_TestResponse)await _session.Call(new C2Mail_TestRequest()
|
||||
{
|
||||
Tag = userName
|
||||
});
|
||||
if (response.ErrorCode != 0)
|
||||
{
|
||||
Log.Error($"测试时发生错误。ErrorCode:{response.ErrorCode}");
|
||||
return;
|
||||
}
|
||||
Log.Debug($"接收到服务器发送来的自定义Route协议,Tag:{response.Tag}");
|
||||
}
|
||||
|
||||
private async FTask OnGetHaveMailButtonClick()
|
||||
{
|
||||
var response = (Mail2C_GetHaveMailResposne)await _session.Call(new C2Mail_GetHaveMailRequest());
|
||||
if (response.ErrorCode != 0)
|
||||
{
|
||||
Log.Error($"获取邮件时发生错误。ErrorCode:{response.ErrorCode}");
|
||||
return;
|
||||
}
|
||||
foreach (var mailSimplifyInfo in response.Mails)
|
||||
{
|
||||
MailId.text = mailSimplifyInfo.MailId.ToString();
|
||||
Log.Debug($"获取到邮件,MailId:{mailSimplifyInfo.MailId},MailType:{mailSimplifyInfo.MailType} 标题:{mailSimplifyInfo.Title}");
|
||||
}
|
||||
|
||||
Log.Debug($"获取到邮件数量:{response.Mails.Count}");
|
||||
}
|
||||
|
||||
private async FTask OnOpenMailButtonClick()
|
||||
{
|
||||
var response = (Mail2C_OpenMailResposne)await _session.Call(new C2Mail_OpenMailRequest()
|
||||
{
|
||||
MailId = long.Parse(MailId.text), ReturnMailInfo = true
|
||||
});
|
||||
if (response.ErrorCode != 0)
|
||||
{
|
||||
Log.Error($"打开邮件时发生错误。ErrorCode:{response.ErrorCode}");
|
||||
return;
|
||||
}
|
||||
Log.Debug($"打开邮件成功,邮件Id:{response.MailInfo.MailId} 标题:{response.MailInfo.Title} 内容:{response.MailInfo.Content}");
|
||||
}
|
||||
|
||||
private async FTask OnReceiveMailButtonClick()
|
||||
{
|
||||
var response = (Mail2C_ReceiveMailResponse)await _session.Call(new C2Mail_ReceiveMailRequest()
|
||||
{
|
||||
MailId = long.Parse(MailId.text)
|
||||
});
|
||||
if (response.ErrorCode != 0)
|
||||
{
|
||||
Log.Error($"领取邮件时发生错误。ErrorCode:{response.ErrorCode}");
|
||||
return;
|
||||
}
|
||||
Log.Debug($"领取邮件附件成功");
|
||||
}
|
||||
|
||||
private async FTask OnRemoveMailButtonClick()
|
||||
{
|
||||
var response = (Mail2C_RemoveMailResponse)await _session.Call(new C2Mail_RemoveMailRequest()
|
||||
{
|
||||
MailId = long.Parse(MailId.text)
|
||||
});
|
||||
if (response.ErrorCode != 0)
|
||||
{
|
||||
Log.Error($"删除邮件时发生错误。ErrorCode:{response.ErrorCode}");
|
||||
return;
|
||||
}
|
||||
Log.Debug($"删除邮件成功");
|
||||
}
|
||||
|
||||
private async FTask OnSendMailButtonClick()
|
||||
{
|
||||
var response = (Mail2C_SendMailResponse)await _session.Call(new C2Mail_SendMailRequest()
|
||||
{
|
||||
UserName = MailUserName.text,
|
||||
Title = MailTitle.text,
|
||||
Content = MailContent.text,
|
||||
Money = 100
|
||||
});
|
||||
if (response.ErrorCode != 0)
|
||||
{
|
||||
Log.Error($"发送邮件时发生错误。ErrorCode:{response.ErrorCode}");
|
||||
return;
|
||||
}
|
||||
Log.Debug($"发送邮件成功");
|
||||
}
|
||||
}
|
||||
11
邮件系统课程完整代码/Client/Unity/Assets/Scripts/Entry.cs.meta
Normal file
11
邮件系统课程完整代码/Client/Unity/Assets/Scripts/Entry.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9bd17d680f8ff4bee82ecdd82ba4b804
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
邮件系统课程完整代码/Client/Unity/Assets/Scripts/Handler.meta
Normal file
8
邮件系统课程完整代码/Client/Unity/Assets/Scripts/Handler.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a9d17c41edd114162bb7a75c4b500bee
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,15 @@
|
||||
using Fantasy.Async;
|
||||
using Fantasy.Network;
|
||||
using Fantasy.Network.Interface;
|
||||
|
||||
namespace Fantasy
|
||||
{
|
||||
public class Mail2C_HaveMailHandler : Message<Mail2C_HaveMail>
|
||||
{
|
||||
protected override async FTask Run(Session session, Mail2C_HaveMail message)
|
||||
{
|
||||
Log.Debug($"Mail2C_HaveMailHandler MailId:{message.Mail.MailId} MailTitle:{message.Mail.Title}");
|
||||
await FTask.CompletedTask;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: dfc2d0255b4844d1ab6a1e67af759c68
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,15 @@
|
||||
using Fantasy.Async;
|
||||
using Fantasy.Network;
|
||||
using Fantasy.Network.Interface;
|
||||
|
||||
namespace Fantasy
|
||||
{
|
||||
public class Mail2C_MailStateHandler : Message<Mail2C_MailState>
|
||||
{
|
||||
protected override async FTask Run(Session session, Mail2C_MailState message)
|
||||
{
|
||||
Log.Debug($"MailId:{message.MailId} MailState:{message.MailState}");
|
||||
await FTask.CompletedTask;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0e1475a1860bd42f2b62e0fadfbdf21f
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
邮件系统课程完整代码/Client/Unity/Assets/Scripts/Hotfix.meta
Normal file
8
邮件系统课程完整代码/Client/Unity/Assets/Scripts/Hotfix.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8dc09a63f0cb84af3a196d9b71ec47ea
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
邮件系统课程完整代码/Client/Unity/Assets/Scripts/Hotfix/.DS_Store
vendored
Normal file
BIN
邮件系统课程完整代码/Client/Unity/Assets/Scripts/Hotfix/.DS_Store
vendored
Normal file
Binary file not shown.
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e44210ffde5a14530b15db967824df55
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
邮件系统课程完整代码/Client/Unity/Assets/Scripts/Hotfix/Generate/.DS_Store
vendored
Normal file
BIN
邮件系统课程完整代码/Client/Unity/Assets/Scripts/Hotfix/Generate/.DS_Store
vendored
Normal file
Binary file not shown.
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b0d035a3f5e8345ac9577f2089cd91f2
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,515 @@
|
||||
using ProtoBuf;
|
||||
|
||||
using System.Collections.Generic;
|
||||
using Fantasy;
|
||||
using Fantasy.Network.Interface;
|
||||
using Fantasy.Serialize;
|
||||
#pragma warning disable CS8618
|
||||
|
||||
namespace Fantasy
|
||||
{
|
||||
/// <summary>
|
||||
/// 登陆到Gate服务器
|
||||
/// </summary>
|
||||
[ProtoContract]
|
||||
public partial class C2G_LoginRequest : AMessage, IRequest, IProto
|
||||
{
|
||||
public static C2G_LoginRequest Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<C2G_LoginRequest>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
Name = default;
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<C2G_LoginRequest>(this);
|
||||
#endif
|
||||
}
|
||||
[ProtoIgnore]
|
||||
public G2C_LoginResponse ResponseType { get; set; }
|
||||
public uint OpCode() { return OuterOpcode.C2G_LoginRequest; }
|
||||
[ProtoMember(1)]
|
||||
public string Name { get; set; }
|
||||
}
|
||||
[ProtoContract]
|
||||
public partial class G2C_LoginResponse : AMessage, IResponse, IProto
|
||||
{
|
||||
public static G2C_LoginResponse Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<G2C_LoginResponse>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
ErrorCode = default;
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<G2C_LoginResponse>(this);
|
||||
#endif
|
||||
}
|
||||
public uint OpCode() { return OuterOpcode.G2C_LoginResponse; }
|
||||
[ProtoMember(1)]
|
||||
public uint ErrorCode { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 客户端通知服务器退出游戏
|
||||
/// </summary>
|
||||
[ProtoContract]
|
||||
public partial class C2G_Exit : AMessage, IMessage, IProto
|
||||
{
|
||||
public static C2G_Exit Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<C2G_Exit>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<C2G_Exit>(this);
|
||||
#endif
|
||||
}
|
||||
public uint OpCode() { return OuterOpcode.C2G_Exit; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 测试Mail自定义Route协议
|
||||
/// </summary>
|
||||
[ProtoContract]
|
||||
public partial class C2Mail_TestRequest : AMessage, ICustomRouteRequest, IProto
|
||||
{
|
||||
public static C2Mail_TestRequest Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<C2Mail_TestRequest>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
Tag = default;
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<C2Mail_TestRequest>(this);
|
||||
#endif
|
||||
}
|
||||
[ProtoIgnore]
|
||||
public Mail2C_TestResponse ResponseType { get; set; }
|
||||
public uint OpCode() { return OuterOpcode.C2Mail_TestRequest; }
|
||||
[ProtoIgnore]
|
||||
public int RouteType => Fantasy.RouteType.MailRoute;
|
||||
[ProtoMember(1)]
|
||||
public string Tag { get; set; }
|
||||
}
|
||||
[ProtoContract]
|
||||
public partial class Mail2C_TestResponse : AMessage, ICustomRouteResponse, IProto
|
||||
{
|
||||
public static Mail2C_TestResponse Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<Mail2C_TestResponse>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
ErrorCode = default;
|
||||
Tag = default;
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<Mail2C_TestResponse>(this);
|
||||
#endif
|
||||
}
|
||||
public uint OpCode() { return OuterOpcode.Mail2C_TestResponse; }
|
||||
[ProtoMember(1)]
|
||||
public string Tag { get; set; }
|
||||
[ProtoMember(2)]
|
||||
public uint ErrorCode { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 一个邮件的完整信息
|
||||
/// </summary>
|
||||
[ProtoContract]
|
||||
public partial class MailInfo : AMessage, IProto
|
||||
{
|
||||
public static MailInfo Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<MailInfo>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
MailId = default;
|
||||
OwnerId = default;
|
||||
Title = default;
|
||||
Content = default;
|
||||
CreateTime = default;
|
||||
ExpireTime = default;
|
||||
Money = default;
|
||||
MailState = default;
|
||||
MailType = default;
|
||||
Items.Clear();
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<MailInfo>(this);
|
||||
#endif
|
||||
}
|
||||
[ProtoMember(1)]
|
||||
public long MailId { get; set; }
|
||||
[ProtoMember(2)]
|
||||
public long OwnerId { get; set; }
|
||||
[ProtoMember(3)]
|
||||
public string Title { get; set; }
|
||||
[ProtoMember(4)]
|
||||
public string Content { get; set; }
|
||||
[ProtoMember(5)]
|
||||
public long CreateTime { get; set; }
|
||||
[ProtoMember(6)]
|
||||
public long ExpireTime { get; set; }
|
||||
[ProtoMember(7)]
|
||||
public int Money { get; set; }
|
||||
[ProtoMember(8)]
|
||||
public int MailState { get; set; }
|
||||
[ProtoMember(9)]
|
||||
public int MailType { get; set; }
|
||||
[ProtoMember(10)]
|
||||
public List<ItemInfo> Items = new List<ItemInfo>();
|
||||
}
|
||||
/// <summary>
|
||||
/// 一个邮件的简单版消息
|
||||
/// </summary>
|
||||
[ProtoContract]
|
||||
public partial class MailSimplifyInfo : AMessage, IProto
|
||||
{
|
||||
public static MailSimplifyInfo Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<MailSimplifyInfo>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
MailId = default;
|
||||
OwnerId = default;
|
||||
Title = default;
|
||||
Content = default;
|
||||
CreateTime = default;
|
||||
ExpireTime = default;
|
||||
MailState = default;
|
||||
MailType = default;
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<MailSimplifyInfo>(this);
|
||||
#endif
|
||||
}
|
||||
[ProtoMember(1)]
|
||||
public long MailId { get; set; }
|
||||
[ProtoMember(2)]
|
||||
public long OwnerId { get; set; }
|
||||
[ProtoMember(3)]
|
||||
public string Title { get; set; }
|
||||
[ProtoMember(4)]
|
||||
public string Content { get; set; }
|
||||
[ProtoMember(5)]
|
||||
public long CreateTime { get; set; }
|
||||
[ProtoMember(6)]
|
||||
public long ExpireTime { get; set; }
|
||||
[ProtoMember(7)]
|
||||
public int MailState { get; set; }
|
||||
[ProtoMember(8)]
|
||||
public int MailType { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 一个简单的物品信息
|
||||
/// </summary>
|
||||
[ProtoContract]
|
||||
public partial class ItemInfo : AMessage, IProto
|
||||
{
|
||||
public static ItemInfo Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<ItemInfo>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
ItemId = default;
|
||||
Name = default;
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<ItemInfo>(this);
|
||||
#endif
|
||||
}
|
||||
[ProtoMember(1)]
|
||||
public long ItemId { get; set; }
|
||||
[ProtoMember(2)]
|
||||
public string Name { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// Mail通知客户端有新的邮件
|
||||
/// </summary>
|
||||
[ProtoContract]
|
||||
public partial class Mail2C_HaveMail : AMessage, ICustomRouteMessage, IProto
|
||||
{
|
||||
public static Mail2C_HaveMail Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<Mail2C_HaveMail>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
Mail = default;
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<Mail2C_HaveMail>(this);
|
||||
#endif
|
||||
}
|
||||
public uint OpCode() { return OuterOpcode.Mail2C_HaveMail; }
|
||||
[ProtoIgnore]
|
||||
public int RouteType => Fantasy.RouteType.MailRoute;
|
||||
[ProtoMember(1)]
|
||||
public MailSimplifyInfo Mail { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// Mail通知客户端邮件状态变化
|
||||
/// </summary>
|
||||
[ProtoContract]
|
||||
public partial class Mail2C_MailState : AMessage, ICustomRouteMessage, IProto
|
||||
{
|
||||
public static Mail2C_MailState Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<Mail2C_MailState>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
MailState = default;
|
||||
MailId = default;
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<Mail2C_MailState>(this);
|
||||
#endif
|
||||
}
|
||||
public uint OpCode() { return OuterOpcode.Mail2C_MailState; }
|
||||
[ProtoIgnore]
|
||||
public int RouteType => Fantasy.RouteType.MailRoute;
|
||||
[ProtoMember(1)]
|
||||
public int MailState { get; set; }
|
||||
[ProtoMember(2)]
|
||||
public long MailId { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 客户端获取档期所有邮件的信息
|
||||
/// </summary>
|
||||
[ProtoContract]
|
||||
public partial class C2Mail_GetHaveMailRequest : AMessage, ICustomRouteRequest, IProto
|
||||
{
|
||||
public static C2Mail_GetHaveMailRequest Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<C2Mail_GetHaveMailRequest>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<C2Mail_GetHaveMailRequest>(this);
|
||||
#endif
|
||||
}
|
||||
[ProtoIgnore]
|
||||
public Mail2C_GetHaveMailResposne ResponseType { get; set; }
|
||||
public uint OpCode() { return OuterOpcode.C2Mail_GetHaveMailRequest; }
|
||||
[ProtoIgnore]
|
||||
public int RouteType => Fantasy.RouteType.MailRoute;
|
||||
}
|
||||
[ProtoContract]
|
||||
public partial class Mail2C_GetHaveMailResposne : AMessage, ICustomRouteResponse, IProto
|
||||
{
|
||||
public static Mail2C_GetHaveMailResposne Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<Mail2C_GetHaveMailResposne>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
ErrorCode = default;
|
||||
Mails.Clear();
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<Mail2C_GetHaveMailResposne>(this);
|
||||
#endif
|
||||
}
|
||||
public uint OpCode() { return OuterOpcode.Mail2C_GetHaveMailResposne; }
|
||||
[ProtoMember(1)]
|
||||
public List<MailSimplifyInfo> Mails = new List<MailSimplifyInfo>();
|
||||
[ProtoMember(2)]
|
||||
public uint ErrorCode { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 客户端发开一个邮件
|
||||
/// </summary>
|
||||
[ProtoContract]
|
||||
public partial class C2Mail_OpenMailRequest : AMessage, ICustomRouteRequest, IProto
|
||||
{
|
||||
public static C2Mail_OpenMailRequest Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<C2Mail_OpenMailRequest>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
MailId = default;
|
||||
ReturnMailInfo = default;
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<C2Mail_OpenMailRequest>(this);
|
||||
#endif
|
||||
}
|
||||
[ProtoIgnore]
|
||||
public Mail2C_OpenMailResposne ResponseType { get; set; }
|
||||
public uint OpCode() { return OuterOpcode.C2Mail_OpenMailRequest; }
|
||||
[ProtoIgnore]
|
||||
public int RouteType => Fantasy.RouteType.MailRoute;
|
||||
[ProtoMember(1)]
|
||||
public long MailId { get; set; }
|
||||
[ProtoMember(2)]
|
||||
public bool ReturnMailInfo { get; set; }
|
||||
}
|
||||
[ProtoContract]
|
||||
public partial class Mail2C_OpenMailResposne : AMessage, ICustomRouteResponse, IProto
|
||||
{
|
||||
public static Mail2C_OpenMailResposne Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<Mail2C_OpenMailResposne>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
ErrorCode = default;
|
||||
MailInfo = default;
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<Mail2C_OpenMailResposne>(this);
|
||||
#endif
|
||||
}
|
||||
public uint OpCode() { return OuterOpcode.Mail2C_OpenMailResposne; }
|
||||
[ProtoMember(1)]
|
||||
public MailInfo MailInfo { get; set; }
|
||||
[ProtoMember(2)]
|
||||
public uint ErrorCode { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 客户端领取邮件的附件
|
||||
/// </summary>
|
||||
[ProtoContract]
|
||||
public partial class C2Mail_ReceiveMailRequest : AMessage, ICustomRouteRequest, IProto
|
||||
{
|
||||
public static C2Mail_ReceiveMailRequest Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<C2Mail_ReceiveMailRequest>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
MailId = default;
|
||||
Money = default;
|
||||
ItemId.Clear();
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<C2Mail_ReceiveMailRequest>(this);
|
||||
#endif
|
||||
}
|
||||
[ProtoIgnore]
|
||||
public Mail2C_ReceiveMailResponse ResponseType { get; set; }
|
||||
public uint OpCode() { return OuterOpcode.C2Mail_ReceiveMailRequest; }
|
||||
[ProtoIgnore]
|
||||
public int RouteType => Fantasy.RouteType.MailRoute;
|
||||
[ProtoMember(1)]
|
||||
public long MailId { get; set; }
|
||||
[ProtoMember(2)]
|
||||
public bool Money { get; set; }
|
||||
[ProtoMember(3)]
|
||||
public List<long> ItemId = new List<long>();
|
||||
}
|
||||
[ProtoContract]
|
||||
public partial class Mail2C_ReceiveMailResponse : AMessage, ICustomRouteResponse, IProto
|
||||
{
|
||||
public static Mail2C_ReceiveMailResponse Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<Mail2C_ReceiveMailResponse>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
ErrorCode = default;
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<Mail2C_ReceiveMailResponse>(this);
|
||||
#endif
|
||||
}
|
||||
public uint OpCode() { return OuterOpcode.Mail2C_ReceiveMailResponse; }
|
||||
[ProtoMember(1)]
|
||||
public uint ErrorCode { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 客户端通知服务器删除一个邮件
|
||||
/// </summary>
|
||||
[ProtoContract]
|
||||
public partial class C2Mail_RemoveMailRequest : AMessage, ICustomRouteRequest, IProto
|
||||
{
|
||||
public static C2Mail_RemoveMailRequest Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<C2Mail_RemoveMailRequest>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
MailId = default;
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<C2Mail_RemoveMailRequest>(this);
|
||||
#endif
|
||||
}
|
||||
[ProtoIgnore]
|
||||
public Mail2C_RemoveMailResponse ResponseType { get; set; }
|
||||
public uint OpCode() { return OuterOpcode.C2Mail_RemoveMailRequest; }
|
||||
[ProtoIgnore]
|
||||
public int RouteType => Fantasy.RouteType.MailRoute;
|
||||
[ProtoMember(1)]
|
||||
public long MailId { get; set; }
|
||||
}
|
||||
[ProtoContract]
|
||||
public partial class Mail2C_RemoveMailResponse : AMessage, ICustomRouteResponse, IProto
|
||||
{
|
||||
public static Mail2C_RemoveMailResponse Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<Mail2C_RemoveMailResponse>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
ErrorCode = default;
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<Mail2C_RemoveMailResponse>(this);
|
||||
#endif
|
||||
}
|
||||
public uint OpCode() { return OuterOpcode.Mail2C_RemoveMailResponse; }
|
||||
[ProtoMember(1)]
|
||||
public uint ErrorCode { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 客户端玩家发送邮件到另外一个玩家
|
||||
/// </summary>
|
||||
[ProtoContract]
|
||||
public partial class C2Mail_SendMailRequest : AMessage, ICustomRouteRequest, IProto
|
||||
{
|
||||
public static C2Mail_SendMailRequest Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<C2Mail_SendMailRequest>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
UserName = default;
|
||||
Title = default;
|
||||
Content = default;
|
||||
Money = default;
|
||||
ItemId.Clear();
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<C2Mail_SendMailRequest>(this);
|
||||
#endif
|
||||
}
|
||||
[ProtoIgnore]
|
||||
public Mail2C_SendMailResponse ResponseType { get; set; }
|
||||
public uint OpCode() { return OuterOpcode.C2Mail_SendMailRequest; }
|
||||
[ProtoIgnore]
|
||||
public int RouteType => Fantasy.RouteType.MailRoute;
|
||||
[ProtoMember(1)]
|
||||
public string UserName { get; set; }
|
||||
[ProtoMember(2)]
|
||||
public string Title { get; set; }
|
||||
[ProtoMember(3)]
|
||||
public string Content { get; set; }
|
||||
[ProtoMember(4)]
|
||||
public int Money { get; set; }
|
||||
[ProtoMember(5)]
|
||||
public List<long> ItemId = new List<long>();
|
||||
}
|
||||
[ProtoContract]
|
||||
public partial class Mail2C_SendMailResponse : AMessage, ICustomRouteResponse, IProto
|
||||
{
|
||||
public static Mail2C_SendMailResponse Create(Scene scene)
|
||||
{
|
||||
return scene.MessagePoolComponent.Rent<Mail2C_SendMailResponse>();
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
ErrorCode = default;
|
||||
#if FANTASY_NET || FANTASY_UNITY
|
||||
GetScene().MessagePoolComponent.Return<Mail2C_SendMailResponse>(this);
|
||||
#endif
|
||||
}
|
||||
public uint OpCode() { return OuterOpcode.Mail2C_SendMailResponse; }
|
||||
[ProtoMember(1)]
|
||||
public uint ErrorCode { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: acc26a269baf9426b801a737dc694325
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,23 @@
|
||||
namespace Fantasy
|
||||
{
|
||||
public static partial class OuterOpcode
|
||||
{
|
||||
public const uint C2G_LoginRequest = 268445457;
|
||||
public const uint G2C_LoginResponse = 402663185;
|
||||
public const uint C2G_Exit = 134227729;
|
||||
public const uint C2Mail_TestRequest = 2281711377;
|
||||
public const uint Mail2C_TestResponse = 2415929105;
|
||||
public const uint Mail2C_HaveMail = 2147493649;
|
||||
public const uint Mail2C_MailState = 2147493650;
|
||||
public const uint C2Mail_GetHaveMailRequest = 2281711378;
|
||||
public const uint Mail2C_GetHaveMailResposne = 2415929106;
|
||||
public const uint C2Mail_OpenMailRequest = 2281711379;
|
||||
public const uint Mail2C_OpenMailResposne = 2415929107;
|
||||
public const uint C2Mail_ReceiveMailRequest = 2281711380;
|
||||
public const uint Mail2C_ReceiveMailResponse = 2415929108;
|
||||
public const uint C2Mail_RemoveMailRequest = 2281711381;
|
||||
public const uint Mail2C_RemoveMailResponse = 2415929109;
|
||||
public const uint C2Mail_SendMailRequest = 2281711382;
|
||||
public const uint Mail2C_SendMailResponse = 2415929110;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2b692d81b97f74cbab5848e775363a45
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
namespace Fantasy
|
||||
{
|
||||
// Route协议定义(需要定义1000以上、因为1000以内的框架预留)
|
||||
public static class RouteType
|
||||
{
|
||||
public const int MailRoute = 1001; // Mail
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: aac3ea5a9123c4d6998c0dcb3a8981e9
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user