コード例 #1
0
        public bool IsMet(PositionalComponent component, ComponentDescription description)
        {
            if (Type == ConditionType.Empty)
            {
                return(true);
            }

            if (Type == ConditionType.State)
            {
                if (VariableName.ToLower() == "horizontal")
                {
                    if (Comparison == ConditionComparison.Truthy || Comparison == ConditionComparison.Equal)
                    {
                        return((component.Layout.Orientation == Orientation.Horizontal) == CompareTo.BooleanValue);
                    }

                    return((component.Layout.Orientation == Orientation.Horizontal) != CompareTo.BooleanValue);
                }
            }
            else
            {
                var propertyValue = description.GetProperty(component, VariableName);

                if (Comparison == ConditionComparison.Truthy)
                {
                    return(propertyValue.IsTruthy());
                }

                if (Comparison == ConditionComparison.Falsy)
                {
                    return(!propertyValue.IsTruthy());
                }

                int cv = propertyValue.CompareTo(CompareTo);
                switch (Comparison)
                {
                case ConditionComparison.Equal:
                    return(cv == 0);

                case ConditionComparison.Greater:
                    return(cv == 1);

                case ConditionComparison.GreaterOrEqual:
                    return(cv >= 0);

                case ConditionComparison.Less:
                    return(cv == -1);

                case ConditionComparison.LessOrEqual:
                    return(cv <= 0);

                case ConditionComparison.NotEqual:
                    return(cv != 0);
                }
            }

            return(false);
        }
コード例 #2
0
        public bool IsMet(Component component)
        {
            if (Type == ConditionType.Empty)
            {
                return(true);
            }
            else if (Type == ConditionType.State)
            {
                if (VariableName.ToLower() == "horizontal")
                {
                    if (Comparison == ConditionComparison.Equal)
                    {
                        return((component.Orientation == Orientation.Horizontal) == (bool)CompareTo.Value);
                    }
                    else
                    {
                        return((component.Orientation == Orientation.Horizontal) != (bool)CompareTo.Value);
                    }
                }
            }
            else
            {
                var propertyValue = component.GetProperty(component.FindProperty(VariableName));

                if (Comparison == ConditionComparison.Empty)
                {
                    return(propertyValue.IsEmpty());
                }
                else if (Comparison == ConditionComparison.NotEmpty)
                {
                    return(!propertyValue.IsEmpty());
                }

                int cv = propertyValue.CompareTo(CompareTo);
                switch (Comparison)
                {
                case ConditionComparison.Equal:
                    return(cv == 0);

                case ConditionComparison.Greater:
                    return(cv == 1);

                case ConditionComparison.GreaterOrEqual:
                    return(cv >= 0);

                case ConditionComparison.Less:
                    return(cv == -1);

                case ConditionComparison.LessOrEqual:
                    return(cv <= 0);

                case ConditionComparison.NotEqual:
                    return(cv != 0);
                }
            }

            return(false);
        }
コード例 #3
0
            public void Evaluate(GameTime gameTime, object Input, out bool IsCompleted, out List <object> Result)
            {
                string VariableNameLower = VariableName.ToLower();
                double Value             = (double)Input;

                if (!Info.Map.DicMapVariables.ContainsKey(VariableNameLower))
                {
                    if (SignOperator == Operators.SignOperators.Equal)
                    {
                        Info.Map.DicMapVariables.Add(VariableNameLower, Value);
                    }
                    else
                    {
                        throw new Exception(SignOperator.ToString() + " can't be used on " + VariableNameLower + " as this variable is unassigned.");
                    }
                }
                else
                {
                    switch (SignOperator)
                    {
                    case Operators.SignOperators.Equal:
                        Info.Map.DicMapVariables[VariableNameLower] = Value;
                        break;

                    case Operators.SignOperators.PlusEqual:
                        Info.Map.DicMapVariables[VariableNameLower] += Value;
                        break;

                    case Operators.SignOperators.MinusEqual:
                        Info.Map.DicMapVariables[VariableNameLower] -= Value;
                        break;

                    case Operators.SignOperators.MultiplicatedEqual:
                        Info.Map.DicMapVariables[VariableNameLower] *= Value;
                        break;

                    case Operators.SignOperators.DividedEqual:
                        Info.Map.DicMapVariables[VariableNameLower] /= Value;
                        break;

                    case Operators.SignOperators.ModuloEqual:
                        Info.Map.DicMapVariables[VariableNameLower] %= Value;
                        break;
                    }
                }

                Result      = new List <object>();
                IsCompleted = true;
            }
コード例 #4
0
        public override void Update(int Index)
        {
            string VariableNameLower = VariableName.ToLower();

            if (!Map.DicMapVariables.ContainsKey(VariableNameLower))
            {
                if (SignOperator == Operators.SignOperators.Equal)
                {
                    Map.DicMapVariables.Add(VariableNameLower, Value);
                }
                else
                {
                    throw new Exception(SignOperator.ToString() + " can't be used on " + VariableNameLower + " as this variable is unassigned.");
                }
            }
            else
            {
                switch (SignOperator)
                {
                case Operators.SignOperators.Equal:
                    Map.DicMapVariables[VariableNameLower] = Value;
                    break;

                case Operators.SignOperators.PlusEqual:
                    Map.DicMapVariables[VariableNameLower] += Value;
                    break;

                case Operators.SignOperators.MinusEqual:
                    Map.DicMapVariables[VariableNameLower] -= Value;
                    break;

                case Operators.SignOperators.MultiplicatedEqual:
                    Map.DicMapVariables[VariableNameLower] *= Value;
                    break;

                case Operators.SignOperators.DividedEqual:
                    Map.DicMapVariables[VariableNameLower] /= Value;
                    break;

                case Operators.SignOperators.ModuloEqual:
                    Map.DicMapVariables[VariableNameLower] %= Value;
                    break;
                }
            }
            Map.ExecuteFollowingScripts(this, 0);
        }