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]; }
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 }
private void OnEnable() { editor = (AllCondition)target; allConditionProperty = serializedObject.FindProperty("allCondition"); }
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); }