新定义
This commit is contained in:
@@ -1,19 +0,0 @@
|
|||||||
syntax = "proto3";
|
|
||||||
package Fantasy.Network.Message;
|
|
||||||
|
|
||||||
/// GameAccount实体类
|
|
||||||
message RoleBaseInfo
|
|
||||||
{
|
|
||||||
string NickName = 1;//昵称
|
|
||||||
string Head = 2;//头像
|
|
||||||
string Country = 3;//国家
|
|
||||||
int32 Level = 4;//等级
|
|
||||||
int32 Exp = 5;//当前等级
|
|
||||||
}
|
|
||||||
|
|
||||||
///角色信息
|
|
||||||
message RoleInfo
|
|
||||||
{
|
|
||||||
RoleBaseInfo BaseInfo = 1;
|
|
||||||
int64 RoleId = 2; //账号id
|
|
||||||
}
|
|
||||||
96
Config/NetworkProtocol/Outer/data/Account.proto
Normal file
96
Config/NetworkProtocol/Outer/data/Account.proto
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
package Fantasy.Network.Message;
|
||||||
|
|
||||||
|
/// 角色基础信息
|
||||||
|
message RoleBaseInfo
|
||||||
|
{
|
||||||
|
string NickName = 1; //昵称
|
||||||
|
string Head = 2; //头像
|
||||||
|
string Country = 3; //国家
|
||||||
|
int32 Level = 4; //等级
|
||||||
|
int32 Exp = 5; //当前等级
|
||||||
|
}
|
||||||
|
|
||||||
|
message KeyValueStringInt64
|
||||||
|
{
|
||||||
|
string Key = 1; //键
|
||||||
|
int64 Value = 2; //值
|
||||||
|
}
|
||||||
|
|
||||||
|
message KeyValueInt64
|
||||||
|
{
|
||||||
|
int64 Key = 1; //键
|
||||||
|
int64 Value = 2; //值
|
||||||
|
}
|
||||||
|
|
||||||
|
message KeyValueString
|
||||||
|
{
|
||||||
|
string Key = 1; //键
|
||||||
|
string Value = 2; //值
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// 角色信息
|
||||||
|
message RoleInfo
|
||||||
|
{
|
||||||
|
RoleBaseInfo BaseInfo = 1;
|
||||||
|
int64 RoleId = 2; //账号id
|
||||||
|
repeated ItemInfo Items = 3; //身上物品
|
||||||
|
repeated FishInfo Fishs = 4; //鱼护
|
||||||
|
repeated ActivityInfo Activities = 5; //活动信息
|
||||||
|
repeated KeyValueInt64 Currency = 6; //货币信息
|
||||||
|
repeated KeyValueInt64 Slots = 7; //插槽使用情况
|
||||||
|
repeated SkillInfo Skills = 8; //技能信息
|
||||||
|
}
|
||||||
|
|
||||||
|
/// VIP信息
|
||||||
|
message VipInfo
|
||||||
|
{
|
||||||
|
int64 OpenTime = 1; //开通时间
|
||||||
|
int64 ExpirationTime = 2; //到期时间
|
||||||
|
}
|
||||||
|
|
||||||
|
///奖励信息
|
||||||
|
message AwardInfo
|
||||||
|
{
|
||||||
|
int64 ConfigId = 1; //奖励id
|
||||||
|
int32 Count = 2; //数量
|
||||||
|
}
|
||||||
|
|
||||||
|
///物品信息
|
||||||
|
message ItemInfo
|
||||||
|
{
|
||||||
|
int32 ConfigId = 1; //配置id
|
||||||
|
int64 Id = 2; //物品id
|
||||||
|
int32 Count = 3; //数量
|
||||||
|
int64 ExpirationTime = 4; //失效时间
|
||||||
|
int64 GetTime = 5; //获得时间
|
||||||
|
int64 Abrasion = 6; //耐久度
|
||||||
|
}
|
||||||
|
|
||||||
|
///fish信息
|
||||||
|
message FishInfo
|
||||||
|
{
|
||||||
|
int32 ConfigId = 1; //配置id
|
||||||
|
int64 Id = 2; //物品id
|
||||||
|
int32 Weight =3; //重量
|
||||||
|
int64 GetTime = 4; //获得时间
|
||||||
|
int64 ExpirationTime = 5; //失效时间
|
||||||
|
}
|
||||||
|
|
||||||
|
//活动信息
|
||||||
|
message ActivityInfo
|
||||||
|
{
|
||||||
|
int64 Id = 1; //活动id
|
||||||
|
int64 StartTime = 2; //开始时间
|
||||||
|
int64 EndTime = 3; //结束时间
|
||||||
|
repeated KeyValueStringInt64 Data = 4; //活动数据
|
||||||
|
}
|
||||||
|
|
||||||
|
///技能情况
|
||||||
|
message SkillInfo
|
||||||
|
{
|
||||||
|
int32 ConfigId = 1; //技能配置id
|
||||||
|
int32 Level = 2; //技能等级
|
||||||
|
int32 Exp = 3; //技能经验
|
||||||
|
}
|
||||||
14
Config/NetworkProtocol/Outer/data/Friend.proto
Normal file
14
Config/NetworkProtocol/Outer/data/Friend.proto
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
package Fantasy.Network.Message;
|
||||||
|
|
||||||
|
/// 好友信息
|
||||||
|
message FriendInfo
|
||||||
|
{
|
||||||
|
int64 Id = 1; //好友id
|
||||||
|
int64 AddTime = 2; //添加时间
|
||||||
|
string NickName = 3; //昵称
|
||||||
|
string Head = 4; //头像
|
||||||
|
int32 Level = 5; //等级
|
||||||
|
string Country = 6; //国家
|
||||||
|
int32 OnlineStatus = 7; //在线状态
|
||||||
|
}
|
||||||
0
Config/NetworkProtocol/Outer/data/GlobalData.proto
Normal file
0
Config/NetworkProtocol/Outer/data/GlobalData.proto
Normal file
13
Config/NetworkProtocol/Outer/data/Mail.proto
Normal file
13
Config/NetworkProtocol/Outer/data/Mail.proto
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
package Fantasy.Network.Message;
|
||||||
|
|
||||||
|
message MailInfo
|
||||||
|
{
|
||||||
|
int64 Id = 1; //邮件id
|
||||||
|
string Title = 2; //标题
|
||||||
|
string Content = 3; //内容
|
||||||
|
int64 SendTime = 4; //发送时间
|
||||||
|
int32 Type = 5; //邮件类型
|
||||||
|
repeated AwardInfo Items = 6; //附件列表
|
||||||
|
bool IsRead = 7; //是否已读
|
||||||
|
}
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<Nullable>disable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
||||||
<LangVersion>default</LangVersion>
|
<LangVersion>default</LangVersion>
|
||||||
<TargetFramework>net9.0</TargetFramework>
|
<TargetFramework>net9.0</TargetFramework>
|
||||||
@@ -28,6 +28,9 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Folder Include="Game\Activity\" />
|
||||||
|
<Folder Include="Game\Mail\" />
|
||||||
|
<Folder Include="Game\Skill\" />
|
||||||
<Folder Include="Map\" />
|
<Folder Include="Map\" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|||||||
27
Entity/Game/Fish/Fish.cs
Normal file
27
Entity/Game/Fish/Fish.cs
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
using Fantasy.Entitas;
|
||||||
|
using MongoDB.Bson.Serialization.Attributes;
|
||||||
|
|
||||||
|
namespace NB.Game;
|
||||||
|
|
||||||
|
public class Fish : Entity
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 配置id
|
||||||
|
/// </summary>
|
||||||
|
[BsonElement("cid")] public int ConfigId;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重量
|
||||||
|
/// </summary>
|
||||||
|
[BsonElement("w")] public int Weight;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取时间
|
||||||
|
/// </summary>
|
||||||
|
[BsonElement("gt")] public long GetTime;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 失效时间
|
||||||
|
/// </summary>
|
||||||
|
[BsonElement("et")] public long ExpirationTime;
|
||||||
|
}
|
||||||
@@ -16,20 +16,15 @@ public class Item : Entity
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 拥有的数量
|
/// 拥有的数量
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int Count;
|
[BsonElement("c")] public int Count;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 配置id
|
/// 配置id
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int ConfigId;
|
[BsonElement("cid")] public int ConfigId;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 是否绑定
|
/// 是否绑定
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsBind;
|
[BsonElement("ib")] public bool IsBind;
|
||||||
|
}
|
||||||
/// <summary>
|
|
||||||
/// 当前所属的容器
|
|
||||||
/// </summary>
|
|
||||||
[BsonIgnore] public Container Container;
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
using Fantasy.Entitas;
|
|
||||||
|
|
||||||
namespace NB;
|
|
||||||
|
|
||||||
public class PlayerInfo : Entity
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 昵称
|
|
||||||
/// </summary>
|
|
||||||
public string NickName;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 头像
|
|
||||||
/// </summary>
|
|
||||||
public string Head;
|
|
||||||
}
|
|
||||||
19
Entity/Game/Player/Child/PlayerVip.cs
Normal file
19
Entity/Game/Player/Child/PlayerVip.cs
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
namespace NB;
|
||||||
|
|
||||||
|
public class PlayerVip
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 是否是vip
|
||||||
|
/// </summary>
|
||||||
|
public bool IsVip;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取时间
|
||||||
|
/// </summary>
|
||||||
|
public long GetTime;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 失效时间
|
||||||
|
/// </summary>
|
||||||
|
public long ExpirationTime;
|
||||||
|
}
|
||||||
@@ -6,17 +6,48 @@ namespace NB.Game;
|
|||||||
|
|
||||||
public sealed class Player : Entity
|
public sealed class Player : Entity
|
||||||
{
|
{
|
||||||
public long CreateTime;
|
[BsonElement("ct")] public long CreateTime;
|
||||||
public long LoginTime;
|
[BsonElement("lt")] public long LoginTime;
|
||||||
|
|
||||||
public PlayerBasic Basic = new PlayerBasic();
|
public PlayerBasic Basic = new PlayerBasic();
|
||||||
public PlayerStatistics Statistics = new PlayerStatistics();
|
public PlayerStatistics Statistics = new PlayerStatistics();
|
||||||
public PlayerDayFlags DayFlags = new PlayerDayFlags();
|
public PlayerDayFlags DayFlags = new PlayerDayFlags();
|
||||||
|
public PlayerVip Vip = new PlayerVip();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 余额
|
||||||
|
/// </summary>
|
||||||
|
public int Money;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 金币
|
||||||
|
/// </summary>
|
||||||
|
public int Gold;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 其他货币
|
||||||
|
/// </summary>
|
||||||
[BsonDictionaryOptions(DictionaryRepresentation.ArrayOfArrays)]
|
[BsonDictionaryOptions(DictionaryRepresentation.ArrayOfArrays)]
|
||||||
public Dictionary<int, int> Currency = new();
|
public Dictionary<int, int> Currency = new();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 插槽
|
||||||
|
/// </summary>
|
||||||
|
[BsonDictionaryOptions(DictionaryRepresentation.ArrayOfArrays)]
|
||||||
|
public Dictionary<uint, long> Slots = new Dictionary<uint, long>();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 背包物品
|
||||||
|
/// </summary>
|
||||||
|
[BsonDictionaryOptions(DictionaryRepresentation.ArrayOfArrays)]
|
||||||
|
public Dictionary<long, Item> Items = new Dictionary<long, Item>();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 鱼护
|
||||||
|
/// </summary>
|
||||||
|
[BsonDictionaryOptions(DictionaryRepresentation.ArrayOfArrays)]
|
||||||
|
public Dictionary<long, Fish> Fishes = new Dictionary<long, Fish>();
|
||||||
|
|
||||||
|
|
||||||
[BsonIgnore] public long SessionRunTimeId;
|
[BsonIgnore] public long SessionRunTimeId;
|
||||||
|
|
||||||
|
|||||||
318
Entity/Generate/NetworkProtocol/Account.cs
Normal file
318
Entity/Generate/NetworkProtocol/Account.cs
Normal file
@@ -0,0 +1,318 @@
|
|||||||
|
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 RoleBaseInfo : AMessage, IProto
|
||||||
|
{
|
||||||
|
public static RoleBaseInfo Create(Scene scene)
|
||||||
|
{
|
||||||
|
return scene.MessagePoolComponent.Rent<RoleBaseInfo>();
|
||||||
|
}
|
||||||
|
public override void Dispose()
|
||||||
|
{
|
||||||
|
NickName = default;
|
||||||
|
Head = default;
|
||||||
|
Country = default;
|
||||||
|
Level = default;
|
||||||
|
Exp = default;
|
||||||
|
#if FANTASY_NET || FANTASY_UNITY
|
||||||
|
GetScene().MessagePoolComponent.Return<RoleBaseInfo>(this);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
[ProtoMember(1)]
|
||||||
|
public string NickName { get; set; }
|
||||||
|
[ProtoMember(2)]
|
||||||
|
public string Head { get; set; }
|
||||||
|
[ProtoMember(3)]
|
||||||
|
public string Country { get; set; }
|
||||||
|
[ProtoMember(4)]
|
||||||
|
public int Level { get; set; }
|
||||||
|
[ProtoMember(5)]
|
||||||
|
public int Exp { get; set; }
|
||||||
|
}
|
||||||
|
[ProtoContract]
|
||||||
|
public partial class KeyValueStringInt64 : AMessage, IProto
|
||||||
|
{
|
||||||
|
public static KeyValueStringInt64 Create(Scene scene)
|
||||||
|
{
|
||||||
|
return scene.MessagePoolComponent.Rent<KeyValueStringInt64>();
|
||||||
|
}
|
||||||
|
public override void Dispose()
|
||||||
|
{
|
||||||
|
Key = default;
|
||||||
|
Value = default;
|
||||||
|
#if FANTASY_NET || FANTASY_UNITY
|
||||||
|
GetScene().MessagePoolComponent.Return<KeyValueStringInt64>(this);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
[ProtoMember(1)]
|
||||||
|
public string Key { get; set; }
|
||||||
|
[ProtoMember(2)]
|
||||||
|
public long Value { get; set; }
|
||||||
|
}
|
||||||
|
[ProtoContract]
|
||||||
|
public partial class KeyValueInt64 : AMessage, IProto
|
||||||
|
{
|
||||||
|
public static KeyValueInt64 Create(Scene scene)
|
||||||
|
{
|
||||||
|
return scene.MessagePoolComponent.Rent<KeyValueInt64>();
|
||||||
|
}
|
||||||
|
public override void Dispose()
|
||||||
|
{
|
||||||
|
Key = default;
|
||||||
|
Value = default;
|
||||||
|
#if FANTASY_NET || FANTASY_UNITY
|
||||||
|
GetScene().MessagePoolComponent.Return<KeyValueInt64>(this);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
[ProtoMember(1)]
|
||||||
|
public long Key { get; set; }
|
||||||
|
[ProtoMember(2)]
|
||||||
|
public long Value { get; set; }
|
||||||
|
}
|
||||||
|
[ProtoContract]
|
||||||
|
public partial class KeyValueString : AMessage, IProto
|
||||||
|
{
|
||||||
|
public static KeyValueString Create(Scene scene)
|
||||||
|
{
|
||||||
|
return scene.MessagePoolComponent.Rent<KeyValueString>();
|
||||||
|
}
|
||||||
|
public override void Dispose()
|
||||||
|
{
|
||||||
|
Key = default;
|
||||||
|
Value = default;
|
||||||
|
#if FANTASY_NET || FANTASY_UNITY
|
||||||
|
GetScene().MessagePoolComponent.Return<KeyValueString>(this);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
[ProtoMember(1)]
|
||||||
|
public string Key { get; set; }
|
||||||
|
[ProtoMember(2)]
|
||||||
|
public string Value { get; set; }
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 角色信息
|
||||||
|
/// </summary>
|
||||||
|
[ProtoContract]
|
||||||
|
public partial class RoleInfo : AMessage, IProto
|
||||||
|
{
|
||||||
|
public static RoleInfo Create(Scene scene)
|
||||||
|
{
|
||||||
|
return scene.MessagePoolComponent.Rent<RoleInfo>();
|
||||||
|
}
|
||||||
|
public override void Dispose()
|
||||||
|
{
|
||||||
|
BaseInfo = default;
|
||||||
|
RoleId = default;
|
||||||
|
Items.Clear();
|
||||||
|
Fishs.Clear();
|
||||||
|
Activities.Clear();
|
||||||
|
Currency.Clear();
|
||||||
|
Slots.Clear();
|
||||||
|
Skills.Clear();
|
||||||
|
#if FANTASY_NET || FANTASY_UNITY
|
||||||
|
GetScene().MessagePoolComponent.Return<RoleInfo>(this);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
[ProtoMember(1)]
|
||||||
|
public RoleBaseInfo BaseInfo { get; set; }
|
||||||
|
[ProtoMember(2)]
|
||||||
|
public long RoleId { get; set; }
|
||||||
|
[ProtoMember(3)]
|
||||||
|
public List<ItemInfo> Items = new List<ItemInfo>();
|
||||||
|
[ProtoMember(4)]
|
||||||
|
public List<FishInfo> Fishs = new List<FishInfo>();
|
||||||
|
[ProtoMember(5)]
|
||||||
|
public List<ActivityInfo> Activities = new List<ActivityInfo>();
|
||||||
|
[ProtoMember(6)]
|
||||||
|
public List<KeyValueInt64> Currency = new List<KeyValueInt64>();
|
||||||
|
[ProtoMember(7)]
|
||||||
|
public List<KeyValueInt64> Slots = new List<KeyValueInt64>();
|
||||||
|
[ProtoMember(8)]
|
||||||
|
public List<SkillInfo> Skills = new List<SkillInfo>();
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// VIP信息
|
||||||
|
/// </summary>
|
||||||
|
[ProtoContract]
|
||||||
|
public partial class VipInfo : AMessage, IProto
|
||||||
|
{
|
||||||
|
public static VipInfo Create(Scene scene)
|
||||||
|
{
|
||||||
|
return scene.MessagePoolComponent.Rent<VipInfo>();
|
||||||
|
}
|
||||||
|
public override void Dispose()
|
||||||
|
{
|
||||||
|
OpenTime = default;
|
||||||
|
ExpirationTime = default;
|
||||||
|
#if FANTASY_NET || FANTASY_UNITY
|
||||||
|
GetScene().MessagePoolComponent.Return<VipInfo>(this);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
[ProtoMember(1)]
|
||||||
|
public long OpenTime { get; set; }
|
||||||
|
[ProtoMember(2)]
|
||||||
|
public long ExpirationTime { get; set; }
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 奖励信息
|
||||||
|
/// </summary>
|
||||||
|
[ProtoContract]
|
||||||
|
public partial class AwardInfo : AMessage, IProto
|
||||||
|
{
|
||||||
|
public static AwardInfo Create(Scene scene)
|
||||||
|
{
|
||||||
|
return scene.MessagePoolComponent.Rent<AwardInfo>();
|
||||||
|
}
|
||||||
|
public override void Dispose()
|
||||||
|
{
|
||||||
|
ConfigId = default;
|
||||||
|
Count = default;
|
||||||
|
#if FANTASY_NET || FANTASY_UNITY
|
||||||
|
GetScene().MessagePoolComponent.Return<AwardInfo>(this);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
[ProtoMember(1)]
|
||||||
|
public long ConfigId { get; set; }
|
||||||
|
[ProtoMember(2)]
|
||||||
|
public int Count { 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()
|
||||||
|
{
|
||||||
|
ConfigId = default;
|
||||||
|
Id = default;
|
||||||
|
Count = default;
|
||||||
|
ExpirationTime = default;
|
||||||
|
GetTime = default;
|
||||||
|
Abrasion = default;
|
||||||
|
#if FANTASY_NET || FANTASY_UNITY
|
||||||
|
GetScene().MessagePoolComponent.Return<ItemInfo>(this);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
[ProtoMember(1)]
|
||||||
|
public int ConfigId { get; set; }
|
||||||
|
[ProtoMember(2)]
|
||||||
|
public long Id { get; set; }
|
||||||
|
[ProtoMember(3)]
|
||||||
|
public int Count { get; set; }
|
||||||
|
[ProtoMember(4)]
|
||||||
|
public long ExpirationTime { get; set; }
|
||||||
|
[ProtoMember(5)]
|
||||||
|
public long GetTime { get; set; }
|
||||||
|
[ProtoMember(6)]
|
||||||
|
public long Abrasion { get; set; }
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// fish信息
|
||||||
|
/// </summary>
|
||||||
|
[ProtoContract]
|
||||||
|
public partial class FishInfo : AMessage, IProto
|
||||||
|
{
|
||||||
|
public static FishInfo Create(Scene scene)
|
||||||
|
{
|
||||||
|
return scene.MessagePoolComponent.Rent<FishInfo>();
|
||||||
|
}
|
||||||
|
public override void Dispose()
|
||||||
|
{
|
||||||
|
ConfigId = default;
|
||||||
|
Id = default;
|
||||||
|
Weight = default;
|
||||||
|
GetTime = default;
|
||||||
|
ExpirationTime = default;
|
||||||
|
#if FANTASY_NET || FANTASY_UNITY
|
||||||
|
GetScene().MessagePoolComponent.Return<FishInfo>(this);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
[ProtoMember(1)]
|
||||||
|
public int ConfigId { get; set; }
|
||||||
|
[ProtoMember(2)]
|
||||||
|
public long Id { get; set; }
|
||||||
|
[ProtoMember(3)]
|
||||||
|
public int Weight { get; set; }
|
||||||
|
[ProtoMember(4)]
|
||||||
|
public long GetTime { get; set; }
|
||||||
|
[ProtoMember(5)]
|
||||||
|
public long ExpirationTime { get; set; }
|
||||||
|
}
|
||||||
|
[ProtoContract]
|
||||||
|
public partial class ActivityInfo : AMessage, IProto
|
||||||
|
{
|
||||||
|
public static ActivityInfo Create(Scene scene)
|
||||||
|
{
|
||||||
|
return scene.MessagePoolComponent.Rent<ActivityInfo>();
|
||||||
|
}
|
||||||
|
public override void Dispose()
|
||||||
|
{
|
||||||
|
Id = default;
|
||||||
|
StartTime = default;
|
||||||
|
EndTime = default;
|
||||||
|
Data.Clear();
|
||||||
|
#if FANTASY_NET || FANTASY_UNITY
|
||||||
|
GetScene().MessagePoolComponent.Return<ActivityInfo>(this);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
[ProtoMember(1)]
|
||||||
|
public long Id { get; set; }
|
||||||
|
[ProtoMember(2)]
|
||||||
|
public long StartTime { get; set; }
|
||||||
|
[ProtoMember(3)]
|
||||||
|
public long EndTime { get; set; }
|
||||||
|
[ProtoMember(4)]
|
||||||
|
public List<KeyValueStringInt64> Data = new List<KeyValueStringInt64>();
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 技能情况
|
||||||
|
/// </summary>
|
||||||
|
[ProtoContract]
|
||||||
|
public partial class SkillInfo : AMessage, IProto
|
||||||
|
{
|
||||||
|
public static SkillInfo Create(Scene scene)
|
||||||
|
{
|
||||||
|
return scene.MessagePoolComponent.Rent<SkillInfo>();
|
||||||
|
}
|
||||||
|
public override void Dispose()
|
||||||
|
{
|
||||||
|
ConfigId = default;
|
||||||
|
Level = default;
|
||||||
|
Exp = default;
|
||||||
|
#if FANTASY_NET || FANTASY_UNITY
|
||||||
|
GetScene().MessagePoolComponent.Return<SkillInfo>(this);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
[ProtoMember(1)]
|
||||||
|
public int ConfigId { get; set; }
|
||||||
|
[ProtoMember(2)]
|
||||||
|
public int Level { get; set; }
|
||||||
|
[ProtoMember(3)]
|
||||||
|
public int Exp { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -18,58 +18,41 @@ using Fantasy.Serialize;
|
|||||||
namespace Fantasy
|
namespace Fantasy
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// GameAccount实体类
|
/// 好友信息
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[ProtoContract]
|
[ProtoContract]
|
||||||
public partial class RoleBaseInfo : AMessage, IProto
|
public partial class FriendInfo : AMessage, IProto
|
||||||
{
|
{
|
||||||
public static RoleBaseInfo Create(Scene scene)
|
public static FriendInfo Create(Scene scene)
|
||||||
{
|
{
|
||||||
return scene.MessagePoolComponent.Rent<RoleBaseInfo>();
|
return scene.MessagePoolComponent.Rent<FriendInfo>();
|
||||||
}
|
}
|
||||||
public override void Dispose()
|
public override void Dispose()
|
||||||
{
|
{
|
||||||
|
Id = default;
|
||||||
|
AddTime = default;
|
||||||
NickName = default;
|
NickName = default;
|
||||||
Head = default;
|
Head = default;
|
||||||
Country = default;
|
|
||||||
Level = default;
|
Level = default;
|
||||||
Exp = default;
|
Country = default;
|
||||||
|
OnlineStatus = default;
|
||||||
#if FANTASY_NET || FANTASY_UNITY
|
#if FANTASY_NET || FANTASY_UNITY
|
||||||
GetScene().MessagePoolComponent.Return<RoleBaseInfo>(this);
|
GetScene().MessagePoolComponent.Return<FriendInfo>(this);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
[ProtoMember(1)]
|
[ProtoMember(1)]
|
||||||
public string NickName { get; set; }
|
public long Id { get; set; }
|
||||||
[ProtoMember(2)]
|
[ProtoMember(2)]
|
||||||
public string Head { get; set; }
|
public long AddTime { get; set; }
|
||||||
[ProtoMember(3)]
|
[ProtoMember(3)]
|
||||||
public string Country { get; set; }
|
public string NickName { get; set; }
|
||||||
[ProtoMember(4)]
|
[ProtoMember(4)]
|
||||||
public int Level { get; set; }
|
public string Head { get; set; }
|
||||||
[ProtoMember(5)]
|
[ProtoMember(5)]
|
||||||
public int Exp { get; set; }
|
public int Level { get; set; }
|
||||||
}
|
[ProtoMember(6)]
|
||||||
/// <summary>
|
public string Country { get; set; }
|
||||||
/// 角色信息
|
[ProtoMember(7)]
|
||||||
/// </summary>
|
public int OnlineStatus { get; set; }
|
||||||
[ProtoContract]
|
|
||||||
public partial class RoleInfo : AMessage, IProto
|
|
||||||
{
|
|
||||||
public static RoleInfo Create(Scene scene)
|
|
||||||
{
|
|
||||||
return scene.MessagePoolComponent.Rent<RoleInfo>();
|
|
||||||
}
|
|
||||||
public override void Dispose()
|
|
||||||
{
|
|
||||||
BaseInfo = default;
|
|
||||||
RoleId = default;
|
|
||||||
#if FANTASY_NET || FANTASY_UNITY
|
|
||||||
GetScene().MessagePoolComponent.Return<RoleInfo>(this);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
[ProtoMember(1)]
|
|
||||||
public RoleBaseInfo BaseInfo { get; set; }
|
|
||||||
[ProtoMember(2)]
|
|
||||||
public long RoleId { get; set; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
20
Entity/Generate/NetworkProtocol/GlobalData.cs
Normal file
20
Entity/Generate/NetworkProtocol/GlobalData.cs
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
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
|
||||||
|
{
|
||||||
|
}
|
||||||
55
Entity/Generate/NetworkProtocol/Mail.cs
Normal file
55
Entity/Generate/NetworkProtocol/Mail.cs
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
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 MailInfo : AMessage, IProto
|
||||||
|
{
|
||||||
|
public static MailInfo Create(Scene scene)
|
||||||
|
{
|
||||||
|
return scene.MessagePoolComponent.Rent<MailInfo>();
|
||||||
|
}
|
||||||
|
public override void Dispose()
|
||||||
|
{
|
||||||
|
Id = default;
|
||||||
|
Title = default;
|
||||||
|
Content = default;
|
||||||
|
SendTime = default;
|
||||||
|
Type = default;
|
||||||
|
Items.Clear();
|
||||||
|
IsRead = default;
|
||||||
|
#if FANTASY_NET || FANTASY_UNITY
|
||||||
|
GetScene().MessagePoolComponent.Return<MailInfo>(this);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
[ProtoMember(1)]
|
||||||
|
public long Id { get; set; }
|
||||||
|
[ProtoMember(2)]
|
||||||
|
public string Title { get; set; }
|
||||||
|
[ProtoMember(3)]
|
||||||
|
public string Content { get; set; }
|
||||||
|
[ProtoMember(4)]
|
||||||
|
public long SendTime { get; set; }
|
||||||
|
[ProtoMember(5)]
|
||||||
|
public int Type { get; set; }
|
||||||
|
[ProtoMember(6)]
|
||||||
|
public List<AwardInfo> Items = new List<AwardInfo>();
|
||||||
|
[ProtoMember(7)]
|
||||||
|
public bool IsRead { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -17,7 +17,7 @@ public class G2Game_EnterRequestHandler : RouteRPC<Scene, G2Game_EnterRequest, G
|
|||||||
Log.Debug("收到 G2Game_EnterRequestHandler");
|
Log.Debug("收到 G2Game_EnterRequestHandler");
|
||||||
|
|
||||||
var accountId = request.AccountId;
|
var accountId = request.AccountId;
|
||||||
|
|
||||||
// 在缓存中检查该账号是否存在
|
// 在缓存中检查该账号是否存在
|
||||||
var gameAccountManageComponent = scene.GetComponent<PlayerManageComponent>();
|
var gameAccountManageComponent = scene.GetComponent<PlayerManageComponent>();
|
||||||
Log.Debug("检查账号是否在缓存中");
|
Log.Debug("检查账号是否在缓存中");
|
||||||
@@ -32,16 +32,30 @@ public class G2Game_EnterRequestHandler : RouteRPC<Scene, G2Game_EnterRequest, G
|
|||||||
// 如果没有,就要创建一个新的并且保存到数据库。
|
// 如果没有,就要创建一个新的并且保存到数据库。
|
||||||
// 如果不存在,表示这是一个新的账号,需要创建一下这个账号。
|
// 如果不存在,表示这是一个新的账号,需要创建一下这个账号。
|
||||||
account = await PlayerFactory.Create(scene, accountId);
|
account = await PlayerFactory.Create(scene, accountId);
|
||||||
|
|
||||||
// account.
|
|
||||||
|
|
||||||
account.Basic.Level = 99;
|
account.Basic.Level = 99;
|
||||||
account.Basic.NickName = "王麻子";
|
account.Basic.NickName = "王麻子";
|
||||||
account.Basic.Country = "cn";
|
account.Basic.Country = "cn";
|
||||||
account.Basic.Exp = 999;
|
account.Basic.Exp = 999;
|
||||||
account.Basic.Head = "xxx.png";
|
account.Basic.Head = "xxx.png";
|
||||||
|
|
||||||
|
for (int i = 0; i < 500; i++)
|
||||||
|
{
|
||||||
|
var item = Entity.Create<Item>(scene, true, true);
|
||||||
|
account.Items.Add(item.Id, item);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < 500; i++)
|
||||||
|
{
|
||||||
|
var item = Entity.Create<Fish>(scene, true, true);
|
||||||
|
account.Fishes.Add(item.Id, item);
|
||||||
|
}
|
||||||
|
// account.Items
|
||||||
|
|
||||||
account.NeedSave = true;
|
account.NeedSave = true;
|
||||||
|
|
||||||
|
await account.SaveDataBase();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -68,11 +82,11 @@ public class G2Game_EnterRequestHandler : RouteRPC<Scene, G2Game_EnterRequest, G
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
account.LoginTime = TimeHelper.Now;
|
account.LoginTime = TimeHelper.Now;
|
||||||
|
|
||||||
response.RoleRouteId = account.RuntimeId;
|
response.RoleRouteId = account.RuntimeId;
|
||||||
|
|
||||||
await FTask.CompletedTask;
|
await FTask.CompletedTask;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -19,8 +19,7 @@ public static class PlayerFactory
|
|||||||
{
|
{
|
||||||
var gameAccount = Entity.Create<Player>(scene, aId, false, false);
|
var gameAccount = Entity.Create<Player>(scene, aId, false, false);
|
||||||
gameAccount.LoginTime = gameAccount.CreateTime = TimeHelper.Now;
|
gameAccount.LoginTime = gameAccount.CreateTime = TimeHelper.Now;
|
||||||
|
|
||||||
var info = gameAccount.AddComponent<PlayerInfo>();
|
|
||||||
|
|
||||||
if (isSaveDataBase)
|
if (isSaveDataBase)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<Nullable>disable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<LangVersion>default</LangVersion>
|
<LangVersion>default</LangVersion>
|
||||||
<TargetFramework>net9.0</TargetFramework>
|
<TargetFramework>net9.0</TargetFramework>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|||||||
Reference in New Issue
Block a user