定义
This commit is contained in:
@@ -1 +1 @@
|
|||||||
{"WorksheetNames":[-8419147776733210060,-3495952183970875596,-1088042625810372120,1720330851179383898],"Tables":{"-3495952183970875596":1757242691062,"-1088042625810372120":1753532052628,"1720330851179383898":1753711757684,"3730651590607244245":1753532052629,"5812538452563588342":1753532052630}}
|
{"WorksheetNames":[-8419147776733210060,-3495952183970875596,1720330851179383898,5812538452563588342],"Tables":{"-3495952183970875596":1757296589391,"-1088042625810372120":1748918712210,"1720330851179383898":1753770985781,"3730651590607244245":1748918712210,"5812538452563588342":1751250727840}}
|
||||||
@@ -1,3 +1,86 @@
|
|||||||
syntax = "proto3";
|
syntax = "proto3";
|
||||||
package Fantasy.Network.Message;
|
package Fantasy.Network.Message;
|
||||||
|
|
||||||
|
////////////// ******** 物品信息 *******/////////////
|
||||||
|
|
||||||
|
///请求背包列表
|
||||||
|
message C2Game_GetItemsRequest // ICustomRouteRequest,Game2C_GetItemsResponse,GameRoute
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
///请求背包列表响应
|
||||||
|
message Game2C_GetItemsResponse // ICustomRouteResponse
|
||||||
|
{
|
||||||
|
repeated ItemInfo Items = 1; //物品信息
|
||||||
|
repeated ItemBindInfo Rigs = 2; //钓组信息
|
||||||
|
}
|
||||||
|
|
||||||
|
///请求使用物品
|
||||||
|
message C2Game_UseItemRequest // ICustomRouteRequest,Game2C_UseItemResponse,GameRoute
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
///请求使用物品响应
|
||||||
|
message Game2C_UseItemResponse // ICustomRouteResponse
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
///物品变化
|
||||||
|
message Game2C_ItemChange // ICustomRouteMessage,GameRoute
|
||||||
|
{
|
||||||
|
int32 Type = 1; //变化类型 0.新增 1,更新 -1删除
|
||||||
|
repeated ItemInfo Items = 2; //物品信息
|
||||||
|
repeated int64 Removes = 3; //移除物品(移除时有)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////// ******** 鱼护 *******/////////////
|
||||||
|
|
||||||
|
///请求鱼护列表
|
||||||
|
message C2Game_GetFishsRequest // ICustomRouteRequest,Game2C_GetFishsResponse,GameRoute
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
///请求鱼护列表响应
|
||||||
|
message Game2C_GetFishsResponse // ICustomRouteResponse
|
||||||
|
{
|
||||||
|
repeated FishInfo Fishs = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
///鱼护变化
|
||||||
|
message Game2C_FishChange // ICustomRouteMessage,GameRoute
|
||||||
|
{
|
||||||
|
int32 Type = 1; //变化类型 0.新增 1,更新 -1删除
|
||||||
|
repeated FishInfo Fishs = 2; //物品信息
|
||||||
|
repeated int64 Removes = 3; //移除物品(移除时有)
|
||||||
|
}
|
||||||
|
|
||||||
|
///请求出售
|
||||||
|
message C2Game_SellFishRequest // ICustomRouteRequest,Game2C_SellFishResponse,GameRoute
|
||||||
|
{
|
||||||
|
repeated int64 Ids = 1; //出售id
|
||||||
|
}
|
||||||
|
|
||||||
|
///请求出售响应
|
||||||
|
message Game2C_SellFishResponse // ICustomRouteResponse
|
||||||
|
{
|
||||||
|
repeated AwardInfo Awards = 1; //奖励
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////// ******** 商店 *******/////////////
|
||||||
|
|
||||||
|
///请求购买
|
||||||
|
message C2Game_BuyRequest // ICustomRouteRequest,Game2C_GetFishsResponse,GameRoute
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
///请求购买响应
|
||||||
|
message Game2C_BuyResponse // ICustomRouteResponse
|
||||||
|
{
|
||||||
|
repeated AwardInfo Awards = 1; //奖励
|
||||||
|
}
|
||||||
@@ -64,7 +64,8 @@ message Map2C_MoveNotify // ICustomRouteMessage,MapRoute
|
|||||||
Vector3Info Rotation = 3; //角色方向
|
Vector3Info Rotation = 3; //角色方向
|
||||||
Vector3Info Direction = 4; // 移动方向
|
Vector3Info Direction = 4; // 移动方向
|
||||||
bool IsStop = 5; // 是否停止移动
|
bool IsStop = 5; // 是否停止移动
|
||||||
int64 Timestamp = 6; // 时间点
|
bool IsRun = 6; //是否奔跑
|
||||||
|
int64 Timestamp = 7; // 时间点
|
||||||
}
|
}
|
||||||
|
|
||||||
///玩家旋转推送
|
///玩家旋转推送
|
||||||
|
|||||||
@@ -42,13 +42,13 @@ message RoleInfo
|
|||||||
RoleBaseInfo BaseInfo = 1;
|
RoleBaseInfo BaseInfo = 1;
|
||||||
int64 RoleId = 2; //账号id
|
int64 RoleId = 2; //账号id
|
||||||
repeated ItemInfo Items = 3; //身上物品
|
repeated ItemInfo Items = 3; //身上物品
|
||||||
repeated FishInfo Fishs = 4; //鱼护
|
repeated ItemBindInfo ItemBinds = 4; //物品绑定信息
|
||||||
repeated ActivityInfo Activities = 5; //活动信息
|
repeated FishInfo Fishs = 5; //鱼护
|
||||||
repeated KeyValueInt64 Currency = 6; //货币信息
|
repeated ActivityInfo Activities = 6; //活动信息
|
||||||
repeated KeyValueInt64 Slots = 7; //插槽使用情况
|
repeated KeyValueInt64 Currency = 7; //货币信息
|
||||||
repeated SkillInfo Skills = 8; //技能信息
|
repeated KeyValueInt64 Slots = 8; //插槽使用情况
|
||||||
repeated GearInfo Gears = 9; //钓组信息
|
repeated SkillInfo Skills = 9; //技能信息
|
||||||
int32 MapId = 9; //当前所在地图
|
int32 MapId = 10; //当前所在地图
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 角色信息
|
/// 角色信息
|
||||||
@@ -78,6 +78,12 @@ message AwardInfo
|
|||||||
int32 Count = 2; //数量
|
int32 Count = 2; //数量
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///玩家当前使用钓组信息
|
||||||
|
message ItemBindInfo
|
||||||
|
{
|
||||||
|
int64 Item = 1; //主物品
|
||||||
|
repeated int64 BindItems = 2; //绑定物品
|
||||||
|
}
|
||||||
///物品信息
|
///物品信息
|
||||||
message ItemInfo
|
message ItemInfo
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -23,16 +23,14 @@ message QuaternionInfo
|
|||||||
message GearInfo
|
message GearInfo
|
||||||
{
|
{
|
||||||
int64 Rod = 1;
|
int64 Rod = 1;
|
||||||
repeated int64 Rigs = 2; //钓组配件
|
repeated int64 Rigs = 2; //钓组配件
|
||||||
float LineLength = 3; //线长度
|
int32 State = 3; //杆子状态
|
||||||
float ReelSpeed = 4; //收线速度
|
Vector3Info Position = 4; //钓组当前位置
|
||||||
int32 State = 5; //杆子状态
|
Vector3Info Rotation = 5; //钓组方向
|
||||||
Vector3Info Position = 6; //钓组当前位置
|
repeated KeyValueInt32 Propertys = 6; //属性信息
|
||||||
Vector3Info Rotation = 7; //钓组方向
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
message UnitStateInfo
|
message UnitStateInfo
|
||||||
{
|
{
|
||||||
int32 State = 1; //状态id
|
int32 State = 1; //状态id
|
||||||
|
|||||||
@@ -46,5 +46,5 @@ public class Item : Entity
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 物品所属的容器
|
/// 物品所属的容器
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[BsonIgnore] ItemContainer Container;
|
[BsonIgnore] PlayerItemContainer Container;
|
||||||
}
|
}
|
||||||
@@ -6,7 +6,7 @@ using NB.Game;
|
|||||||
|
|
||||||
namespace NB;
|
namespace NB;
|
||||||
|
|
||||||
public sealed class ItemContainer : Entity
|
public sealed class PlayerItemContainer : Entity
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 最大格子数量
|
/// 最大格子数量
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
using Fantasy.Entitas;
|
|
||||||
using MongoDB.Bson.Serialization.Attributes;
|
|
||||||
|
|
||||||
namespace NB.Game;
|
|
||||||
|
|
||||||
// public class PlayerBasic : Entity
|
|
||||||
// {
|
|
||||||
// /// <summary>
|
|
||||||
// /// 昵称
|
|
||||||
// /// </summary>
|
|
||||||
// public string NickName;
|
|
||||||
//
|
|
||||||
// /// <summary>
|
|
||||||
// /// 头像
|
|
||||||
// /// </summary>
|
|
||||||
// public string Head;
|
|
||||||
//
|
|
||||||
// /// <summary>
|
|
||||||
// /// 国家
|
|
||||||
// /// </summary>
|
|
||||||
// public string Country;
|
|
||||||
//
|
|
||||||
// /// <summary>
|
|
||||||
// /// 等级
|
|
||||||
// /// </summary>
|
|
||||||
// public int Level;
|
|
||||||
//
|
|
||||||
// /// <summary>
|
|
||||||
// /// 当前经验
|
|
||||||
// /// </summary>
|
|
||||||
// public int Exp;
|
|
||||||
// }
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
using Fantasy.Entitas;
|
|
||||||
|
|
||||||
namespace NB.Game;
|
|
||||||
|
|
||||||
public enum SlotType
|
|
||||||
{
|
|
||||||
None,
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 物品
|
|
||||||
/// </summary>
|
|
||||||
Item,
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 钓组
|
|
||||||
/// </summary>
|
|
||||||
Tackle
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 快速使用插槽
|
|
||||||
/// </summary>
|
|
||||||
public class PlayerSlot : Entity
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 插槽类型
|
|
||||||
/// </summary>
|
|
||||||
public SlotType SlotType;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 绑定快速使用的id
|
|
||||||
/// </summary>
|
|
||||||
public long BindId;
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
using Fantasy.Entitas;
|
|
||||||
|
|
||||||
namespace NB;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 玩家钓组
|
|
||||||
/// </summary>
|
|
||||||
public class PlayerTackle : Entity
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -59,7 +59,7 @@ public sealed class Player : Entity
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 背包
|
/// 背包
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[BsonElement("bag")] public ItemContainer ItemContainer;
|
[BsonElement("bag")] public PlayerItemContainer ItemContainer;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 鱼护
|
/// 鱼护
|
||||||
@@ -83,14 +83,5 @@ public sealed class Player : Entity
|
|||||||
public bool IsVip => Vip != null && Vip.ExpirationTime > TimeHelper.Now;
|
public bool IsVip => Vip != null && Vip.ExpirationTime > TimeHelper.Now;
|
||||||
|
|
||||||
[BsonIgnore] public long SessionRunTimeId;
|
[BsonIgnore] public long SessionRunTimeId;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 需要保存数据库
|
|
||||||
/// </summary>
|
|
||||||
[BsonIgnore] public bool NeedSave;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 需要保存数据库时间
|
|
||||||
/// </summary>
|
|
||||||
[BsonIgnore] public long NeedSaveTime;
|
|
||||||
}
|
}
|
||||||
@@ -4,7 +4,5 @@ namespace NB.Game;
|
|||||||
|
|
||||||
public sealed class PlayerManageComponent : Entity
|
public sealed class PlayerManageComponent : Entity
|
||||||
{
|
{
|
||||||
public long AutoSaveTimerId;
|
|
||||||
|
|
||||||
public readonly Dictionary<long, Player> Players = new();
|
public readonly Dictionary<long, Player> Players = new();
|
||||||
}
|
}
|
||||||
@@ -150,12 +150,12 @@ namespace Fantasy
|
|||||||
BaseInfo = default;
|
BaseInfo = default;
|
||||||
RoleId = default;
|
RoleId = default;
|
||||||
Items.Clear();
|
Items.Clear();
|
||||||
|
ItemBinds.Clear();
|
||||||
Fishs.Clear();
|
Fishs.Clear();
|
||||||
Activities.Clear();
|
Activities.Clear();
|
||||||
Currency.Clear();
|
Currency.Clear();
|
||||||
Slots.Clear();
|
Slots.Clear();
|
||||||
Skills.Clear();
|
Skills.Clear();
|
||||||
Gears.Clear();
|
|
||||||
MapId = default;
|
MapId = default;
|
||||||
#if FANTASY_NET || FANTASY_UNITY
|
#if FANTASY_NET || FANTASY_UNITY
|
||||||
GetScene().MessagePoolComponent.Return<RoleInfo>(this);
|
GetScene().MessagePoolComponent.Return<RoleInfo>(this);
|
||||||
@@ -168,17 +168,17 @@ namespace Fantasy
|
|||||||
[ProtoMember(3)]
|
[ProtoMember(3)]
|
||||||
public List<ItemInfo> Items = new List<ItemInfo>();
|
public List<ItemInfo> Items = new List<ItemInfo>();
|
||||||
[ProtoMember(4)]
|
[ProtoMember(4)]
|
||||||
public List<FishInfo> Fishs = new List<FishInfo>();
|
public List<ItemBindInfo> ItemBinds = new List<ItemBindInfo>();
|
||||||
[ProtoMember(5)]
|
[ProtoMember(5)]
|
||||||
public List<ActivityInfo> Activities = new List<ActivityInfo>();
|
public List<FishInfo> Fishs = new List<FishInfo>();
|
||||||
[ProtoMember(6)]
|
[ProtoMember(6)]
|
||||||
public List<KeyValueInt64> Currency = new List<KeyValueInt64>();
|
public List<ActivityInfo> Activities = new List<ActivityInfo>();
|
||||||
[ProtoMember(7)]
|
[ProtoMember(7)]
|
||||||
public List<KeyValueInt64> Slots = new List<KeyValueInt64>();
|
public List<KeyValueInt64> Currency = new List<KeyValueInt64>();
|
||||||
[ProtoMember(8)]
|
[ProtoMember(8)]
|
||||||
public List<SkillInfo> Skills = new List<SkillInfo>();
|
public List<KeyValueInt64> Slots = new List<KeyValueInt64>();
|
||||||
[ProtoMember(9)]
|
[ProtoMember(9)]
|
||||||
public List<GearInfo> Gears = new List<GearInfo>();
|
public List<SkillInfo> Skills = new List<SkillInfo>();
|
||||||
[ProtoMember(10)]
|
[ProtoMember(10)]
|
||||||
public int MapId { get; set; }
|
public int MapId { get; set; }
|
||||||
}
|
}
|
||||||
@@ -267,6 +267,29 @@ namespace Fantasy
|
|||||||
public int Count { get; set; }
|
public int Count { get; set; }
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
/// 玩家当前使用钓组信息
|
||||||
|
/// </summary>
|
||||||
|
[ProtoContract]
|
||||||
|
public partial class ItemBindInfo : AMessage, IProto
|
||||||
|
{
|
||||||
|
public static ItemBindInfo Create(Scene scene)
|
||||||
|
{
|
||||||
|
return scene.MessagePoolComponent.Rent<ItemBindInfo>();
|
||||||
|
}
|
||||||
|
public override void Dispose()
|
||||||
|
{
|
||||||
|
Item = default;
|
||||||
|
BindItems.Clear();
|
||||||
|
#if FANTASY_NET || FANTASY_UNITY
|
||||||
|
GetScene().MessagePoolComponent.Return<ItemBindInfo>(this);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
[ProtoMember(1)]
|
||||||
|
public long Item { get; set; }
|
||||||
|
[ProtoMember(2)]
|
||||||
|
public List<long> BindItems = new List<long>();
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
/// 物品信息
|
/// 物品信息
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[ProtoContract]
|
[ProtoContract]
|
||||||
|
|||||||
@@ -17,4 +17,304 @@ using Fantasy.Serialize;
|
|||||||
|
|
||||||
namespace Fantasy
|
namespace Fantasy
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// /////////// ******** 物品信息 *******/////////////
|
||||||
|
/// </summary>
|
||||||
|
/// <summary>
|
||||||
|
/// 请求背包列表
|
||||||
|
/// </summary>
|
||||||
|
[ProtoContract]
|
||||||
|
public partial class C2Game_GetItemsRequest : AMessage, ICustomRouteRequest, IProto
|
||||||
|
{
|
||||||
|
public static C2Game_GetItemsRequest Create(Scene scene)
|
||||||
|
{
|
||||||
|
return scene.MessagePoolComponent.Rent<C2Game_GetItemsRequest>();
|
||||||
|
}
|
||||||
|
public override void Dispose()
|
||||||
|
{
|
||||||
|
#if FANTASY_NET || FANTASY_UNITY
|
||||||
|
GetScene().MessagePoolComponent.Return<C2Game_GetItemsRequest>(this);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
[ProtoIgnore]
|
||||||
|
public Game2C_GetItemsResponse ResponseType { get; set; }
|
||||||
|
public uint OpCode() { return OuterOpcode.C2Game_GetItemsRequest; }
|
||||||
|
[ProtoIgnore]
|
||||||
|
public int RouteType => Fantasy.RouteType.GameRoute;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 请求背包列表响应
|
||||||
|
/// </summary>
|
||||||
|
[ProtoContract]
|
||||||
|
public partial class Game2C_GetItemsResponse : AMessage, ICustomRouteResponse, IProto
|
||||||
|
{
|
||||||
|
public static Game2C_GetItemsResponse Create(Scene scene)
|
||||||
|
{
|
||||||
|
return scene.MessagePoolComponent.Rent<Game2C_GetItemsResponse>();
|
||||||
|
}
|
||||||
|
public override void Dispose()
|
||||||
|
{
|
||||||
|
ErrorCode = default;
|
||||||
|
Items.Clear();
|
||||||
|
Rigs.Clear();
|
||||||
|
#if FANTASY_NET || FANTASY_UNITY
|
||||||
|
GetScene().MessagePoolComponent.Return<Game2C_GetItemsResponse>(this);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
public uint OpCode() { return OuterOpcode.Game2C_GetItemsResponse; }
|
||||||
|
[ProtoMember(1)]
|
||||||
|
public List<ItemInfo> Items = new List<ItemInfo>();
|
||||||
|
[ProtoMember(2)]
|
||||||
|
public List<ItemBindInfo> Rigs = new List<ItemBindInfo>();
|
||||||
|
[ProtoMember(3)]
|
||||||
|
public uint ErrorCode { get; set; }
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 请求使用物品
|
||||||
|
/// </summary>
|
||||||
|
[ProtoContract]
|
||||||
|
public partial class C2Game_UseItemRequest : AMessage, ICustomRouteRequest, IProto
|
||||||
|
{
|
||||||
|
public static C2Game_UseItemRequest Create(Scene scene)
|
||||||
|
{
|
||||||
|
return scene.MessagePoolComponent.Rent<C2Game_UseItemRequest>();
|
||||||
|
}
|
||||||
|
public override void Dispose()
|
||||||
|
{
|
||||||
|
#if FANTASY_NET || FANTASY_UNITY
|
||||||
|
GetScene().MessagePoolComponent.Return<C2Game_UseItemRequest>(this);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
[ProtoIgnore]
|
||||||
|
public Game2C_UseItemResponse ResponseType { get; set; }
|
||||||
|
public uint OpCode() { return OuterOpcode.C2Game_UseItemRequest; }
|
||||||
|
[ProtoIgnore]
|
||||||
|
public int RouteType => Fantasy.RouteType.GameRoute;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 请求使用物品响应
|
||||||
|
/// </summary>
|
||||||
|
[ProtoContract]
|
||||||
|
public partial class Game2C_UseItemResponse : AMessage, ICustomRouteResponse, IProto
|
||||||
|
{
|
||||||
|
public static Game2C_UseItemResponse Create(Scene scene)
|
||||||
|
{
|
||||||
|
return scene.MessagePoolComponent.Rent<Game2C_UseItemResponse>();
|
||||||
|
}
|
||||||
|
public override void Dispose()
|
||||||
|
{
|
||||||
|
ErrorCode = default;
|
||||||
|
#if FANTASY_NET || FANTASY_UNITY
|
||||||
|
GetScene().MessagePoolComponent.Return<Game2C_UseItemResponse>(this);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
public uint OpCode() { return OuterOpcode.Game2C_UseItemResponse; }
|
||||||
|
[ProtoMember(1)]
|
||||||
|
public uint ErrorCode { get; set; }
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 物品变化
|
||||||
|
/// </summary>
|
||||||
|
[ProtoContract]
|
||||||
|
public partial class Game2C_ItemChange : AMessage, ICustomRouteMessage, IProto
|
||||||
|
{
|
||||||
|
public static Game2C_ItemChange Create(Scene scene)
|
||||||
|
{
|
||||||
|
return scene.MessagePoolComponent.Rent<Game2C_ItemChange>();
|
||||||
|
}
|
||||||
|
public override void Dispose()
|
||||||
|
{
|
||||||
|
Type = default;
|
||||||
|
Items.Clear();
|
||||||
|
Removes.Clear();
|
||||||
|
#if FANTASY_NET || FANTASY_UNITY
|
||||||
|
GetScene().MessagePoolComponent.Return<Game2C_ItemChange>(this);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
public uint OpCode() { return OuterOpcode.Game2C_ItemChange; }
|
||||||
|
[ProtoIgnore]
|
||||||
|
public int RouteType => Fantasy.RouteType.GameRoute;
|
||||||
|
[ProtoMember(1)]
|
||||||
|
public int Type { get; set; }
|
||||||
|
[ProtoMember(2)]
|
||||||
|
public List<ItemInfo> Items = new List<ItemInfo>();
|
||||||
|
[ProtoMember(3)]
|
||||||
|
public List<long> Removes = new List<long>();
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// /////////// ******** 鱼护 *******/////////////
|
||||||
|
/// </summary>
|
||||||
|
/// <summary>
|
||||||
|
/// 请求鱼护列表
|
||||||
|
/// </summary>
|
||||||
|
[ProtoContract]
|
||||||
|
public partial class C2Game_GetFishsRequest : AMessage, ICustomRouteRequest, IProto
|
||||||
|
{
|
||||||
|
public static C2Game_GetFishsRequest Create(Scene scene)
|
||||||
|
{
|
||||||
|
return scene.MessagePoolComponent.Rent<C2Game_GetFishsRequest>();
|
||||||
|
}
|
||||||
|
public override void Dispose()
|
||||||
|
{
|
||||||
|
#if FANTASY_NET || FANTASY_UNITY
|
||||||
|
GetScene().MessagePoolComponent.Return<C2Game_GetFishsRequest>(this);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
[ProtoIgnore]
|
||||||
|
public Game2C_GetFishsResponse ResponseType { get; set; }
|
||||||
|
public uint OpCode() { return OuterOpcode.C2Game_GetFishsRequest; }
|
||||||
|
[ProtoIgnore]
|
||||||
|
public int RouteType => Fantasy.RouteType.GameRoute;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 请求鱼护列表响应
|
||||||
|
/// </summary>
|
||||||
|
[ProtoContract]
|
||||||
|
public partial class Game2C_GetFishsResponse : AMessage, ICustomRouteResponse, IProto
|
||||||
|
{
|
||||||
|
public static Game2C_GetFishsResponse Create(Scene scene)
|
||||||
|
{
|
||||||
|
return scene.MessagePoolComponent.Rent<Game2C_GetFishsResponse>();
|
||||||
|
}
|
||||||
|
public override void Dispose()
|
||||||
|
{
|
||||||
|
ErrorCode = default;
|
||||||
|
Fishs.Clear();
|
||||||
|
#if FANTASY_NET || FANTASY_UNITY
|
||||||
|
GetScene().MessagePoolComponent.Return<Game2C_GetFishsResponse>(this);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
public uint OpCode() { return OuterOpcode.Game2C_GetFishsResponse; }
|
||||||
|
[ProtoMember(1)]
|
||||||
|
public List<FishInfo> Fishs = new List<FishInfo>();
|
||||||
|
[ProtoMember(2)]
|
||||||
|
public uint ErrorCode { get; set; }
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 鱼护变化
|
||||||
|
/// </summary>
|
||||||
|
[ProtoContract]
|
||||||
|
public partial class Game2C_FishChange : AMessage, ICustomRouteMessage, IProto
|
||||||
|
{
|
||||||
|
public static Game2C_FishChange Create(Scene scene)
|
||||||
|
{
|
||||||
|
return scene.MessagePoolComponent.Rent<Game2C_FishChange>();
|
||||||
|
}
|
||||||
|
public override void Dispose()
|
||||||
|
{
|
||||||
|
Type = default;
|
||||||
|
Fishs.Clear();
|
||||||
|
Removes.Clear();
|
||||||
|
#if FANTASY_NET || FANTASY_UNITY
|
||||||
|
GetScene().MessagePoolComponent.Return<Game2C_FishChange>(this);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
public uint OpCode() { return OuterOpcode.Game2C_FishChange; }
|
||||||
|
[ProtoIgnore]
|
||||||
|
public int RouteType => Fantasy.RouteType.GameRoute;
|
||||||
|
[ProtoMember(1)]
|
||||||
|
public int Type { get; set; }
|
||||||
|
[ProtoMember(2)]
|
||||||
|
public List<FishInfo> Fishs = new List<FishInfo>();
|
||||||
|
[ProtoMember(3)]
|
||||||
|
public List<long> Removes = new List<long>();
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 请求出售
|
||||||
|
/// </summary>
|
||||||
|
[ProtoContract]
|
||||||
|
public partial class C2Game_SellFishRequest : AMessage, ICustomRouteRequest, IProto
|
||||||
|
{
|
||||||
|
public static C2Game_SellFishRequest Create(Scene scene)
|
||||||
|
{
|
||||||
|
return scene.MessagePoolComponent.Rent<C2Game_SellFishRequest>();
|
||||||
|
}
|
||||||
|
public override void Dispose()
|
||||||
|
{
|
||||||
|
Ids.Clear();
|
||||||
|
#if FANTASY_NET || FANTASY_UNITY
|
||||||
|
GetScene().MessagePoolComponent.Return<C2Game_SellFishRequest>(this);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
[ProtoIgnore]
|
||||||
|
public Game2C_SellFishResponse ResponseType { get; set; }
|
||||||
|
public uint OpCode() { return OuterOpcode.C2Game_SellFishRequest; }
|
||||||
|
[ProtoIgnore]
|
||||||
|
public int RouteType => Fantasy.RouteType.GameRoute;
|
||||||
|
[ProtoMember(1)]
|
||||||
|
public List<long> Ids = new List<long>();
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 请求出售响应
|
||||||
|
/// </summary>
|
||||||
|
[ProtoContract]
|
||||||
|
public partial class Game2C_SellFishResponse : AMessage, ICustomRouteResponse, IProto
|
||||||
|
{
|
||||||
|
public static Game2C_SellFishResponse Create(Scene scene)
|
||||||
|
{
|
||||||
|
return scene.MessagePoolComponent.Rent<Game2C_SellFishResponse>();
|
||||||
|
}
|
||||||
|
public override void Dispose()
|
||||||
|
{
|
||||||
|
ErrorCode = default;
|
||||||
|
Awards.Clear();
|
||||||
|
#if FANTASY_NET || FANTASY_UNITY
|
||||||
|
GetScene().MessagePoolComponent.Return<Game2C_SellFishResponse>(this);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
public uint OpCode() { return OuterOpcode.Game2C_SellFishResponse; }
|
||||||
|
[ProtoMember(1)]
|
||||||
|
public List<AwardInfo> Awards = new List<AwardInfo>();
|
||||||
|
[ProtoMember(2)]
|
||||||
|
public uint ErrorCode { get; set; }
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// /////////// ******** 商店 *******/////////////
|
||||||
|
/// </summary>
|
||||||
|
/// <summary>
|
||||||
|
/// 请求购买
|
||||||
|
/// </summary>
|
||||||
|
[ProtoContract]
|
||||||
|
public partial class C2Game_BuyRequest : AMessage, ICustomRouteRequest, IProto
|
||||||
|
{
|
||||||
|
public static C2Game_BuyRequest Create(Scene scene)
|
||||||
|
{
|
||||||
|
return scene.MessagePoolComponent.Rent<C2Game_BuyRequest>();
|
||||||
|
}
|
||||||
|
public override void Dispose()
|
||||||
|
{
|
||||||
|
#if FANTASY_NET || FANTASY_UNITY
|
||||||
|
GetScene().MessagePoolComponent.Return<C2Game_BuyRequest>(this);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
[ProtoIgnore]
|
||||||
|
public Game2C_GetFishsResponse ResponseType { get; set; }
|
||||||
|
public uint OpCode() { return OuterOpcode.C2Game_BuyRequest; }
|
||||||
|
[ProtoIgnore]
|
||||||
|
public int RouteType => Fantasy.RouteType.GameRoute;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 请求购买响应
|
||||||
|
/// </summary>
|
||||||
|
[ProtoContract]
|
||||||
|
public partial class Game2C_BuyResponse : AMessage, ICustomRouteResponse, IProto
|
||||||
|
{
|
||||||
|
public static Game2C_BuyResponse Create(Scene scene)
|
||||||
|
{
|
||||||
|
return scene.MessagePoolComponent.Rent<Game2C_BuyResponse>();
|
||||||
|
}
|
||||||
|
public override void Dispose()
|
||||||
|
{
|
||||||
|
ErrorCode = default;
|
||||||
|
Awards.Clear();
|
||||||
|
#if FANTASY_NET || FANTASY_UNITY
|
||||||
|
GetScene().MessagePoolComponent.Return<Game2C_BuyResponse>(this);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
public uint OpCode() { return OuterOpcode.Game2C_BuyResponse; }
|
||||||
|
[ProtoMember(1)]
|
||||||
|
public List<AwardInfo> Awards = new List<AwardInfo>();
|
||||||
|
[ProtoMember(2)]
|
||||||
|
public uint ErrorCode { get; set; }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ namespace Fantasy
|
|||||||
public uint ErrorCode { get; set; }
|
public uint ErrorCode { get; set; }
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 请求网关离开房间
|
/// 请求网关离开房间(离开房间,但是不离开地图)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[ProtoContract]
|
[ProtoContract]
|
||||||
public partial class C2G_ExitRoomRequest : AMessage, IRequest, IProto
|
public partial class C2G_ExitRoomRequest : AMessage, IRequest, IProto
|
||||||
|
|||||||
@@ -100,11 +100,10 @@ namespace Fantasy
|
|||||||
{
|
{
|
||||||
Rod = default;
|
Rod = default;
|
||||||
Rigs.Clear();
|
Rigs.Clear();
|
||||||
LineLength = default;
|
|
||||||
ReelSpeed = default;
|
|
||||||
State = default;
|
State = default;
|
||||||
Position = default;
|
Position = default;
|
||||||
Rotation = default;
|
Rotation = default;
|
||||||
|
Propertys.Clear();
|
||||||
#if FANTASY_NET || FANTASY_UNITY
|
#if FANTASY_NET || FANTASY_UNITY
|
||||||
GetScene().MessagePoolComponent.Return<GearInfo>(this);
|
GetScene().MessagePoolComponent.Return<GearInfo>(this);
|
||||||
#endif
|
#endif
|
||||||
@@ -114,15 +113,13 @@ namespace Fantasy
|
|||||||
[ProtoMember(2)]
|
[ProtoMember(2)]
|
||||||
public List<long> Rigs = new List<long>();
|
public List<long> Rigs = new List<long>();
|
||||||
[ProtoMember(3)]
|
[ProtoMember(3)]
|
||||||
public float LineLength { get; set; }
|
|
||||||
[ProtoMember(4)]
|
|
||||||
public float ReelSpeed { get; set; }
|
|
||||||
[ProtoMember(5)]
|
|
||||||
public int State { get; set; }
|
public int State { get; set; }
|
||||||
[ProtoMember(6)]
|
[ProtoMember(4)]
|
||||||
public Vector3Info Position { get; set; }
|
public Vector3Info Position { get; set; }
|
||||||
[ProtoMember(7)]
|
[ProtoMember(5)]
|
||||||
public Vector3Info Rotation { get; set; }
|
public Vector3Info Rotation { get; set; }
|
||||||
|
[ProtoMember(6)]
|
||||||
|
public List<KeyValueInt32> Propertys = new List<KeyValueInt32>();
|
||||||
}
|
}
|
||||||
[ProtoContract]
|
[ProtoContract]
|
||||||
public partial class UnitStateInfo : AMessage, IProto
|
public partial class UnitStateInfo : AMessage, IProto
|
||||||
|
|||||||
@@ -2,60 +2,72 @@ namespace Fantasy
|
|||||||
{
|
{
|
||||||
public static partial class OuterOpcode
|
public static partial class OuterOpcode
|
||||||
{
|
{
|
||||||
public const uint C2Map_CreateRoomRequest = 2281711377;
|
public const uint C2Game_GetItemsRequest = 2281711377;
|
||||||
public const uint Map2C_CreateRoomResponse = 2415929105;
|
public const uint Game2C_GetItemsResponse = 2415929105;
|
||||||
|
public const uint C2Game_UseItemRequest = 2281711378;
|
||||||
|
public const uint Game2C_UseItemResponse = 2415929106;
|
||||||
|
public const uint Game2C_ItemChange = 2147493649;
|
||||||
|
public const uint C2Game_GetFishsRequest = 2281711379;
|
||||||
|
public const uint Game2C_GetFishsResponse = 2415929107;
|
||||||
|
public const uint Game2C_FishChange = 2147493650;
|
||||||
|
public const uint C2Game_SellFishRequest = 2281711380;
|
||||||
|
public const uint Game2C_SellFishResponse = 2415929108;
|
||||||
|
public const uint C2Game_BuyRequest = 2281711381;
|
||||||
|
public const uint Game2C_BuyResponse = 2415929109;
|
||||||
|
public const uint C2Map_CreateRoomRequest = 2281711382;
|
||||||
|
public const uint Map2C_CreateRoomResponse = 2415929110;
|
||||||
public const uint C2G_ExitRoomRequest = 268445457;
|
public const uint C2G_ExitRoomRequest = 268445457;
|
||||||
public const uint G2C_ExitRoomResponse = 402663185;
|
public const uint G2C_ExitRoomResponse = 402663185;
|
||||||
public const uint C2G_EnterMapRequest = 268445458;
|
public const uint C2G_EnterMapRequest = 268445458;
|
||||||
public const uint G2C_EnterMapResponse = 402663186;
|
public const uint G2C_EnterMapResponse = 402663186;
|
||||||
public const uint Map2C_ChangeMap = 2147493649;
|
public const uint Map2C_ChangeMap = 2147493651;
|
||||||
public const uint C2A_LoginRequest = 268445459;
|
public const uint C2A_LoginRequest = 268445459;
|
||||||
public const uint A2C_LoginResponse = 402663187;
|
public const uint A2C_LoginResponse = 402663187;
|
||||||
public const uint C2G_LoginRequest = 268445460;
|
public const uint C2G_LoginRequest = 268445460;
|
||||||
public const uint G2C_LoginResponse = 402663188;
|
public const uint G2C_LoginResponse = 402663188;
|
||||||
public const uint G2C_RepeatLogin = 134227729;
|
public const uint G2C_RepeatLogin = 134227729;
|
||||||
public const uint C2Game_GetRoleInfoRequest = 2281711378;
|
public const uint C2Game_GetRoleInfoRequest = 2281711383;
|
||||||
public const uint Game2C_GetRoleInfoResponse = 2415929106;
|
public const uint Game2C_GetRoleInfoResponse = 2415929111;
|
||||||
public const uint Map2C_RoleEnterRoomNotify = 2147493650;
|
public const uint Map2C_RoleEnterRoomNotify = 2147493652;
|
||||||
public const uint Map2C_RoleExitRoomNotify = 2147493651;
|
public const uint Map2C_RoleExitRoomNotify = 2147493653;
|
||||||
public const uint Map2C_RoleStateNotify = 2147493652;
|
public const uint Map2C_RoleStateNotify = 2147493654;
|
||||||
public const uint Map2C_RoleGearChangeNotify = 2147493653;
|
public const uint Map2C_RoleGearChangeNotify = 2147493655;
|
||||||
public const uint Map2C_RolePropertyChangeNotify = 2147493654;
|
public const uint Map2C_RolePropertyChangeNotify = 2147493656;
|
||||||
public const uint C2Map_Move = 2147493655;
|
public const uint C2Map_Move = 2147493657;
|
||||||
public const uint C2Map_Look = 2147493656;
|
public const uint C2Map_Look = 2147493658;
|
||||||
public const uint Map2C_MoveNotify = 2147493657;
|
public const uint Map2C_MoveNotify = 2147493659;
|
||||||
public const uint Map2C_LookeNotify = 2147493658;
|
public const uint Map2C_LookeNotify = 2147493660;
|
||||||
public const uint C2S_GetConversationsRequest = 2281711379;
|
public const uint C2S_GetConversationsRequest = 2281711384;
|
||||||
public const uint S2C_GetConversationsResponse = 2415929107;
|
public const uint S2C_GetConversationsResponse = 2415929112;
|
||||||
public const uint C2S_SendMailRequest = 2281711380;
|
public const uint C2S_SendMailRequest = 2281711385;
|
||||||
public const uint S2C_SendMailResponse = 2415929108;
|
public const uint S2C_SendMailResponse = 2415929113;
|
||||||
public const uint C2S_DeleteMailRequest = 2281711381;
|
public const uint C2S_DeleteMailRequest = 2281711386;
|
||||||
public const uint S2C_DeleteMailResponse = 2415929109;
|
public const uint S2C_DeleteMailResponse = 2415929114;
|
||||||
public const uint S2C_HaveMail = 2147493659;
|
public const uint S2C_HaveMail = 2147493661;
|
||||||
public const uint S2C_MailState = 2147493660;
|
public const uint S2C_MailState = 2147493662;
|
||||||
public const uint C2S_CreateChannelRequest = 2281711382;
|
public const uint C2S_CreateChannelRequest = 2281711387;
|
||||||
public const uint S2C_CreateChannelResponse = 2415929110;
|
public const uint S2C_CreateChannelResponse = 2415929115;
|
||||||
public const uint C2S_JoinChannelRequest = 2281711383;
|
public const uint C2S_JoinChannelRequest = 2281711388;
|
||||||
public const uint S2C_JoinChannelResponse = 2415929111;
|
public const uint S2C_JoinChannelResponse = 2415929116;
|
||||||
public const uint C2S_SendMessageRequest = 2281711384;
|
public const uint C2S_SendMessageRequest = 2281711389;
|
||||||
public const uint S2C_SendMessageResponse = 2415929112;
|
public const uint S2C_SendMessageResponse = 2415929117;
|
||||||
public const uint S2C_Message = 2147493661;
|
public const uint S2C_Message = 2147493663;
|
||||||
public const uint C2S_CreateClubRequest = 2281711385;
|
public const uint C2S_CreateClubRequest = 2281711390;
|
||||||
public const uint S2C_CreateClubResponse = 2415929113;
|
public const uint S2C_CreateClubResponse = 2415929118;
|
||||||
public const uint C2S_GetClubInfoRequest = 2281711386;
|
public const uint C2S_GetClubInfoRequest = 2281711391;
|
||||||
public const uint S2C_GetClubInfoResponse = 2415929114;
|
public const uint S2C_GetClubInfoResponse = 2415929119;
|
||||||
public const uint C2S_GetMemberListRequest = 2281711387;
|
public const uint C2S_GetMemberListRequest = 2281711392;
|
||||||
public const uint S2C_GetMemberListResponse = 2415929115;
|
public const uint S2C_GetMemberListResponse = 2415929120;
|
||||||
public const uint C2S_GetClubListRequest = 2281711388;
|
public const uint C2S_GetClubListRequest = 2281711393;
|
||||||
public const uint S2C_GetClubListResponse = 2415929116;
|
public const uint S2C_GetClubListResponse = 2415929121;
|
||||||
public const uint C2S_JoinClubRequest = 2281711389;
|
public const uint C2S_JoinClubRequest = 2281711394;
|
||||||
public const uint S2C_JoinClubResponse = 2415929117;
|
public const uint S2C_JoinClubResponse = 2415929122;
|
||||||
public const uint C2S_LeaveClubRequest = 2281711390;
|
public const uint C2S_LeaveClubRequest = 2281711395;
|
||||||
public const uint S2C_LeaveClubResponse = 2415929118;
|
public const uint S2C_LeaveClubResponse = 2415929123;
|
||||||
public const uint C2S_DissolveClubRequest = 2281711391;
|
public const uint C2S_DissolveClubRequest = 2281711396;
|
||||||
public const uint S2C_DissolveClubResponse = 2415929119;
|
public const uint S2C_DissolveClubResponse = 2415929124;
|
||||||
public const uint C2S_DisposeJoinRequest = 2281711392;
|
public const uint C2S_DisposeJoinRequest = 2281711397;
|
||||||
public const uint S2C_DisposeJoinResponse = 2415929120;
|
public const uint S2C_DisposeJoinResponse = 2415929125;
|
||||||
public const uint S2C_ClubChange = 2147493662;
|
public const uint S2C_ClubChange = 2147493664;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -207,6 +207,7 @@ namespace Fantasy
|
|||||||
Rotation = default;
|
Rotation = default;
|
||||||
Direction = default;
|
Direction = default;
|
||||||
IsStop = default;
|
IsStop = default;
|
||||||
|
IsRun = default;
|
||||||
Timestamp = default;
|
Timestamp = default;
|
||||||
#if FANTASY_NET || FANTASY_UNITY
|
#if FANTASY_NET || FANTASY_UNITY
|
||||||
GetScene().MessagePoolComponent.Return<Map2C_MoveNotify>(this);
|
GetScene().MessagePoolComponent.Return<Map2C_MoveNotify>(this);
|
||||||
@@ -226,6 +227,8 @@ namespace Fantasy
|
|||||||
[ProtoMember(5)]
|
[ProtoMember(5)]
|
||||||
public bool IsStop { get; set; }
|
public bool IsStop { get; set; }
|
||||||
[ProtoMember(6)]
|
[ProtoMember(6)]
|
||||||
|
public bool IsRun { get; set; }
|
||||||
|
[ProtoMember(7)]
|
||||||
public long Timestamp { get; set; }
|
public long Timestamp { get; set; }
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ using Fantasy.Entitas.Interface;
|
|||||||
|
|
||||||
namespace NB.Game;
|
namespace NB.Game;
|
||||||
|
|
||||||
public sealed class ItemContainerDestroySystem : DestroySystem<ItemContainer>
|
public sealed class ItemContainerDestroySystem : DestroySystem<PlayerItemContainer>
|
||||||
{
|
{
|
||||||
protected override void Destroy(ItemContainer self)
|
protected override void Destroy(PlayerItemContainer self)
|
||||||
{
|
{
|
||||||
self.CellCountMax = 0;
|
self.CellCountMax = 0;
|
||||||
|
|
||||||
@@ -31,7 +31,7 @@ public static class ItemContainerSystem
|
|||||||
/// <param name="id"></param>
|
/// <param name="id"></param>
|
||||||
/// <param name="item"></param>
|
/// <param name="item"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static bool GetItemById(this ItemContainer self, long id, out Item? item)
|
public static bool GetItemById(this PlayerItemContainer self, long id, out Item? item)
|
||||||
{
|
{
|
||||||
return self.Items.TryGetValue(id, out item);
|
return self.Items.TryGetValue(id, out item);
|
||||||
}
|
}
|
||||||
@@ -42,7 +42,7 @@ public static class ItemContainerSystem
|
|||||||
/// <param name="self"></param>
|
/// <param name="self"></param>
|
||||||
/// <param name="configId"></param>
|
/// <param name="configId"></param>
|
||||||
/// <param name="item"></param>
|
/// <param name="item"></param>
|
||||||
public static bool GetFistItemByConfigId(this ItemContainer self, int configId, out Item? item)
|
public static bool GetFistItemByConfigId(this PlayerItemContainer self, int configId, out Item? item)
|
||||||
{
|
{
|
||||||
foreach (var (_, it) in self.Items)
|
foreach (var (_, it) in self.Items)
|
||||||
{
|
{
|
||||||
@@ -100,7 +100,7 @@ public static class ItemContainerSystem
|
|||||||
|
|
||||||
#region Add
|
#region Add
|
||||||
|
|
||||||
public static void Add(this ItemContainer self, int configId, int count)
|
public static void Add(this PlayerItemContainer self, int configId, int count)
|
||||||
{
|
{
|
||||||
var item = ItemFactory.Create(self.Scene, configId, count);
|
var item = ItemFactory.Create(self.Scene, configId, count);
|
||||||
self.Items.Add(item.Id, item);
|
self.Items.Add(item.Id, item);
|
||||||
@@ -110,7 +110,7 @@ public static class ItemContainerSystem
|
|||||||
|
|
||||||
#region 结构转换
|
#region 结构转换
|
||||||
|
|
||||||
public static List<ItemInfo> GetItemInfos(this ItemContainer self)
|
public static List<ItemInfo> GetItemInfos(this PlayerItemContainer self)
|
||||||
{
|
{
|
||||||
List<ItemInfo> ret = new List<ItemInfo>();
|
List<ItemInfo> ret = new List<ItemInfo>();
|
||||||
foreach (var (_, item) in self.Items)
|
foreach (var (_, item) in self.Items)
|
||||||
@@ -121,7 +121,7 @@ public static class ItemContainerSystem
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<GearInfo> GetGearInfos(this ItemContainer self)
|
public static List<GearInfo> GetGearInfos(this PlayerItemContainer self)
|
||||||
{
|
{
|
||||||
List<GearInfo> ret = new List<GearInfo>();
|
List<GearInfo> ret = new List<GearInfo>();
|
||||||
|
|
||||||
|
|||||||
@@ -12,8 +12,6 @@ public sealed class PlayerManageComponentAwakeSystem : AwakeSystem<PlayerManageC
|
|||||||
{
|
{
|
||||||
protected override void Awake(PlayerManageComponent self)
|
protected override void Awake(PlayerManageComponent self)
|
||||||
{
|
{
|
||||||
self.AutoSaveTimerId =
|
|
||||||
self.Scene.TimerComponent.Net.RepeatedTimer(1000 * 60, () => { _ = self.CheckAutoSave(); });
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -27,8 +25,6 @@ public sealed class PlayerManageComponentDestroySystem : DestroySystem<PlayerMan
|
|||||||
}
|
}
|
||||||
|
|
||||||
self.Players.Clear();
|
self.Players.Clear();
|
||||||
self.Scene.TimerComponent.Net.Remove(self.AutoSaveTimerId);
|
|
||||||
self.AutoSaveTimerId = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -57,7 +53,6 @@ public static class PlayerManageComponentSystem
|
|||||||
// 如果不存在,表示这是一个新的账号,需要创建一下这个账号。
|
// 如果不存在,表示这是一个新的账号,需要创建一下这个账号。
|
||||||
account = PlayerFactory.Create(self.Scene, accountId);
|
account = PlayerFactory.Create(self.Scene, accountId);
|
||||||
|
|
||||||
|
|
||||||
account.Level = 99;
|
account.Level = 99;
|
||||||
account.NickName = "王麻子";
|
account.NickName = "王麻子";
|
||||||
account.Country = "cn";
|
account.Country = "cn";
|
||||||
@@ -103,8 +98,8 @@ public static class PlayerManageComponentSystem
|
|||||||
}
|
}
|
||||||
|
|
||||||
// account.Statistics.LoginTime = TimeHelper.Now;
|
// account.Statistics.LoginTime = TimeHelper.Now;
|
||||||
account.SetTestData();
|
account.SetTestData();
|
||||||
|
|
||||||
await account.Save();
|
await account.Save();
|
||||||
|
|
||||||
return account;
|
return account;
|
||||||
@@ -157,20 +152,29 @@ public static class PlayerManageComponentSystem
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 自动保存
|
#region 组件
|
||||||
|
|
||||||
public static async FTask CheckAutoSave(this PlayerManageComponent self)
|
/// <summary>
|
||||||
|
/// 尝试获取或增加相关组件
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="player"></param>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
public static async FTask TryComponent<T>(this Player player) where T : Entity, new()
|
||||||
{
|
{
|
||||||
foreach (var (_, player) in self.Players)
|
if (player.GetComponent<T>() == null)
|
||||||
{
|
{
|
||||||
if (player.NeedSave)
|
var component = await player.Scene.World.DataBase.Query<T>(player.Id, true);
|
||||||
|
if (component == null)
|
||||||
{
|
{
|
||||||
await player.SaveImmediately();
|
//如果没有组件
|
||||||
|
player.AddComponent<T>();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
player.AddComponent(component);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -13,12 +13,10 @@ public static class PlayerFactory
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="scene"></param>
|
/// <param name="scene"></param>
|
||||||
/// <param name="aId">ToKen令牌传递过来的aId</param>
|
/// <param name="aId">ToKen令牌传递过来的aId</param>
|
||||||
/// <param name="isSaveDataBase">是否在创建的过程中保存到数据库</param>
|
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static Player Create(Scene scene, long aId)
|
public static Player Create(Scene scene, long aId)
|
||||||
{
|
{
|
||||||
var player = Entity.Create<Player>(scene, aId, true, true);
|
var player = Entity.Create<Player>(scene, aId, true, true);
|
||||||
player.InitializeChildEntity();
|
|
||||||
return player;
|
return player;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -9,57 +9,9 @@ namespace NB.Game;
|
|||||||
public static class PlayerHelper
|
public static class PlayerHelper
|
||||||
{
|
{
|
||||||
#region MyRegion
|
#region MyRegion
|
||||||
|
|
||||||
public static void InitializeChildEntity(this Player self)
|
|
||||||
{
|
|
||||||
if (self.Vip == null)
|
|
||||||
{
|
|
||||||
self.Vip = Entity.Create<PlayerVip>(self.Scene, true, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (self.Wallet == null)
|
|
||||||
{
|
|
||||||
self.Wallet = Entity.Create<PlayerWallet>(self.Scene, true, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (self.ItemContainer == null)
|
|
||||||
{
|
|
||||||
self.ItemContainer = Entity.Create<ItemContainer>(self.Scene, true, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (self.FishContainer == null)
|
|
||||||
{
|
|
||||||
self.FishContainer = Entity.Create<FishContainer>(self.Scene, true, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (self.SkillContainer == null)
|
|
||||||
{
|
|
||||||
self.SkillContainer = Entity.Create<SkillContainer>(self.Scene, true, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (self.AchievementContainer == null)
|
|
||||||
{
|
|
||||||
self.AchievementContainer = Entity.Create<AchievementContainer>(self.Scene, true, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
// if (self.Statistics == null)
|
|
||||||
// {
|
|
||||||
// self.Statistics = Entity.Create<PlayerStatistics>(self.Scene, true, true);
|
|
||||||
// self.Statistics.LoginTime = self.Statistics.CreateTime = TimeHelper.Now;
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
public static async FTask SaveImmediately(this Player self)
|
|
||||||
{
|
|
||||||
await self.Scene.World.DataBase.Save(self);
|
|
||||||
self.NeedSave = false;
|
|
||||||
Log.Info($"player id:{self.Id} save data to dataBase");
|
|
||||||
}
|
|
||||||
|
|
||||||
public static async FTask Save(this Player self)
|
public static async FTask Save(this Player self)
|
||||||
{
|
{
|
||||||
self.NeedSave = true;
|
|
||||||
self.NeedSaveTime = TimeHelper.Now + AppConfig.PlayerDataAutoSaveTime;
|
|
||||||
//先立马保存,后续做缓存
|
//先立马保存,后续做缓存
|
||||||
await self.Scene.World.DataBase.Save(self);
|
await self.Scene.World.DataBase.Save(self);
|
||||||
}
|
}
|
||||||
@@ -97,7 +49,7 @@ public static class PlayerHelper
|
|||||||
public static async FTask Disconnect(this Player self)
|
public static async FTask Disconnect(this Player self)
|
||||||
{
|
{
|
||||||
// 保存该账号信息到数据库中。
|
// 保存该账号信息到数据库中。
|
||||||
await SaveImmediately(self);
|
await Save(self);
|
||||||
// 在缓存中移除自己,并且执行自己的Dispose方法。
|
// 在缓存中移除自己,并且执行自己的Dispose方法。
|
||||||
self.Scene.GetComponent<PlayerManageComponent>().Remove(self.Id);
|
self.Scene.GetComponent<PlayerManageComponent>().Remove(self.Id);
|
||||||
}
|
}
|
||||||
@@ -176,7 +128,6 @@ public static class PlayerHelper
|
|||||||
var info = new RoleInfo();
|
var info = new RoleInfo();
|
||||||
info.BaseInfo = GetRoleBaseInfo(self);
|
info.BaseInfo = GetRoleBaseInfo(self);
|
||||||
info.Items = self.ItemContainer.GetItemInfos();
|
info.Items = self.ItemContainer.GetItemInfos();
|
||||||
info.Gears = self.ItemContainer.GetGearInfos();
|
|
||||||
info.RoleId = self.RouteId;
|
info.RoleId = self.RouteId;
|
||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user