Exemplo n.º 1
0
        public List <int> BuildReferencedAttributes()
        {
            int count = 0;
            List <ExpressionVariable> variables = m_formula.GetAllVariables();

            if (variables != null)
            {
                count = variables.Count;
            }
            for (int i = 0; i < count; ++i)
            {
                ExpressionVariable variable = variables[i];
                if (variable.MaxIndex == 1 && variable[0] == ExpressionVariable.VID_LevelTable)
                {
                    m_is_level_based = true;
                }
                else if (variable.MaxIndex >= 2 && variable[variable.MaxIndex - 2] == ExpressionVariable.VID_Attribute || variable.MaxIndex == 1)
                {
                    int attribute_id = variable[variable.MaxIndex - 1];
                    if (AttributeSystem.IsAttributeID(attribute_id))
                    {
                        m_referenced_attributes.Add(attribute_id);
                    }
                }
            }
            return(m_referenced_attributes);
        }
Exemplo n.º 2
0
        void InitAttributeData()
        {
            AttributeData attribute_data = new AttributeData();

            attribute_data.m_attribute_name      = "MaxHealth";
            attribute_data.m_attribute_id        = (int)CRC.Calculate(attribute_data.m_attribute_name);
            attribute_data.m_formula             = "BaseValue";
            attribute_data.m_reflection_property = (int)CRC.Calculate("max_health");
            attribute_data.m_clamp_property      = (int)CRC.Calculate("current_health");
            attribute_data.m_clamp_min_value     = FixPoint.Zero;
            AttributeSystem.RegisterAttribute(attribute_data);
            m_attribute_data[attribute_data.m_attribute_id] = attribute_data;

            attribute_data = new AttributeData();
            attribute_data.m_attribute_name = "测试属性1";
            attribute_data.m_attribute_id   = (int)CRC.Calculate(attribute_data.m_attribute_name);
            attribute_data.m_formula        = "BaseValue";
            AttributeSystem.RegisterAttribute(attribute_data);
            m_attribute_data[attribute_data.m_attribute_id] = attribute_data;

            attribute_data = new AttributeData();
            attribute_data.m_attribute_name = "TestAttribute2";
            attribute_data.m_attribute_id   = (int)CRC.Calculate(attribute_data.m_attribute_name);
            attribute_data.m_formula        = "BaseValue + LevelTable.name3";
            AttributeSystem.RegisterAttribute(attribute_data);
            m_attribute_data[attribute_data.m_attribute_id] = attribute_data;

            attribute_data = new AttributeData();
            attribute_data.m_attribute_name = "TestAttribute3";
            attribute_data.m_attribute_id   = (int)CRC.Calculate(attribute_data.m_attribute_name);
            attribute_data.m_formula        = "BaseValue + TestAttribute1.Value";
            AttributeSystem.RegisterAttribute(attribute_data);
            m_attribute_data[attribute_data.m_attribute_id] = attribute_data;

            attribute_data = new AttributeData();
            attribute_data.m_attribute_name = "TestAttribute14";
            attribute_data.m_attribute_id   = (int)CRC.Calculate(attribute_data.m_attribute_name);
            attribute_data.m_formula        = "(BaseValue + TestAttribute2.Value) * LevelTable.name1";
            AttributeSystem.RegisterAttribute(attribute_data);
            m_attribute_data[attribute_data.m_attribute_id] = attribute_data;

            attribute_data = new AttributeData();
            attribute_data.m_attribute_name = "TestAttribute5";
            attribute_data.m_attribute_id   = (int)CRC.Calculate(attribute_data.m_attribute_name);
            attribute_data.m_formula        = "BaseValue + Max(TestAttribute3.Value, Entity.Attribute.TestAttribute4.Value)";
            AttributeSystem.RegisterAttribute(attribute_data);
            m_attribute_data[attribute_data.m_attribute_id] = attribute_data;

            attribute_data = new AttributeData();
            attribute_data.m_attribute_name = "TestAttribute6";
            attribute_data.m_attribute_id   = (int)CRC.Calculate(attribute_data.m_attribute_name);
            attribute_data.m_formula        = "BaseValue * TestAttribute2.Value * TestAttribute5.Value";
            AttributeSystem.RegisterAttribute(attribute_data);
            m_attribute_data[attribute_data.m_attribute_id] = attribute_data;
        }