internal ModuleDataContainer(string tag, ModuleData data, ModuleInheritanceMode inheritanceMode, bool inherited) { Tag = tag; Data = data; InheritanceMode = inheritanceMode; Inherited = inherited; }
internal static ModuleDataContainer ParseBody(IniParser parser, ModuleInheritanceMode inheritanceMode) => ParseModule(parser, BodyParseTable, inheritanceMode);
internal static ModuleDataContainer ParseClientUpdate(IniParser parser, ModuleInheritanceMode inheritanceMode) => ParseModule(parser, ClientUpdateParseTable, inheritanceMode);
internal static ModuleDataContainer ParseDrawModule(IniParser parser, ModuleInheritanceMode inheritanceMode) => ParseModule(parser, DrawModuleParseTable, inheritanceMode);
internal static ModuleDataContainer ParseModule <T>(IniParser parser, Dictionary <string, Func <IniParser, T> > moduleParseTable, ModuleInheritanceMode inheritanceMode) where T : ModuleData { var moduleType = parser.GetNextToken(); var tag = parser.GetNextToken(); if (!moduleParseTable.TryGetValue(moduleType.Text, out var moduleParser)) { throw new IniParseException($"Unknown module type: {moduleType.Text}", moduleType.Position); } var result = moduleParser(parser); return(new ModuleDataContainer(tag.Text, result, inheritanceMode, false)); }