快速使用协议

This commit is contained in:
2025-11-19 00:08:10 +08:00
parent 32dadfcfad
commit c8e7b38d3f
8 changed files with 192 additions and 95 deletions

View File

@@ -12,6 +12,7 @@ public class C2Game_GetItemsRequestHandler : RouteRPC<Player, C2Game_GetItemsReq
var itemContainer = entity.GetComponent<PlayerItemContainerComponent>();
response.Items = itemContainer.GetItemInfos();
response.Rigs = itemContainer.GetRigInfos();
response.Slots = itemContainer.Slots;
await FTask.CompletedTask;
}
}

View File

@@ -0,0 +1,43 @@
using Fantasy;
using Fantasy.Async;
using Fantasy.Network.Interface;
namespace NB.Game;
public class C2Game_SetSlotRequestHandler : RouteRPC<Player, C2Game_SetSlotRequest, Game2C_SetSlotResponse>
{
protected override async FTask Run(Player entity, C2Game_SetSlotRequest request, Game2C_SetSlotResponse response,
Action reply)
{
var itemContainer = entity.GetComponent<PlayerItemContainerComponent>();
if (itemContainer == null)
{
response.ErrorCode = ErrorCode.ErrArgs;
return;
}
if (request.Index < 0 || request.Index >= itemContainer.Slots.Count)
{
response.ErrorCode = ErrorCode.ErrArgs;
return;
}
if (request.Id > 0)
{
if (!itemContainer.Items.TryGetValue(request.Id, out var item))
{
response.ErrorCode = ErrorCode.ErrArgs;
return;
}
itemContainer.Slots[request.Index] = request.Id;
}
else
{
itemContainer.Slots[request.Index] = 0;
}
await itemContainer.Save();
response.Slots = itemContainer.Slots;
}
}

View File

@@ -21,6 +21,30 @@ public sealed class ItemContainerDestroySystem : DestroySystem<PlayerItemContain
}
}
public sealed class ItemContainerAwakeSystem : AwakeSystem<PlayerItemContainerComponent>
{
protected override void Awake(PlayerItemContainerComponent self)
{
}
}
public sealed class ItemContainerAwakeSystem1 : DeserializeSystem<PlayerItemContainerComponent>
{
protected override void Deserialize(PlayerItemContainerComponent self)
{
if (self.Slots.Count < 9)
{
var add = 9 - self.Slots.Count;
for (int i = 0; i < add; i++)
{
self.Slots.Add(0);
}
// _ = self.Save();
}
}
}
public static class PlayerItemContainerComponentSystem
{
#region Save
@@ -65,47 +89,8 @@ public static class PlayerItemContainerComponentSystem
item = null;
return false;
// if (!self.ItemsByConfigId.TryGetValue(configId, out var itemList))
// {
// item = null;
// return;
// }
//
// item = itemList.First();
}
// /// <summary>
// /// 通过配置id获取物品
// /// </summary>
// /// <param name="self"></param>
// /// <param name="configId"></param>
// /// <param name="items"></param>
// public static void GetItemByConfigId(this ItemContainer self, uint configId, List<Item> items)
// {
// if (!self.ItemsByConfigId.TryGetValue(configId, out var itemList))
// {
// return;
// }
//
// items.AddRange(itemList);
// }
// /// <summary>
// /// 通过类型获取物品
// /// </summary>
// /// <param name="self"></param>
// /// <param name="type"></param>
// /// <param name="items"></param>
// public static void GetItemByType(this ItemContainer self, ItemType type, List<Item> items)
// {
// if (!self.ItemsByType.TryGetValue((uint)type, out var itemList))
// {
// return;
// }
//
// items.AddRange(itemList);
// }
#endregion
#region Add
@@ -146,22 +131,6 @@ public static class PlayerItemContainerComponentSystem
return ret;
}
// public static List<GearInfo> GetGearInfos(this PlayerItemContainerComponent self)
// {
// List<GearInfo> ret = new List<GearInfo>(self.FishingRig.Count);
//
// foreach (var (rod, rigs) in self.FishingRig)
// {
// GearInfo gearInfo = new GearInfo();
// gearInfo.Rod = rod;
// gearInfo.Rigs.AddRange(rigs);
// ret.Add(gearInfo);
// }
//
// return ret;
// }
public static ItemBindInfo GetRigInfo(this PlayerItemContainerComponent self, long id)
{
if (self.Binding.TryGetValue(id, out var info))