Example #1
0
        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(),
            })
Example #2
0
        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(),
            })
Example #3
0
        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(),
            });
        }
Example #4
0
        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;
        }
Example #5
0
        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;
        }