internal static void Generate() { // MetaData columns var idColumn = _metadataTable.Table[DataConstants.MetaDataIdColumn].Single(); var fieldColumn = _metadataTable.Table[DataConstants.MetaDataFieldColumn].Single(); var dataSourceColumn = _metadataTable.Table[DataConstants.MetaDataSlkColumn].Single(); var repeatColumn = _metadataTable.Table[DataConstants.MetaDataRepeatColumn].Single(); var dataColumn = _metadataTable.Table[DataConstants.MetaDataDataColumn].Single(); var categoryColumn = _metadataTable.Table[DataConstants.MetaDataCategoryColumn].Single(); var displayNameColumn = _metadataTable.Table[DataConstants.MetaDataDisplayNameColumn].Single(); var typeColumn = _metadataTable.Table[DataConstants.MetaDataTypeColumn].Single(); var minValColumn = _metadataTable.Table[DataConstants.MetaDataMinValColumn].Single(); var maxValColumn = _metadataTable.Table[DataConstants.MetaDataMaxValColumn].Single(); var useSpecificColumn = _metadataTable.Table[DataConstants.MetaDataUseSpecificColumn].Single(); // Properties var properties = _metadataTable.Table .Skip(1) .Select(property => new PropertyModel { Rawcode = (string)property[idColumn], DataName = (string)property[fieldColumn], DataSource = (string)property[dataSourceColumn], IdentifierName = ObjectApiGenerator.CreatePropertyIdentifierName( (string)property[categoryColumn], (string)property[displayNameColumn]), Repeat = (int)property[repeatColumn], Data = (int)property[dataColumn], Type = (string)property[typeColumn], MinVal = property[minValColumn], MaxVal = property[maxValColumn], Specifics = ((string)property[useSpecificColumn]).GetSpecifics(), SpecificUniqueNames = new(), })
internal static void Generate() { const int LimitSubclasses = 100; // MetaData columns var idColumn = _metadataTable.Table[DataConstants.MetaDataIdColumn].Single(); var fieldColumn = _metadataTable.Table[DataConstants.MetaDataFieldColumn].Single(); var dataSourceColumn = _metadataTable.Table[DataConstants.MetaDataSlkColumn].Single(); var categoryColumn = _metadataTable.Table[DataConstants.MetaDataCategoryColumn].Single(); var displayNameColumn = _metadataTable.Table[DataConstants.MetaDataDisplayNameColumn].Single(); var typeColumn = _metadataTable.Table[DataConstants.MetaDataTypeColumn].Single(); var minValColumn = _metadataTable.Table[DataConstants.MetaDataMinValColumn].Single(); var maxValColumn = _metadataTable.Table[DataConstants.MetaDataMaxValColumn].Single(); var useHeroColumn = _metadataTable.Table[DataConstants.MetaDataUseHeroColumn].Single(); var useUnitColumn = _metadataTable.Table[DataConstants.MetaDataUseUnitColumn].Single(); var useBuildingColumn = _metadataTable.Table[DataConstants.MetaDataUseBuildingColumn].Single(); var properties = _metadataTable.Table .Skip(1) .Where(property => property[useHeroColumn].ParseBool() || property[useUnitColumn].ParseBool() || property[useBuildingColumn].ParseBool()) .Select(property => new PropertyModel { Rawcode = (string)property[idColumn], DataName = (string)property[fieldColumn], DataSource = (string)property[dataSourceColumn], IdentifierName = ObjectApiGenerator.CreatePropertyIdentifierName( (string)property[categoryColumn], (string)property[displayNameColumn]), Type = (string)property[typeColumn], MinVal = property[minValColumn], MaxVal = property[maxValColumn], Specifics = ImmutableHashSet <int> .Empty, SpecificUniqueNames = new(), })
private static void Main(string[] args) { var inputFolder = InputAbsolute ?? Path.Combine(InputFolder, Version); var outputFolder = OutputAbsolute ?? Path.Combine(OutputFolder, Version); ObjectApiGenerator.InitializeGenerator(inputFolder, outputFolder); Parallel.Invoke(new Action[] { () => ObjectApiGenerator.GenerateDataConverter(), () => ObjectApiGenerator.GenerateEnums(), () => UnitApiGenerator.InitializeGenerator(inputFolder), () => ItemApiGenerator.InitializeGenerator(inputFolder), () => DestructableApiGenerator.InitializeGenerator(inputFolder), () => DoodadApiGenerator.InitializeGenerator(inputFolder), () => AbilityApiGenerator.InitializeGenerator(inputFolder), () => BuffApiGenerator.InitializeGenerator(inputFolder), () => UpgradeApiGenerator.InitializeGenerator(inputFolder), }); Parallel.Invoke(new Action[] { () => UnitApiGenerator.Generate(), () => ItemApiGenerator.Generate(), () => DestructableApiGenerator.Generate(), () => DoodadApiGenerator.Generate(), () => AbilityApiGenerator.Generate(), () => BuffApiGenerator.Generate(), () => UpgradeApiGenerator.Generate(), }); }
internal static void InitializeGenerator(string inputFolder) { if (_initialized) { throw new InvalidOperationException("Already initialized."); } if (!ObjectApiGenerator.IsInitialized) { throw new InvalidOperationException("Must initialize ObjectApiGenerator first."); } _dataTables = new[] { new TableModel(Path.Combine(inputFolder, PathConstants.UnitAbilityDataPath), DataConstants.UnitAbilityDataKeyColumn, DataConstants.CommentOrCommentsColumn), new TableModel(Path.Combine(inputFolder, PathConstants.UnitBalanceDataPath), DataConstants.UnitBalanceDataKeyColumn, DataConstants.CommentOrCommentsColumn), new TableModel(Path.Combine(inputFolder, PathConstants.UnitDataPath), DataConstants.UnitDataKeyColumn, DataConstants.CommentOrCommentsColumn), new TableModel(Path.Combine(inputFolder, PathConstants.UnitUiDataPath), DataConstants.UnitUiDataKeyColumn, DataConstants.UnitDataNameColumn), new TableModel(Path.Combine(inputFolder, PathConstants.UnitWeaponDataPath), DataConstants.UnitWeaponDataKeyColumn, DataConstants.CommentOrCommentsColumn), } .ToDictionary(table => table.TableName, StringComparer.OrdinalIgnoreCase); _metadataTable = new TableModel(Path.Combine(inputFolder, PathConstants.UnitMetaDataPath)); ObjectApiGenerator.Localize(_metadataTable.Table); _enumModel = new EnumModel(DataConstants.UnitTypeEnumName); var members = new Dictionary <string, string>(StringComparer.Ordinal); _dataTables["unitui"].AddValues(members); _dataTables["unitdata"].AddValues(members); _dataTables["unitabilities"].AddValues(members); _dataTables["unitbalance"].AddValues(members); _dataTables["unitweapons"].AddValues(members); foreach (var member in members) { _enumModel.Members.Add(ObjectApiGenerator.CreateEnumMemberModel(member.Value, member.Key)); } _enumModel.EnsureMemberNamesUnique(); _initialized = true; }
internal static void InitializeGenerator(string inputFolder) { if (_initialized) { throw new InvalidOperationException("Already initialized."); } if (!ObjectApiGenerator.IsInitialized) { throw new InvalidOperationException("Must initialize ObjectApiGenerator first."); } _dataTables = new[] { new TableModel(Path.Combine(inputFolder, PathConstants.DoodadDataPath), DataConstants.DoodadDataKeyColumn, DataConstants.CommentColumn, "DoodadData"), } .ToDictionary(table => table.TableName, StringComparer.OrdinalIgnoreCase); _metadataTable = new TableModel(Path.Combine(inputFolder, PathConstants.DoodadMetaDataPath)); ObjectApiGenerator.Localize(_metadataTable.Table); _enumModel = new EnumModel(DataConstants.DoodadTypeEnumName); var members = new Dictionary <string, string>(StringComparer.Ordinal); foreach (var dataTable in _dataTables.Values) { dataTable.AddValues(members); } foreach (var member in members) { _enumModel.Members.Add(ObjectApiGenerator.CreateEnumMemberModel(member.Value, member.Key)); } _enumModel.EnsureMemberNamesUnique(); _initialized = true; }