Ejemplo n.º 1
0
 private static void AffectToOwner(Entity entity, InteractTemplate.Effect effect)
 {
     switch (effect.Type)
     {
     case InteractTemplate.Effect.Types.Attribute:
         AffectToOwnerAttribute(entity, effect);
         break;
     }
 }
Ejemplo n.º 2
0
        private static void AffectToTargetAttribute(Entity entity, IEnumerable <Entity> targets, InteractTemplate.Effect effect)
        {
            var attributeType = AttributeHelper.TypeMap[AttributeHelper.GetTypeName(effect.Attribute)];

            targets.Gather(attributeType, result =>
            {
                Logger.Write("Interact {0} -> {1}", entity.Id, string.Join(", ", (from e in result select e.Id).ToArray()));

                if (result.Count == 0)
                {
                    return;
                }

                var effectValue = (float)effect.Value / result.Count;
                result.PostEach(attributeType, target => target.ChangeAttributeValue(
                                    effect.Attribute, effect.Field, effectValue, (operand, oldValue) => CalculateAffectedValue(effect.Function, operand, oldValue)));
            });
        }
Ejemplo n.º 3
0
 private static void AffectToOwnerAttribute(Entity entity, InteractTemplate.Effect effect)
 {
     entity.ChangeAttributeValue(
         effect.Attribute, effect.Field, effect.Value, (operand, oldValue) => CalculateAffectedValue(effect.Function, operand, oldValue));
 }
Ejemplo n.º 4
0
 private static void AffectToTarget(Entity entity, IEnumerable <Entity> targets, InteractTemplate.Effect effect)
 {
     switch (effect.Type)
     {
     case InteractTemplate.Effect.Types.Attribute:
         AffectToTargetAttribute(entity, targets, effect);
         break;
     }
 }