protected void GenerateAbilitiesFile(LegionDatabase Database) { // Load ability templates string SummonAbilityTemplate = LoadTemplateFile(SPAWN_UNIT_TEMPLATE); string UpgradeAbilityTemplate = LoadTemplateFile(UPGRADE_UNIT_TEMPLATE); // Generate data from each unit List <string> SummonAbilities = GenerateDataForList <LegionUnit>(SummonAbilityTemplate, GetSummonableUnits(Database), "Unit"); List <string> UpgradeAbilities = GenerateDataForList <LegionUnit>(UpgradeAbilityTemplate, GetUpgradeUnits(Database), "Unit"); // Generate data for unit abilities List <string> UnitAbilities = new List <string>(); foreach (LegionUnit Unit in Database.GetUnits()) { foreach (LegionAbility Ability in Unit.LegionAbilities) { string AbilityFilePath = string.Format(UNIT_ABILITIES_TEMPLATE, Ability.AbilityFile); string AbilityTemplate = LoadTemplateFile(AbilityFilePath); AbilityTemplate = ProcessTemplate <LegionUnit>(AbilityTemplate, Unit, "Unit"); AbilityTemplate = ProcessTemplate <LegionAbility>(AbilityTemplate, Ability, "Ability"); UnitAbilities.Add(AbilityTemplate); } } // Merge all data List <string> GeneratedAbilitiesData = new List <string>(); GeneratedAbilitiesData = GeneratedAbilitiesData.Concat(SummonAbilities).ToList(); GeneratedAbilitiesData = GeneratedAbilitiesData.Concat(UpgradeAbilities).ToList(); GeneratedAbilitiesData = GeneratedAbilitiesData.Concat(UnitAbilities).ToList(); // Generate sell abilities for all heroes foreach (LegionHero Hero in Database.GetHeroes()) { string SellUnitTemplate = LoadTemplateFile(SELL_UNIT_ABILITY_TEMPLATE); SellUnitTemplate = ProcessTemplate <LegionHero>(SellUnitTemplate, Hero, "Hero"); GeneratedAbilitiesData.Add(SellUnitTemplate); } // Add external data foreach (string ExternalPath in EXTERNAL_ABILITIES) { string UnitData = LoadTemplateFile(ExternalPath); GeneratedAbilitiesData.Add(UnitData); } // Generate file and save string AbilityBuildFile = GenerateBuildFile(CUSTOM_ABILITIES_FILE, GeneratedAbilitiesData, "{Abilities}"); SaveDataToFile(CUSTOM_ABILITIES_OUTPUT, AbilityBuildFile); }
protected List <LegionUnit> GetUpgradeUnits(LegionDatabase Database) { List <LegionUnit> UpgradeUnits = new List <LegionUnit>(); foreach (LegionUnit Unit in Database.LegionUnits) { if (Unit.IsUpgradeUnit()) { UpgradeUnits.Add(Unit); } } return(UpgradeUnits); }
protected void GenerateHeroesFile(LegionDatabase Database) { // Load hero data template file string HeroTemplateFile = LoadTemplateFile(HERO_TEMPLATE_FILE); // Generate hero data List <string> GeneratedHeroData = GenerateDataForList <LegionHero>(HeroTemplateFile, Database.LegionHeroes, "Hero"); // Build heroes data and output string HeroesBuildFile = GenerateBuildFile(CUSTOM_HEROES_TEMPLATE_FILE, GeneratedHeroData, "{Heroes}"); SaveDataToFile(CUSTOM_HEROES_OUTPUT_FILE, HeroesBuildFile); }
protected List <LegionUnit> GetSummonableUnits(LegionDatabase Database) { List <LegionUnit> SummonableUnits = new List <LegionUnit>(); foreach (LegionUnit Unit in Database.LegionUnits) { if (Unit.IsBaseUnit()) { SummonableUnits.Add(Unit); } } return(SummonableUnits); }
protected void GenerateUpgradeAbilitiesLua(LegionDatabase Database) { // Load template string AbilityTemplateFile = LoadTemplateFile(UPGRADE_UNIT_LUA_TEMPLATE); // Generate for all unit upgrades foreach (LegionUnit Unit in GetUpgradeUnits(Database)) { // Process template string UnitTemplate = AbilityTemplateFile; UnitTemplate = ProcessTemplate <LegionUnit>(UnitTemplate, Unit, "Unit"); // Save unit lua string OutputFile = string.Format(LUA_UPGRADE_ABILITY_OUTPUT, Unit.UpgradeAbility); SaveDataToFile(OutputFile, UnitTemplate); } }
protected void GenerateSummonAbilitiesLua(LegionDatabase Database) { // Load template string AbilityTemplateFile = LoadTemplateFile(SPAWN_UNIT_LUA_TEMPLATE); // Generate for all summonable units foreach (LegionUnit Unit in GetSummonableUnits(Database)) { // Process template string UnitTemplate = AbilityTemplateFile; UnitTemplate = ProcessTemplate <LegionUnit>(UnitTemplate, Unit, "Unit"); // Save unit lua string OutputFile = string.Format(LUA_SPAWN_ABILITY_OUTPUT, Unit.SummonAbility); SaveDataToFile(OutputFile, UnitTemplate); } }
public override void Generate(LegionDatabase Database) { // Units data string UnitTemplateFile = LoadTemplateFile(UNIT_TEMPLATE_FILE); List <string> GeneratedUnitData = GenerateDataForList <LegionUnit>(UnitTemplateFile, Database.LegionUnits, "Unit"); // Add data from external unit files foreach (string ExternalPath in EXTERNAL_UNITS) { string UnitData = LoadTemplateFile(ExternalPath); GeneratedUnitData.Add(UnitData); } // Generate file and save string UnitBuildFile = GenerateBuildFile(UNIT_OUTPUT_TEMPLATE, GeneratedUnitData, "{Units}"); SaveDataToFile(UNIT_OUTPUT, UnitBuildFile); }
protected void GenerateHeroList(LegionDatabase Database) { // Load hero list template string HeroListTemplateFile = LoadTemplateFile(HERO_LIST_TEMPLATE_FILE); // Build hero list string HeroList = HeroListTemplateFile; StringBuilder HeroListBuilder = new StringBuilder(); foreach (LegionHero Hero in Database.LegionHeroes) { string HeroListItem = string.Format(Constants.HERO_LIST_HERO_KV, Hero.DotaHeroOverride, Constants.MAX_SINGLE_HERO); HeroListBuilder.AppendLine(HeroListItem); } HeroList = HeroList.Replace("{Heroes}", HeroListBuilder.ToString()); // Save hero list to file SaveDataToFile(HERO_LIST_OUTPUT_FILE, HeroList); }
public void Setup(LegionDatabase Database) { this.Database = Database; DataNodes = new Dictionary <T1, TreeNode>(); SourceNodes = new Dictionary <T2, TreeNode>(); DataTreeView.MouseDown += DataTreeView_MouseDown; SourcesTreeView.MouseDown += SourcesTreeView_MouseDown; AddSourceButton.Click += AddSourceButton_Click; UpdateButton.Click += UpdateButton_Click; RebuildButton.Click += RebuildButton_Click; ContextMenuStrip ContextMenu = new ContextMenuStrip(); ContextMenu.Items.Add("Open").Click += SourcesTreeView_OnOpen; ContextMenu.Items.Add("Update").Click += SourcesTreeView_OnUpdate; ContextMenu.Items.Add("Remove").Click += SourcesTreeView_OnRemove; SourcesTreeView.ContextMenuStrip = ContextMenu; }
public override void Generate(LegionDatabase Database) { DictionaryUtils.ClearMissingKeys(); LanguageTemplateFile = LoadTemplateFile(TEMPLATE_FILE); // Process languages foreach (var Language in LocalizationDataTable.LANGUAGES) { GenerateLocalizationFile(Language, Database); } // Export missing keys list if (DictionaryUtils.GetMissingsKeys().Count > 0) { StringBuilder Builder = new StringBuilder(); Builder.AppendLine(MISSING_KEYS_HEADER); foreach (object Key in DictionaryUtils.GetMissingsKeys()) { Builder.AppendLine(Key.ToString()); } SaveDataToFile(MISSING_KEYS_FILE, Builder.ToString()); } }
public override void Generate(LegionDatabase Database) { GenerateAbilitiesFile(Database); GenerateSummonAbilitiesLua(Database); GenerateUpgradeAbilitiesLua(Database); }
public override void Generate(LegionDatabase Database) { GenerateHeroList(Database); GenerateHeroesFile(Database); }
void GenerateLocalizationFile(string Language, LegionDatabase Database) { Console.WriteLine("Generating language: " + Language); Dictionary <string, string> LocalizedList = new Dictionary <string, string>(); // Build tokens for file StringBuilder TokenBuilder = new StringBuilder(); foreach (var DataTable in Database.LocalizationDataTables) { var Flags = BindingFlags.Instance | BindingFlags.Public; var Fields = DataTable.GetType().GetFields(Flags).ToList(); var LanguageList = (List <string>)Fields.First(x => x.Name == Language).GetValue(DataTable); for (int i = 0; i < DataTable.Keys.Count; ++i) { string LocalizedLine = LanguageList[i].EscapeCharacters(); string Token = string.Format(TOKEN_LINE, DataTable.Keys[i], LocalizedLine); TokenBuilder.AppendLine(Token); LocalizedList.Add(DataTable.Keys[i], LocalizedLine); } } // Build localizations for units foreach (var Unit in Database.LegionUnits) { string UnitName = LocalizedList.Get(Unit.UnitName); string UnitDesc = LocalizedList.Get(string.Format(ABILITY_DESC, Unit.UnitName)); string UnitValue = ""; string TooltipId = ""; // Add unit name and description TokenBuilder.AppendLine(string.Format(TOKEN_LINE, Unit.ID, UnitName)); TokenBuilder.AppendLine(string.Format(TOKEN_LINE, string.Format(ABILITY_DESC, Unit.ID), UnitDesc)); // Add summon ability tooltips if (Unit.IsBaseUnit()) { TooltipId = Unit.SummonAbility; UnitValue = LocalizedList.Get(SUMMON_UNIT_LOCALIZATION); UnitValue = string.Format(UnitValue, UnitName); } else if (Unit.IsUpgradeUnit()) { TooltipId = Unit.UpgradeAbility; UnitValue = LocalizedList.Get(UPGRADE_UNIT_LOCALIZATION); UnitValue = string.Format(UnitValue, UnitName); } // Add ability name and description string AbilityName = string.Format(ABILITY_TOOLTIP, TooltipId); TokenBuilder.AppendLine(string.Format(TOKEN_LINE, AbilityName, UnitValue)); string AbilityDesc = string.Format(ABILITY_DESC_TOOLTIP, TooltipId); TokenBuilder.AppendLine(string.Format(TOKEN_LINE, AbilityDesc, UnitDesc)); // Add currency tooltips string GoldTooltip = string.Format(GOLD_COST_TOOLTIP[0], TooltipId); TokenBuilder.AppendLine(string.Format(TOKEN_LINE, GoldTooltip, LocalizedList.Get(GOLD_COST_TOOLTIP[1]))); string GemsTooltip = string.Format(GEMS_COST_TOOLTIP[0], TooltipId); TokenBuilder.AppendLine(string.Format(TOKEN_LINE, GemsTooltip, LocalizedList.Get(GEMS_COST_TOOLTIP[1]))); string FoodTooltip = string.Format(FOOD_COST_TOOLTIP[0], TooltipId); TokenBuilder.AppendLine(string.Format(TOKEN_LINE, FoodTooltip, LocalizedList.Get(FOOD_COST_TOOLTIP[1]))); // Unit Ability foreach (LegionAbility Ability in Unit.LegionAbilities) { // Build ability ID localizations // id, id_Description, id_Note0, etc. List <string> Keys = LocalizedList.Keys.Where(x => x.Contains(Ability.AbilityID)).ToList(); foreach (string Key in Keys) { string AbilityKey = Key.Replace(Ability.AbilityID, Ability.ID); string UnitAbilityKey = string.Format(ABILITY_TOOLTIP, AbilityKey); TokenBuilder.AppendLine(string.Format(TOKEN_LINE, UnitAbilityKey, LocalizedList.Get(Key))); } // Build ability modifier localizations foreach (string Modifier in Ability.Modifiers) { string ModifierKey = string.Format(ABILITY_MODIFIER_TOOLTIP, Modifier); LocalizedList.Get(Modifier); } } } // Generate file contents string FileContents = LanguageTemplateFile; FileContents = FileContents.Replace("{Language}", Language); FileContents = FileContents.Replace("{Tokens}", TokenBuilder.ToString()); // Write file string OutputPath = string.Format(OUTPUT_FILE, Language.ToLower()); SaveDataToFile(OutputPath, FileContents, Encoding.Unicode); }
public Main() { InitializeComponent(); Database = new LegionDatabase(); Database = Database.Load() ?? Database; Database.Setup(); DotaDatabase = new DotaData(); DotaDatabase.Load(); // Localization Tab LocalizationTab = new SpreadsheetDataDisplayTab <LocalizedLanguage, LocalizationDataTable>(); LocalizationTab.DataTreeView = spreadsheetDisplayLocalization.treeData; LocalizationTab.SourcesTreeView = spreadsheetDisplayLocalization.treeDataSources; LocalizationTab.AddSourceButton = spreadsheetDisplayLocalization.buttonAddSpreadsheet; LocalizationTab.UpdateButton = spreadsheetDisplayLocalization.buttonUpdateSpreadsheets; LocalizationTab.RebuildButton = spreadsheetDisplayLocalization.buttonRebuildTrees; LocalizationTab.SpreadsheetIDTextBox = spreadsheetDisplayLocalization.textSpreadsheetId; LocalizationTab.TabIDTextBox = spreadsheetDisplayLocalization.textTabId; LocalizationTab.DataView = spreadsheetDisplayLocalization.dataGridInfo; LocalizationTab.AddSourceFunc = Database.AddNewLocalizationSheet; LocalizationTab.RemoveSourceFunc = Database.RemoveLocalizationSheet; LocalizationTab.GetDataFunc = Database.GetLocalizationLanguages; LocalizationTab.GetSourcesFunc = Database.GetLocalizationSheets; LocalizationTab.OnPreRebuildFunc = Database.RebuildLanguageCache; LocalizationTab.Setup(Database); LocalizationTab.Rebuild(); // Units Tab UnitsTab = new SpreadsheetDataDisplayTab <LegionUnit, UnitDataTable>(); UnitsTab.DataTreeView = spreadsheetDisplayUnits.treeData; UnitsTab.SourcesTreeView = spreadsheetDisplayUnits.treeDataSources; UnitsTab.AddSourceButton = spreadsheetDisplayUnits.buttonAddSpreadsheet; UnitsTab.UpdateButton = spreadsheetDisplayUnits.buttonUpdateSpreadsheets; UnitsTab.RebuildButton = spreadsheetDisplayUnits.buttonRebuildTrees; UnitsTab.SpreadsheetIDTextBox = spreadsheetDisplayUnits.textSpreadsheetId; UnitsTab.TabIDTextBox = spreadsheetDisplayUnits.textTabId; UnitsTab.DataView = spreadsheetDisplayUnits.dataGridInfo; UnitsTab.AddSourceFunc = Database.AddNewUnitSheet; UnitsTab.RemoveSourceFunc = Database.RemoveUnitSheet; UnitsTab.GetDataFunc = Database.GetUnits; UnitsTab.GetSourcesFunc = Database.GetUnitSheets; UnitsTab.OnPreRebuildFunc = Database.RebuildUnitCache; UnitsTab.Setup(Database); UnitsTab.Rebuild(); // Heroes Tab HeroesTab = new SpreadsheetDataDisplayTab <LegionHero, HeroDataTable>(); HeroesTab.DataTreeView = spreadsheetDisplayHeroes.treeData; HeroesTab.SourcesTreeView = spreadsheetDisplayHeroes.treeDataSources; HeroesTab.AddSourceButton = spreadsheetDisplayHeroes.buttonAddSpreadsheet; HeroesTab.UpdateButton = spreadsheetDisplayHeroes.buttonUpdateSpreadsheets; HeroesTab.RebuildButton = spreadsheetDisplayHeroes.buttonRebuildTrees; HeroesTab.SpreadsheetIDTextBox = spreadsheetDisplayHeroes.textSpreadsheetId; HeroesTab.TabIDTextBox = spreadsheetDisplayHeroes.textTabId; HeroesTab.DataView = spreadsheetDisplayHeroes.dataGridInfo; HeroesTab.AddSourceFunc = Database.AddNewHeroSheet; HeroesTab.RemoveSourceFunc = Database.RemoveHeroSheet; HeroesTab.GetDataFunc = Database.GetHeroes; HeroesTab.GetSourcesFunc = Database.GetHeroSheets; HeroesTab.OnPreRebuildFunc = Database.RebuildHeroCache; HeroesTab.Setup(Database); HeroesTab.Rebuild(); // Abilities Tab AbilitiesTab = new SpreadsheetDataDisplayTab <LegionAbility, AbilityDataTable>(); AbilitiesTab.DataTreeView = spreadsheetDisplayAbilities.treeData; AbilitiesTab.SourcesTreeView = spreadsheetDisplayAbilities.treeDataSources; AbilitiesTab.AddSourceButton = spreadsheetDisplayAbilities.buttonAddSpreadsheet; AbilitiesTab.UpdateButton = spreadsheetDisplayAbilities.buttonUpdateSpreadsheets; AbilitiesTab.RebuildButton = spreadsheetDisplayAbilities.buttonRebuildTrees; AbilitiesTab.SpreadsheetIDTextBox = spreadsheetDisplayAbilities.textSpreadsheetId; AbilitiesTab.TabIDTextBox = spreadsheetDisplayAbilities.textTabId; AbilitiesTab.DataView = spreadsheetDisplayAbilities.dataGridInfo; AbilitiesTab.AddSourceFunc = Database.AddNewAbilitySheet; AbilitiesTab.RemoveSourceFunc = Database.RemoveAbilitySheet; AbilitiesTab.GetDataFunc = Database.GetAbilities; AbilitiesTab.GetSourcesFunc = Database.GetAbilitySheets; AbilitiesTab.OnPreRebuildFunc = Database.RebuildAbilityCache; AbilitiesTab.Setup(Database); AbilitiesTab.Rebuild(); }
private void loadToolStripMenuItem_Click(object sender, EventArgs e) { Database = Database.Load() ?? Database; }
public abstract void Generate(LegionDatabase Database);