コード例 #1
0
        public override void InitializeVariable(Dictionary <string, string> variables)
        {
            string value;

            if (variables.TryGetValue("count", out value))
            {
                m_count            = int.Parse(value);
                m_modefier_configs = new AttributeModifierConfig[m_count];
                Prepare(m_count);
            }
            for (int i = 0; i < m_count; ++i)
            {
                AttributeModifierConfig modifier = RecyclableObject.Create <AttributeModifierConfig>();
                m_modefier_configs[i] = modifier;
                if (variables.TryGetValue(m_attribute_name_key[i], out value))
                {
                    modifier.m_attribute_id = (int)CRC.Calculate(value);
                }
                if (variables.TryGetValue(m_attribute_category_key[i], out value))
                {
                    modifier.m_attribute_category = (int)CRC.Calculate(value);
                }
                if (variables.TryGetValue(m_value_key[i], out value))
                {
                    modifier.m_value.Compile(value);
                }
            }
        }
コード例 #2
0
 public override void Apply()
 {
     if (m_modefier_configs == null || m_modefier_configs.Length == 0)
     {
         return;
     }
     m_modifier_ids = new int[m_modefier_configs.Length];
     for (int i = 0; i < m_modefier_configs.Length; ++i)
     {
         AttributeModifierConfig modifier_config = m_modefier_configs[i];
         FixPoint formula_value = modifier_config.m_value.Evaluate(this);
         m_modifier_ids[i] = AddModifier(modifier_config, formula_value);
     }
 }
コード例 #3
0
        int AddModifier(AttributeModifierConfig modifier_config, FixPoint modifier_value)
        {
            AttributeModifier attribute_modifier = RecyclableObject.Create <AttributeModifier>();

            attribute_modifier.Construct(GetLogicWorld().GetAttributeModifierIDGenerator().GenID(), modifier_config.m_attribute_category, modifier_value);

            EffectDefinitionComponent definition_component = ((Effect)ParentObject).GetDefinitionComponent();
            EntityManager             entity_manager       = GetLogicWorld().GetEntityManager();
            Entity    owner_entity = entity_manager.GetObject(definition_component.TargetEntityID);
            Attribute attribute    = EntityUtil.GetAttribute(owner_entity, modifier_config.m_attribute_id);

            if (attribute == null)
            {
                return(0);
            }
            attribute.AddModifier(attribute_modifier);
            return(attribute_modifier.ID);
        }