private void ConstructAndShowCalltip(int currentPos, int selectedParameter, ScriptStruct owningStruct, ScriptToken func) { int selectionStart = 0, selectionEnd = 0; string callTip; if (func is ScriptFunction) { callTip = ConstructFunctionCalltipText((ScriptFunction)func, owningStruct, selectedParameter, out selectionStart, out selectionEnd); } else { callTip = ConstructVariableCalltipText((ScriptVariable)func, owningStruct); } if (callTip != null) { if (!string.IsNullOrEmpty(func.Description)) { callTip += "\n" + func.Description; } this.scintillaControl1.CallTipShow(currentPos, callTip); this.scintillaControl1.CallTipSetHlt(selectionStart, selectionEnd); } }
private bool ShouldShowThis(ScriptToken token) { 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; } return true; }
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.ScriptAPIVersionReal) 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.ScriptAPIVersionReal) 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.ScriptCompatLevelReal) 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.ScriptCompatLevelReal) 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.ScriptCompatLevelReal)) 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.ScriptCompatLevelReal)) return false; } return true; }