예제 #1
0
    public static void CreateAllConditionAsset()
    {
        if (AllCondition.Instance)
        {
            return;
        }
        AllCondition newInstance = CreateInstance <AllCondition>();

        AssetDatabase.CreateAsset(newInstance, "Assets/Resources/AllCondition.asset");
        AllCondition.Instance = newInstance;
        AllCondition.Instance.allCondition = new Condition[0];
    }
예제 #2
0
    public MyAdManager()
    {
        IsAvailable = true;

#if IMPORT_HYPERCOMMON
        Condition intervalFromLastInterstitialAd = ConditionFactory.IntervalFromLastInterstitialAd(30.0f, HyperCasual.Calculator.CompareOperation.Greater);
        Condition intervalFromOpen        = ConditionFactory.IntervalFromOpen(10.0f, HyperCasual.Calculator.CompareOperation.Greater);
        Condition intervalFromRewardVideo = ConditionFactory.IntervalFromLastRewardAdSuccess(10.0f, HyperCasual.Calculator.CompareOperation.Greater);
        Condition playCountFromInstall    = ConditionFactory.PlayCountFromInstall(3, HyperCasual.Calculator.CompareOperation.Greater);

        AllCondition GameOverAdCondition = new AllCondition(intervalFromOpen, intervalFromLastInterstitialAd);
        AllCondition ClearAdCondition    = new AllCondition(intervalFromOpen, intervalFromLastInterstitialAd, intervalFromRewardVideo, playCountFromInstall);

        AdManager.Instance.SetConditionToShow(GameOverKey, GameOverAdCondition);
        AdManager.Instance.SetConditionToShow(StageClearKey, ClearAdCondition);
#endif
    }
예제 #3
0
 private void OnEnable()
 {
     editor = (AllCondition)target;
     allConditionProperty = serializedObject.FindProperty("allCondition");
 }
예제 #4
0
        public static ContextFilter FromContextDefinition(string contextString)
        {
            /*
             * Context string format is a list of tokens joined by either & or | but not both
             * and grouped inside (). Groups can also be joined by either & or | but not both
             * Context strings can not be nested
             * Examples: a,b,c are tokens
             * (a)
             * (a&b&c)
             * (a|b|c)
             * (a|b|c)&(a&b&c)
             * (a|b|c)|(a&b&c)
             */

            // parse context string
            bool          supportsZeroDoc     = false;
            ContextFilter ctxFilter           = new ContextFilter();
            var           collectedConditions = new HashSet <Condition>();

            bool capturingSubCondition     = false;
            bool subConditionIsNot         = false;
            CompoundCondition subCondition = new AllCondition();
            var collectedSubConditions     = new HashSet <Condition>();

            bool   capturingToken = false;
            string currentToken   = string.Empty;

            Action captureToken = () => {
                if (capturingToken && currentToken != string.Empty)
                {
                    if (Condition.FromToken(currentToken) is Condition condition)
                    {
                        if (condition is ZeroDocCondition)
                        {
                            supportsZeroDoc = true;
                        }
                        collectedSubConditions.Add(condition);
                    }
                    currentToken = string.Empty;
                }
            };

            Action captureSubConditions = () => {
                if (capturingSubCondition)
                {
                    if (collectedSubConditions.Count > 0)
                    {
                        subCondition.Conditions = collectedSubConditions;
                        subCondition.IsNot      = subConditionIsNot;
                        collectedConditions.Add(subCondition);
                    }
                    collectedSubConditions = new HashSet <Condition>();
                    capturingSubCondition  = false;
                    subConditionIsNot      = false;
                }
            };

            foreach (char c in contextString)
            {
                switch (c)
                {
                // sub conditions
                case '(':
                    if (capturingSubCondition)
                    {
                        captureToken();
                    }
                    else
                    {
                        capturingSubCondition = true;
                        capturingToken        = true;
                    }
                    continue;

                case ')':
                    captureToken();
                    captureSubConditions();
                    continue;

                // (sub)condition types
                case CONTEXT_CONDITION_ALL_SEP:
                    captureToken();
                    if (capturingSubCondition)
                    {
                        subCondition = new AllCondition();
                    }
                    else
                    {
                        ctxFilter.Condition = new AllCondition();
                    }
                    continue;

                case CONTEXT_CONDITION_ANY_SEP:
                    captureToken();
                    if (capturingSubCondition)
                    {
                        subCondition = new AnyCondition();
                    }
                    else
                    {
                        ctxFilter.Condition = new AnyCondition();
                    }
                    continue;

                case CONTEXT_CONDITION_EXACT_SEP:
                    captureToken();
                    if (capturingSubCondition)
                    {
                        subCondition = new ExactCondition();
                    }
                    else
                    {
                        ctxFilter.Condition = new ExactCondition();
                    }
                    continue;

                case CONTEXT_CONDITION_NOT:
                    if (!capturingSubCondition)
                    {
                        subConditionIsNot = true;
                    }
                    continue;

                // tokens
                default:
                    if (capturingToken)
                    {
                        currentToken += c;
                    }
                    continue;
                }
            }


            ctxFilter.Condition.Conditions = collectedConditions;
            ctxFilter.EnsureActiveDocument = !supportsZeroDoc;
            return(ctxFilter);
        }