예제 #1
0
 public AilmentStepInfo(AilmentStepType stepType,
                        NumberComparisonType comparisonType,
                        AilmentFlagType flagType,
                        string stringValue,
                        int abilityDefinitionID,
                        int intValue,
                        bool boolValue,
                        MoveModifier moveModifier,
                        MatchModifierInfo matchModifierInfo,
                        GiftModifier giftModifier,
                        List <GirlConditionInfo> girlConditionInfos,
                        List <MoveConditionInfo> moveConditionInfos,
                        List <MatchConditionInfo> matchConditionInfos,
                        List <GiftConditionInfo> giftConditionInfos)
 {
     StepType            = stepType;
     StringValue         = stringValue;
     IntValue            = intValue;
     BoolValue           = boolValue;
     ComparisonType      = comparisonType;
     AbilityDefinitionID = abilityDefinitionID;
     MoveConditionInfos  = moveConditionInfos;
     MoveModifier        = moveModifier;
     MatchConditionInfos = matchConditionInfos;
     MatchModifierInfo   = matchModifierInfo;
     GiftConditionInfos  = giftConditionInfos;
     GiftModifier        = giftModifier;
     GirlConditionInfos  = girlConditionInfos;
     FlagType            = flagType;
 }
예제 #2
0
        public static bool Compare(this NumberComparisonType comparison, float value1, float value2)
        {
            switch (comparison)
            {
            case NumberComparisonType.Equal:
                return(value1 == value2);

            case NumberComparisonType.Greater:
                return(value1 > value2);

            case NumberComparisonType.GreaterOrEqual:
                return(value1 >= value2);

            case NumberComparisonType.Lesser:
                return(value1 < value2);

            case NumberComparisonType.LesserOrEqual:
                return(value1 <= value2);

            case NumberComparisonType.NotEqual:
                return(value1 != value2);
            }

            return(false);
        }
예제 #3
0
 public LogicConditionInfo(LogicConditionType type,
                           NumberComparisonType comparisonType,
                           ClockDaytimeType daytimeType,
                           DollOrientationType dollOrientation,
                           PuzzleAffectionType affectionType,
                           PuzzleResourceType resourceType,
                           SettingDifficulty settingDifficulty,
                           PuzzleStatusType dateType,
                           string stringValue,
                           int intValue,
                           int locationDefinitionID,
                           int girlPairDefinitionID,
                           int girlDefinitionID,
                           int itemDefinitionID,
                           bool inverse,
                           bool boolValue)
 {
     Type                 = type;
     Inverse              = inverse;
     BoolValue            = boolValue;
     IntValue             = intValue;
     StringValue          = stringValue;
     ComparisonType       = comparisonType;
     LocationDefinitionID = locationDefinitionID;
     DaytimeType          = daytimeType;
     GirlPairDefinitionID = girlPairDefinitionID;
     GirlDefinitionID     = girlDefinitionID;
     DollOrientation      = dollOrientation;
     AffectionType        = affectionType;
     ResourceType         = resourceType;
     ItemDefinitionID     = itemDefinitionID;
     SettingDifficulty    = settingDifficulty;
     DateType             = dateType;
 }
예제 #4
0
        public LogicConditionInfo(LogicCondition logicCondition)
        {
            if (logicCondition == null)
            {
                throw new ArgumentNullException(nameof(logicCondition));
            }

            Type              = logicCondition.type;
            Inverse           = logicCondition.inverse;
            BoolValue         = logicCondition.boolValue;
            IntValue          = logicCondition.intValue;
            StringValue       = logicCondition.stringValue;
            ComparisonType    = logicCondition.comparisonType;
            DaytimeType       = logicCondition.daytimeType;
            DollOrientation   = logicCondition.dollOrientation;
            AffectionType     = logicCondition.affectionType;
            ResourceType      = logicCondition.resourceType;
            SettingDifficulty = logicCondition.settingDifficulty;
            DateType          = logicCondition.dateType;

            LocationDefinitionID = logicCondition.locationDefinition?.id ?? -1;
            GirlPairDefinitionID = logicCondition.girlPairDefinition?.id ?? -1;
            GirlDefinitionID     = logicCondition.girlDefinition?.id ?? -1;
            ItemDefinitionID     = logicCondition.itemDefinition?.id ?? -1;
        }
