Пример #1
0
        private void Apply(ItemUpdatedEvent itemUpdatedEvent)
        {
            var itemInstance = ItemInstances.FirstOrDefault(ii => ii.ItemDefinitionCode == itemUpdatedEvent.ItemDefinitionCode);
            var isNull       = itemUpdatedEvent.Value == null || string.IsNullOrEmpty(itemUpdatedEvent.Value.ToString());

            if (itemInstance != null && isNull)
            {
                _itemInstances.Remove(itemInstance);
            }

            if (itemInstance == null)
            {
                itemInstance = new ItemInstance(itemUpdatedEvent.ItemDefinitionCode, itemUpdatedEvent.Value, itemUpdatedEvent.IsRequired);
                if (!isNull)
                {
                    _itemInstances.Add(itemInstance);
                }
            }
            else
            {
                itemInstance.Apply(itemUpdatedEvent);
            }

            var skippingContext = new SkippingContext();

            if (_cachedRuleEngineExecutor == null)
            {
                var assessmentRuleCollectionFactory = new AssessmentRuleCollectionFactory();
                _cachedRuleEngineExecutor = new RuleEngineExecutor <AssessmentInstance> (
                    this,
                    assessmentRuleCollectionFactory.CreateRuleCollection(this.AssessmentName));
            }
            _cachedRuleEngineExecutor
            .ForRuleSet("ItemUpdatedRuleSet" + itemInstance.ItemDefinitionCode)
            .WithContext(itemInstance, itemInstance.ItemDefinitionCode)
            .WithContext(skippingContext)
            .Execute();

            skippingContext.SkippedItemDefinitions.ForEach(
                item =>
            {
                if (item.GetIsRequired() && !_skippedItemDefinitions.Contains(item))
                {
                    _skippedItemDefinitions.Add(item);
                }
                if (ItemInstances.Any(i => i.ItemDefinitionCode == item.CodedConcept.Code))
                {
                    UpdateItem(item, null);
                }
            });
            skippingContext.UnSkippedItemDefinitions.ForEach(item => _skippedItemDefinitions.Remove(item));
        }
Пример #2
0
        private void Apply(ItemUpdatedEvent itemUpdatedEvent)
        {
            var itemInstance = ItemInstances.FirstOrDefault(ii => ii.ItemDefinitionCode == itemUpdatedEvent.ItemDefinitionCode);

            if (itemInstance == null)
            {
                _itemInstances.Add(new ItemInstance(itemUpdatedEvent.ItemDefinitionCode, itemUpdatedEvent.Value));
            }
            else
            {
                itemInstance.Apply(itemUpdatedEvent);
            }
        }
Пример #3
0
        private ItemInstances EquipSkinnedItem(ItemObject itemObject)
        {
            if (itemObject == null)
            {
                return(null);
            }

            Transform itemTransform = combiner.AddLimb(itemObject.modelPrefab, itemObject.boneNames);

            ItemInstances instances = new ItemInstances();

            instances.items.Add(itemTransform);

            return(instances);
        }
Пример #4
0
        private ItemInstances EquipMeshItem(ItemObject itemObject)
        {
            if (itemObject == null)
            {
                return(null);
            }

            Transform[] itemTransforms = combiner.AddMesh(itemObject.modelPrefab);
            if (itemTransforms.Length > 0)
            {
                ItemInstances instances = new ItemInstances();
                instances.items.AddRange(itemTransforms.ToList <Transform>());

                return(instances);
            }

            return(null);
        }
Пример #5
0
        private ItemInstances EquipSkinnedItem(ItemObject itemObject)
        {
            if (itemObject == null)
            {
                return(null);
            }

            Transform itemTransform = combiner.AddLimb(itemObject.modelPrefab, itemObject.boneNames);

            ItemInstances instances = itemTransform.gameObject.AddComponent <ItemInstances>();

            if (instances != null)
            {
                instances.items.Add(itemTransform);
            }

            return(instances);
        }
Пример #6
0
        private ItemInstances EquipMeshItem(ItemObject itemObject)
        {
            if (itemObject == null)
            {
                return(null);
            }

            Transform[] itemTransforms = combiner.AddMesh(itemObject.modelPrefab);
            if (itemTransforms.Length > 0)
            {
                ItemInstances instances = new ItemInstances();
                instances.items.AddRange(itemTransforms.ToList <Transform>());
                //foreach (Transform t in itemTransforms)
                //{
                //    instances.items.Add(t);
                //}

                //instances.transform.parent = transform;

                return(instances);
            }

            return(null);
        }