#region ================== Namespaces using System.Collections.Generic; using System.IO; using System.Windows.Forms; using CodeImp.DoomBuilder.Compilers; using CodeImp.DoomBuilder.Config; using CodeImp.DoomBuilder.Controls; using CodeImp.DoomBuilder.ZDoom.Scripting; #endregion namespace CodeImp.DoomBuilder.Data.Scripting { [ScriptHandler(ScriptType.ACS)] internal class AccScriptHandler : ScriptHandler { #region ================== Methods //TODO: Remove ScriptDocumentTab from here public override List UpdateFunctionBarItems(ScriptDocumentTab tab, MemoryStream stream, ComboBox target) { List result = new List(); if(stream == null) return result; target.Items.Clear(); AcsParserSE parser = new AcsParserSE { AddArgumentsToScriptNames = true, IsMapScriptsLump = tab is ScriptLumpDocumentTab, IgnoreErrors = true }; TextResourceData data = new TextResourceData(stream, new DataLocation(), (parser.IsMapScriptsLump ? "?SCRIPTS" : tab.Filename), false); if(parser.Parse(data, false)) { target.Items.AddRange(parser.NamedScripts.ToArray()); target.Items.AddRange(parser.NumberedScripts.ToArray()); target.Items.AddRange(parser.Functions.ToArray()); } if(parser.HasError) result.Add(new CompilerError(parser.ErrorDescription, parser.ErrorSource, parser.ErrorLine)); return result; } #endregion } }