예제 #5
0
        public TokenConditionInfo(TokenCondition tokenCondition)
        {
            if (tokenCondition == null)
            {
                throw new ArgumentNullException(nameof(tokenCondition));
            }

            Type         = tokenCondition.type;
            TokenType    = tokenCondition.tokenType;
            OppositeGirl = tokenCondition.oppositeGirl;
            Comparison   = tokenCondition.comparison;
            Val          = tokenCondition.val;
            Inverse      = tokenCondition.inverse;

            TokenDefinitionID = tokenCondition.tokenDefinition?.id ?? -1;
        }
예제 #6
0
 public TokenConditionInfo(TokenConditionType type,
                           TokenConditionTokenType tokenType,
                           NumberComparisonType comparison,
                           string val,
                           int tokenDefinitionID,
                           bool oppositeGirl,
                           bool inverse)
 {
     Type              = type;
     TokenType         = tokenType;
     TokenDefinitionID = tokenDefinitionID;
     OppositeGirl      = oppositeGirl;
     Comparison        = comparison;
     Val     = val;
     Inverse = inverse;
 }
예제 #7
0
        public MoveConditionInfo(MoveCondition moveCondition)
        {
            if (moveCondition == null)
            {
                throw new ArgumentNullException(nameof(moveCondition));
            }

            Type         = moveCondition.type;
            TokenType    = moveCondition.tokenType;
            BoolValue    = moveCondition.boolValue;
            ResourceType = moveCondition.resourceType;
            Comparison   = moveCondition.comparison;
            Val          = moveCondition.val;
            Inverse      = moveCondition.inverse;

            TokenDefinitionID = moveCondition.tokenDefinition?.id ?? -1;
        }
예제 #8
0
 public MoveConditionInfo(MoveConditionType type,
                          MoveConditionTokenType tokenType,
                          PuzzleResourceType resourceType,
                          NumberComparisonType comparison,
                          int tokenDefinitionID,
                          int val,
                          bool boolValue,
                          bool inverse)
 {
     Type              = type;
     TokenType         = tokenType;
     TokenDefinitionID = tokenDefinitionID;
     BoolValue         = boolValue;
     ResourceType      = resourceType;
     Comparison        = comparison;
     Val     = val;
     Inverse = inverse;
 }
