Exemplo n.º 1
0
        /// <summary>
        /// Deserialization constructor
        /// </summary>
        protected BaseActionDefinition(IObjectGraphNode node, object contextData)
        {
            var actionTemplate = node["Action"].RebuildObject <Name>();
            var terms          = actionTemplate.GetTerms().ToArray();
            var name           = terms[0];

            if (!name.IsPrimitive)
            {
                throw new Exception("Invalid Action Template format");
            }
            for (int i = 1; i < terms.Length; i++)
            {
                if (terms[i].IsComposed)
                {
                    throw new Exception("Invalid Action Template format");
                }
            }

            var target = SerializationServices.GetFieldOrDefault(node, "Target", Name.NIL_SYMBOL);

            if (target.IsComposed)
            {
                throw new ArgumentException("Action Definition Target must be a symbol definition", nameof(target));
            }

            Id = Guid.NewGuid();
            m_actionTemplate     = actionTemplate;
            Target               = target;
            ActivationConditions = node["Conditions"].RebuildObject <ConditionSet>();
        }
 /// <summary>
 /// Deserialization constructor
 /// </summary>
 public ActionTendency(IObjectGraphNode node, object contextData) : base(node, contextData)
 {
     ActivationCooldown = SerializationServices.GetFieldOrDefault(node, "Cooldown", (float)contextData);
 }