快速使用协议
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
43
Hotfix/Game/Handler/C2Game_SetSlotRequestHandler.cs
Normal file
43
Hotfix/Game/Handler/C2Game_SetSlotRequestHandler.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user