예제 #9
0
        public AilmentStepInfo(AilmentStepSubDefinition ailmentStep)
        {
            if (ailmentStep == null)
            {
                throw new ArgumentNullException(nameof(ailmentStep));
            }

            StepType       = ailmentStep.stepType;
            StringValue    = ailmentStep.stringValue;
            IntValue       = ailmentStep.intValue;
            BoolValue      = ailmentStep.boolValue;
            ComparisonType = ailmentStep.comparisonType;
            MoveModifier   = ailmentStep.moveModifier;
            GiftModifier   = ailmentStep.giftModifier;
            FlagType       = ailmentStep.flagType;

            AbilityDefinitionID = ailmentStep.abilityDefinition?.id ?? -1;

            if (ailmentStep.matchModifier != null)
            {
                MatchModifierInfo = new MatchModifierInfo(ailmentStep.matchModifier);
            }

            if (ailmentStep.matchConditions != null)
            {
                MatchConditionInfos = ailmentStep.matchConditions.Select(x => new MatchConditionInfo(x)).ToList();
            }
            if (ailmentStep.giftConditions != null)
            {
                GiftConditionInfos = ailmentStep.giftConditions.Select(x => new GiftConditionInfo(x)).ToList();
            }
            if (ailmentStep.girlConditions != null)
            {
                GirlConditionInfos = ailmentStep.girlConditions.Select(x => new GirlConditionInfo(x)).ToList();
            }
            if (ailmentStep.moveConditions != null)
            {
                MoveConditionInfos = ailmentStep.moveConditions.Select(x => new MoveConditionInfo(x)).ToList();
            }
        }
        public static IEnumerable <ElementId> ElementIdsByParameter(this Document document, string parameterName, NumberComparisonType numberComparisonType, double value, double tolerance, IEnumerable <ElementId> ids = null)
        {
            if (document == null)
            {
                return(null);
            }

            HashSet <ElementId> result = new HashSet <ElementId>();

            if (ids != null && ids.Count() == 0)
            {
                return(result);
            }

            FilteredElementCollector collector = ids == null ? new FilteredElementCollector(document) : new FilteredElementCollector(document, ids.ToList());

            foreach (Element element in collector.WherePasses(new LogicalOrFilter(new ElementIsElementTypeFilter(), new ElementIsElementTypeFilter(true))))
            {
                Parameter param = element.LookupParameter(parameterName);
                if (param != null && param.HasValue && param.StorageType == StorageType.Double)
                {
                    double comparisonValue     = value.FromSI(param.Definition.UnitType);
                    double comparisonTolerance = tolerance.FromSI(param.Definition.UnitType);

                    bool   pass       = false;
                    double paramValue = param.AsDouble();
                    switch (numberComparisonType)
                    {
                    case NumberComparisonType.Equal:
                        pass = Math.Abs(paramValue - comparisonValue) <= comparisonTolerance;
                        break;

                    case NumberComparisonType.Greater:
                        pass = paramValue - comparisonValue > comparisonTolerance;
                        break;

                    case NumberComparisonType.GreaterOrEqual:
                        pass = paramValue - comparisonValue > -comparisonTolerance;
                        break;

                    case NumberComparisonType.Less:
                        pass = paramValue - comparisonValue < -comparisonTolerance;
                        break;

                    case NumberComparisonType.LessOrEqual:
                        pass = paramValue - comparisonValue < comparisonTolerance;
                        break;

                    case NumberComparisonType.NotEqual:
                        pass = Math.Abs(paramValue - comparisonValue) > comparisonTolerance;
                        break;
                    }

                    if (pass)
                    {
                        result.Add(element.Id);
                    }
                }
            }

            return(result);
        }
        public static IEnumerable <ElementId> ElementIdsByParameter(this Document document, string parameterName, NumberComparisonType numberComparisonType, int value, IEnumerable <ElementId> ids = null)
        {
            if (document == null)
            {
                return(null);
            }

            HashSet <ElementId> result = new HashSet <ElementId>();

            if (ids != null && ids.Count() == 0)
            {
                return(result);
            }

            FilteredElementCollector collector = ids == null ? new FilteredElementCollector(document) : new FilteredElementCollector(document, ids.ToList());

            foreach (Element element in collector.WherePasses(new LogicalOrFilter(new ElementIsElementTypeFilter(), new ElementIsElementTypeFilter(true))))
            {
                Parameter param = element.LookupParameter(parameterName);
                if (param != null && param.HasValue && param.StorageType == StorageType.Integer && param.Definition.ParameterType != ParameterType.YesNo)
                {
                    bool pass       = false;
                    int  paramValue = param.AsInteger();
                    switch (numberComparisonType)
                    {
                    case NumberComparisonType.Equal:
                        pass = paramValue == value;
                        break;

                    case NumberComparisonType.Greater:
                        pass = paramValue > value;
                        break;

                    case NumberComparisonType.GreaterOrEqual:
                        pass = paramValue >= value;
                        break;

                    case NumberComparisonType.Less:
                        pass = paramValue < value;
                        break;

                    case NumberComparisonType.LessOrEqual:
                        pass = paramValue <= value;
                        break;

                    case NumberComparisonType.NotEqual:
                        pass = paramValue != value;
                        break;
                    }

                    if (pass)
                    {
                        result.Add(element.Id);
                    }
                }
            }

            return(result);
        }
 public static FilterByParameterNumber FilterByParameterNumber(string parameterName, NumberComparisonType numberComparisonType, double value, double tolerance)
 {
     return(new FilterByParameterNumber {
         ParameterName = parameterName, NumberComparisonType = numberComparisonType, Value = value, Tolerance = tolerance
     });
 }
 public static FilterByParameterInteger FilterByParameterInteger(string parameterName, NumberComparisonType numberComparisonType, int value)
 {
     return(new FilterByParameterInteger {
         ParameterName = parameterName, NumberComparisonType = numberComparisonType, Value = value
     });
 }