Ejemplo n.º 1
0
        public StateGroup GetSettings(ref State targetState, ref StackData stackData, Allocator allocator)
        {
            var settings = new StateGroup(1, allocator);

            if (!targetState.ValueString.Equals(new NativeString64()))
            {
                //如果指定了物品名,那么只有一种setting,也就是targetState本身
                settings.Add(targetState);
            }
            else if (targetState.ValueString.Equals(new NativeString64()) &&
                     targetState.ValueTrait != null)
            {
                //如果targetState是类别范围,需要对每种符合范围的物品做setting
                //todo 此处应查询define获得所有符合范围的物品名,示例里暂时从工具方法获取
                var itemNames =
                    Utils.GetItemNamesOfSpecificTrait(targetState.ValueTrait,
                                                      Allocator.Temp);
                for (var i = 0; i < itemNames.Length; i++)
                {
                    var state = targetState;
                    state.ValueString = itemNames[i];
                    settings.Add(state);
                }

                itemNames.Dispose();
            }
            return(settings);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 条件:世界里要有对应物品
        /// </summary>
        /// <param name="targetState"></param>
        /// <param name="setting"></param>
        /// <param name="stackData"></param>
        /// <param name="preconditions"></param>
        public void GetPreconditions([ReadOnly] ref State targetState, ref State setting,
                                     [ReadOnly] ref StackData stackData, ref StateGroup preconditions)
        {
            var state = setting;

            state.Target = Entity.Null;
            preconditions.Add(state);
        }
Ejemplo n.º 3
0
        public void GetPreconditions(ref State targetState, ref State setting,
                                     ref StackData stackData, ref StateGroup preconditions)
        {
            //我自己需要有指定的物品
            var state = setting;

            state.Target = stackData.AgentEntity;
            preconditions.Add(state);
        }
Ejemplo n.º 4
0
 public void GetEffects(ref State targetState, ref State setting,
                        ref StackData stackData, ref StateGroup effects)
 {
     effects.Add(setting);
 }