提交示例代码

This commit is contained in:
Bob.Song
2026-03-05 11:39:06 +08:00
commit 25958f58c3
2534 changed files with 209593 additions and 0 deletions

View File

@@ -0,0 +1,82 @@
using Fantasy.Entitas.Interface;
// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract
namespace Fantasy;
public sealed class ContainerComponentDestroySystem : DestroySystem<ContainerComponent>
{
protected override void Destroy(ContainerComponent self)
{
foreach (var (_, container) in self.Containers)
{
container.Dispose();
}
self.Containers.Clear();
}
}
public sealed class ContainerComponentDeserializeSystem : DeserializeSystem<ContainerComponent>
{
protected override void Deserialize(ContainerComponent self)
{
var account = self.GetParent<Account>();
foreach (var (key, container) in self.Containers)
{
container.Deserialize(self.Scene);
container.Account = account;
}
}
}
public sealed class ContainerComponentAwakeSystem : AwakeSystem<ContainerComponent>
{
protected override void Awake(ContainerComponent self)
{
var account = self.GetParent<Account>();
var unitConfig = account.UnitConfig;
// 根据角色的配置文件创建容器。
foreach (var containerConfigId in unitConfig.MountContainer)
{
if (!ContainerConfigData.Instance.TryGet(containerConfigId, out var containerConfig))
{
Log.Error($"containerConfigId : {containerConfigId} not found");
return;
}
ContainerHelper.Create(account, (ContainerType)containerConfig.Type);
}
// 创建初始化物品到容器中。
var unitConfigItems = unitConfig.Items;
for (var itemArgs = 0; itemArgs < unitConfigItems.Length; itemArgs += 3)
{
try
{
var containerType = unitConfigItems[itemArgs];
var itemConfigId = unitConfigItems[itemArgs + 1];
var itemCount = (int)unitConfigItems[itemArgs + 2];
var item = ItemFactory.Create(self.Scene, itemConfigId, itemCount, true);
if (item == null)
{
// 这里创建物品失败,可以选择跳过这个物品,继续下一个创建。
// 也可以直接停止全部的物品创建。
continue;
}
// 添加物品到容器中。
var addItemErrorCode = ContainerHelper.AddItem(account, (ContainerType)containerType, item, ItemReason.ContainerAdd, false);
if (addItemErrorCode != 0)
{
Log.Error($"cant add item to container errorCode:{addItemErrorCode}");
continue;
}
}
catch
{
Log.Error($"unitConfig :{unitConfig.Id} items参数不正确要求是3个一组。");
// 你可以选择如果有一个出错了,跳过、继续下一个创建。
// 你还可以选择如果出错了,直接终止跳出。
break;
}
}
}
}