AGS.Editor.ScintillaWrapper.ShouldShowThis C# (CSharp) Метод

ShouldShowThis() приватный Метод

private ShouldShowThis ( ScriptToken token, List defines ) : bool
token ScriptToken
defines List
Результат bool
        private bool ShouldShowThis(ScriptToken token, List<ScriptDefine> defines)
        {
            Settings gameSettings = Factory.AGSEditor.CurrentGame.Settings;
            if ((token.IfNDefOnly == "STRICT") && (gameSettings.EnforceObjectBasedScript))
            {
                return false;
            }
            if ((token.IfDefOnly == "STRICT") && (!gameSettings.EnforceObjectBasedScript))
            {
                return false;
            }
            if ((token.IfNDefOnly == "STRICT_STRINGS") && (gameSettings.EnforceNewStrings))
            {
                return false;
            }
            if ((token.IfDefOnly == "STRICT_STRINGS") && (!gameSettings.EnforceNewStrings))
            {
                return false;
            }
            if ((token.IfNDefOnly == "STRICT_AUDIO") && (gameSettings.EnforceNewAudio))
            {
                return false;
            }
            if ((token.IfDefOnly == "STRICT_AUDIO") && (!gameSettings.EnforceNewAudio))
            {
                return false;
            }
            if ((token.IfNDefOnly == "NEW_DIALOGOPTS_API") && (!gameSettings.UseOldCustomDialogOptionsAPI))
            {
                return false;
            }
            if ((token.IfDefOnly == "NEW_DIALOGOPTS_API") && (gameSettings.UseOldCustomDialogOptionsAPI))
            {
                return false;
            }
            if (token.IfNDefOnly != null && token.IfNDefOnly.StartsWith("SCRIPT_API_"))
            {
                ScriptAPIVersion? v = GetAPIVersionFromString(token.IfNDefOnly.Substring("SCRIPT_API_".Length));
                if (v.HasValue && v <= gameSettings.ScriptAPIVersion)
                    return false;
            }
            if (token.IfDefOnly != null && token.IfDefOnly.StartsWith("SCRIPT_API_"))
            {
                ScriptAPIVersion? v = GetAPIVersionFromString(token.IfDefOnly.Substring("SCRIPT_API_".Length));
                if (v.HasValue && v > gameSettings.ScriptAPIVersion)
                    return false;
            }
            if (token.IfNDefOnly != null && token.IfNDefOnly.StartsWith("SCRIPT_COMPAT_"))
            {
                ScriptAPIVersion? v = GetAPIVersionFromString(token.IfNDefOnly.Substring("SCRIPT_COMPAT_".Length));
                if (v.HasValue && v >= gameSettings.ScriptCompatLevel)
                    return false;
            }
            if (token.IfDefOnly != null && token.IfDefOnly.StartsWith("SCRIPT_COMPAT_"))
            {
                ScriptAPIVersion? v = GetAPIVersionFromString(token.IfDefOnly.Substring("SCRIPT_COMPAT_".Length));
                if (v.HasValue && v < gameSettings.ScriptCompatLevel)
                    return false;
            }
            // TODO: AutoComplete feature in AGS is implemented in confusing and messy way. Thus, it does not
            // use same technique for knowing which parts of the script should be disabled (by ifdef/ifndef)
            // as precompiler. Instead it makes its own parsing, and somewhat limits perfomance and capabilities.
            // This is (one) reason why all those checks are made here explicitly, instead of relying on some
            // prefetched macro list.
            if (token.IfNDefOnly != null && token.IfNDefOnly.StartsWith("STRICT_IN_"))
            {
                ScriptAPIVersion? v = GetAPIVersionFromString(token.IfNDefOnly.Substring("STRICT_IN_".Length));
                if (v.HasValue && (gameSettings.EnforceObjectBasedScript && v <= gameSettings.ScriptCompatLevel))
                    return false;
            }
            if (token.IfDefOnly != null && token.IfDefOnly.StartsWith("STRICT_IN_"))
            {
                ScriptAPIVersion? v = GetAPIVersionFromString(token.IfDefOnly.Substring("STRICT_IN_".Length));
                if (v.HasValue && !(gameSettings.EnforceObjectBasedScript && v <= gameSettings.ScriptCompatLevel))
                    return false;
            }
            return true;
        }
ScintillaWrapper