示例#1
0
        private void ImportBattleFromTypeAndFile(int selectedFileType, string fileName, bool setBattle = true)
        {
            DataOptions options = new DataOptions();

            if (selectedFileType == (int)Import_Filters.json)
            {
                var importedBattle = XmlHelper.DeserializeFromFile(fileName);

                importedBattle.battle.msbtUpdated = true;   // We want to be sure we write the new title when we save.

                options.AddDataTbl(importedBattle.battle);
                options.AddRangeDataTbl(importedBattle.fighters);
                options.AddDataTbl(importedBattle.spirit);
            }
            else if (selectedFileType == (int)Import_Filters.prc)
            {
                options = XmlHelper.ReadXML(fileName, dataTbls.config.labels_file_location);
            }

            SaveImportToDataTbls(options);
            if (setBattle)
            {
                var battle = (Battle)options.GetItemsOfType(typeof(Battle)).FirstOrDefault();
                SetSelectedBattleByBattle(battle);
            }
        }
示例#2
0
        private void ImportBattleOverFile_Click(object sender, EventArgs e)
        {
            var importDialog = FileHelper.GetImportBattleFileDialog(title: "Import Custom Spirit Over Current.", initialDirectory: dataTbls.config.file_directory_custom_battles);

            if (importDialog.ShowDialog() == CommonFileDialogResult.Ok && !String.IsNullOrWhiteSpace(importDialog?.FileName))
            {
                DataOptions options = new DataOptions();

                if (importDialog.SelectedFileTypeIndex == (int)Import_Filters.json)
                {
                    var importedBattle = XmlHelper.DeserializeFromFile(importDialog.FileName);

                    importedBattle.battle.msbtUpdated = true;   // We want to be sure we write the new title when we save.

                    options.AddDataTbl(importedBattle.battle);
                    options.AddRangeDataTbl(importedBattle.fighters);
                }
                else if (importDialog.SelectedFileTypeIndex == (int)Import_Filters.prc)
                {
                    options = XmlHelper.ReadXML(importDialog.FileName, dataTbls.config.labels_file_location);
                }
                options.SetBattleIdsForAll(dataTbls.selectedBattle.battle_id);

                var battle = (Battle)options.GetItemsOfType(typeof(Battle)).FirstOrDefault();

                SaveImportToDataTbls(options);
                SetSelectedBattleByBattle(battle);
            }
        }
示例#3
0
        public List <string> AddResultsToDataTbls(DataOptions results)
        {
            var fileDbType = new List <string>();

            var types = results.GetContainerTypes();

            if (types.Contains(typeof(Battle)) && types.Contains(typeof(Fighter)))
            {
                if (types.Contains(typeof(Battle)))
                {
                    dataTbls.battleData = (BattleDataOptions)results.GetDataOptionsFromUnderlyingType(typeof(Battle));
                    fileDbType.Add("Battle");
                }
                if (types.Contains(typeof(Fighter)))
                {
                    dataTbls.fighterData = (FighterDataOptions)results.GetDataOptionsFromUnderlyingType(typeof(Fighter));
                    fileDbType.Add("Fighter");
                }

                buildFighterDataTab(dataTbls.battleData.GetBattleAtIndex(0).battle_id);
            }
            if (types.Exists(x => x.IsSubclassOf(typeof(Event))))
            {
                dataTbls.eventData = (EventDataOptions)results.GetDataOptionsFromUnderlyingType(typeof(Event));
                dataTbls.eventData.SetFoundEventTypes(dataTbls.battleData.event_type);  //Some unique values in battleData, so we combine the two sets.

                fileDbType.Add("Event");
            }
            if (types.Contains(typeof(Item)))
            {
                dataTbls.itemData = (ItemDataOptions)results.GetDataOptionsFromUnderlyingType(typeof(Item));
                var itemEvents = dataTbls.itemData.GetAsEvents();
                dataTbls.eventData.AddUniqueEvents(itemEvents);
                fileDbType.Add("Item");
            }
            if (types.Contains(typeof(SpiritFighter)))
            {
                dataTbls.spiritFighterData = (SpiritFighterDataOptions)results.GetDataOptionsFromUnderlyingType(typeof(SpiritFighter));
                fileDbType.Add("Spirit Fighter");
            }
            if (types.Contains(typeof(SpiritBoard)))
            {
                dataTbls.spiritBoardData = (SpiritBoardDataOptions)results.GetDataOptionsFromUnderlyingType(typeof(SpiritBoard));
                fileDbType.Add("Spirit Board");
            }
            if (types.Contains(typeof(Spirit)))
            {
                dataTbls.spiritData = (SpiritDataOptions)results.GetDataOptionsFromUnderlyingType(typeof(Spirit));
                fileDbType.Add("Spirit");
            }
            if (types.Contains(typeof(SpiritAbilities)))
            {
                var abilities = results.GetItemsOfType(typeof(SpiritAbilities));
                var names     = abilities?.Select(x => x?.GetPropertyValueFromName(SpiritAbilities.fieldKey)).ToList();
                dataTbls.battleData.AddRecommendedSkills(names);
                dataTbls.fighterData.AddNewAbilities(names);
                fileDbType.Add("Spirit Ability");
            }
            if (types.Contains(typeof(Bgm)))
            {
                var bgms  = results.GetItemsOfType(typeof(Bgm));
                var names = bgms?.Select(x => x?.GetPropertyValueFromName(Bgm.fieldKey));
                dataTbls.battleData.stage_bgm = names;
                fileDbType.Add("BGM");
            }
            if (types.Contains(typeof(Stage)))
            {
                var stages = results.GetItemsOfType(typeof(Stage));
                var names  = stages?.Select(x => x?.GetPropertyValueFromName(Stage.fieldKey));
                dataTbls.battleData.ui_stage_id = names;
                fileDbType.Add("Stage");
            }

            return(fileDbType);
        }