using System; using System.Collections; using System.Collections.Generic; using System.Linq; using BITFALL.Industry; using BITFALL.Items; using BITKit; using NodeCanvas.Framework; using UnityEngine; using Object = UnityEngine.Object; namespace BITFALL.Quest { public class CreateItemToContainer : ActionTask { [DictionaryReferenceConfig(nameof(allow_quest_item))] public const string allow_quest_item = nameof(allow_quest_item); public BBParameter size; public BBParameter itemTemplate; public BBParameter item; protected override void OnExecute() { base.OnExecute(); var containers = WorldItemContainer.Query(agent.position, size.value); containers = containers.Where(x => x.TryGetComponent(out var tag) && tag.GetTags().Contains(allow_quest_item)).ToArray(); var newItem = itemTemplate.value.Clone().As(); if (containers.Length is 0) { newItem = Object.Instantiate(itemTemplate.value.GetPrefab(), agent.position,Quaternion.identity); BIT4Log.Log($"未找到容器,已创建物品于场景,物品名称:{newItem.Name}"); } else { newItem.GetOrCreateProperty(); var container =containers.Random(); container.AddInternal(newItem); BIT4Log.Log($"已创建:{newItem.Name}于容器:{container.Name}"); } newItem.GetOrCreateProperty(); // newItem.TryRemoveProperty(); // // var data= newItem.GetOrAddProperty(()=>new GameDataStorage() // { // ReadOnly = true, // Data = Guid.NewGuid().ToString(), // Encrypted = true // }); // // key.value = data.Data; item.SetValue(newItem); EndAction(); } } }