public void UpdateGameProfile(IGameProfile gameProfile)
        {
            string query = @"update GameProfiles set Name = @Name, SourcePortID = @SourcePortID, IWadID = @IWadID,
                    SettingsMap = @SettingsMap, SettingsSkill = @SettingsSkill, SettingsExtraParams = @SettingsExtraParams, SettingsFiles = @SettingsFiles,
                    SettingsFilesSourcePort = @SettingsFilesSourcePort, SettingsFilesIWAD = @SettingsFilesIWAD,
                    SettingsSpecificFiles = @SettingsSpecificFiles, SettingsStat = @SettingsStat, SettingsSaved = @SettingsSaved
                    where GameProfileID = @gameProfileID";

            List <DbParameter> parameters = new List <DbParameter>
            {
                DataAccess.DbAdapter.CreateParameter("Name", gameProfile.Name ?? (object)DBNull.Value),
                DataAccess.DbAdapter.CreateParameter("SourcePortID", gameProfile.SourcePortID ?? (object)DBNull.Value),
                DataAccess.DbAdapter.CreateParameter("IWadID", gameProfile.IWadID ?? (object)DBNull.Value),
                DataAccess.DbAdapter.CreateParameter("SettingsMap", gameProfile.SettingsMap ?? (object)DBNull.Value),
                DataAccess.DbAdapter.CreateParameter("SettingsSkill", gameProfile.SettingsSkill ?? (object)DBNull.Value),
                DataAccess.DbAdapter.CreateParameter("SettingsExtraParams", gameProfile.SettingsExtraParams ?? (object)DBNull.Value),
                DataAccess.DbAdapter.CreateParameter("SettingsFiles", gameProfile.SettingsFiles ?? (object)DBNull.Value),
                DataAccess.DbAdapter.CreateParameter("SettingsFilesSourcePort", gameProfile.SettingsFilesSourcePort ?? (object)DBNull.Value),
                DataAccess.DbAdapter.CreateParameter("SettingsFilesIWAD", gameProfile.SettingsFilesIWAD ?? (object)DBNull.Value),
                DataAccess.DbAdapter.CreateParameter("SettingsSpecificFiles", gameProfile.SettingsSpecificFiles ?? (object)DBNull.Value),
                DataAccess.DbAdapter.CreateParameter("SettingsStat", gameProfile.SettingsStat),
                DataAccess.DbAdapter.CreateParameter("SettingsSaved", gameProfile.SettingsSaved),
                DataAccess.DbAdapter.CreateParameter("GameProfileID", gameProfile.GameProfileID),
            };

            DataAccess.ExecuteNonQuery(query, parameters);
        }
示例#2
0
        public void SetGameProfile(IGameProfile gameProfile)
        {
            SetIwadInfoLabel();

            UnregisterEvents();
            m_handler = new FileLoadHandler(m_adapter, GameFile, gameProfile);

            SetDefaultSelections();
            GameProfile.ApplyDefaultsToProfile(gameProfile, m_appConfig);
            cmbProfiles.SelectedValue = gameProfile.GameProfileID;

            if (GameFile != null)
            {
                chkSaveStats.Checked      = gameProfile.SettingsStat;
                chkLoadLatestSave.Checked = gameProfile.SettingsLoadLatestSave;

                if (gameProfile.SourcePortID.HasValue)
                {
                    SelectedSourcePort = m_adapter.GetSourcePort(gameProfile.SourcePortID.Value);
                }

                // Selected GameFile is an IWAD so lock the IWAD selection
                if (IsIwad(GameFile))
                {
                    cmbIwad.Enabled = false;
                    SelectedIWad    = GameFile;
                }
                else if (gameProfile.IWadID.HasValue)
                {
                    SelectedIWad = m_adapter.GetGameFileIWads().FirstOrDefault(x => x.IWadID == gameProfile.IWadID);
                }

                if (!string.IsNullOrEmpty(gameProfile.SettingsMap))
                {
                    SelectedMap = gameProfile.SettingsMap;
                }
                if (!string.IsNullOrEmpty(gameProfile.SettingsSkill))
                {
                    SelectedSkill = gameProfile.SettingsSkill;
                }
                if (!string.IsNullOrEmpty(gameProfile.SettingsExtraParams))
                {
                    ExtraParameters = gameProfile.SettingsExtraParams;
                }
                if (!string.IsNullOrEmpty(gameProfile.SettingsSpecificFiles))
                {
                    SpecificFiles = Util.SplitString(gameProfile.SettingsSpecificFiles);
                }
            }

            bool reset = ShouldRecalculateAdditionalFiles();

            HandleSourcePortSelectionChange(reset);
            HandleIwadSelectionChanged(reset);
            SetAdditionalFiles(reset);
            HandleDemoChange();
            RegisterEvents();
        }
示例#3
0
 public FileLoadHandler(IDataSourceAdapter adapter, IGameFile gameFile, IGameProfile gameProfile)
 {
     m_adapter     = adapter;
     m_gameFile    = gameFile;
     m_gameProfile = gameProfile;
     SetAdditionalFiles(Util.GetAdditionalFiles(m_adapter, gameProfile));
     m_iwadAdditionalFiles       = GetIWadFilesFromGameFile(gameProfile);
     m_sourcePortAdditionalFiles = Util.GetSourcePortAdditionalFiles(m_adapter, gameProfile);
 }
示例#4
0
        private List <IGameFile> GetIWadFilesFromGameFile(IGameProfile gameFile)
        {
            if (gameFile.IWadID.HasValue)
            {
                var gameFileIwad = m_adapter.GetGameFileIWads().FirstOrDefault(x => x.IWadID == m_gameProfile.IWadID.Value);
                if (gameFileIwad != null)
                {
                    return(GetAdditionalFiles(AddFilesType.IWAD, gameFileIwad, null));
                }
            }

            return(Util.GetIWadAdditionalFiles(m_adapter, gameFile));
        }
示例#5
0
 public LaunchData(IGameFile gameFile, IGameProfile gameProfile, IEnumerable <IGameFile> additionalGameFiles)
 {
     GameFile    = gameFile;
     GameProfile = gameProfile;
     if (additionalGameFiles == null)
     {
         AdditionalGameFiles = new List <IGameFile>();
     }
     else
     {
         AdditionalGameFiles = additionalGameFiles.ToList();
     }
     Success = true;
 }
示例#6
0
        public void UpdateGameProfile(IGameProfile gameProfile)
        {
            gameProfile.SettingsSaved = true;
            gameProfile.SourcePortID  = gameProfile.IWadID = null;

            if (SelectedSourcePort != null)
            {
                gameProfile.SourcePortID = SelectedSourcePort.SourcePortID;
            }
            if (SelectedIWad != null)
            {
                gameProfile.IWadID = SelectedIWad.IWadID;
            }

            if (SelectedMap != null)
            {
                gameProfile.SettingsMap = SelectedMap;
            }
            else
            {
                gameProfile.SettingsMap = string.Empty;  //this setting can be turned off
            }
            if (SelectedSkill != null)
            {
                gameProfile.SettingsSkill = SelectedSkill;
            }
            if (ExtraParameters != null)
            {
                gameProfile.SettingsExtraParams = ExtraParameters;
            }

            gameProfile.SettingsStat           = SaveStatistics;
            gameProfile.SettingsLoadLatestSave = LoadLatestSave;

            if (ShouldSaveAdditionalFiles())
            {
                gameProfile.SettingsFiles           = string.Join(";", GetAdditionalFiles().Select(x => x.FileName).ToArray());
                gameProfile.SettingsFilesIWAD       = string.Join(";", GetIWadAdditionalFiles().Select(x => x.FileName).ToArray());
                gameProfile.SettingsFilesSourcePort = string.Join(";", GetSourcePortAdditionalFiles().Select(x => x.FileName).ToArray());

                if (SpecificFiles != null)
                {
                    gameProfile.SettingsSpecificFiles = string.Join(";", SpecificFiles);
                }
                else
                {
                    gameProfile.SettingsSpecificFiles = string.Empty; //this setting can be turned off
                }
            }
        }
示例#7
0
 public static void ApplyDefaultsToProfile(IGameProfile gameProfile, AppConfiguration appConfig)
 {
     if (!gameProfile.SourcePortID.HasValue)
     {
         gameProfile.SourcePortID = (int)appConfig.GetTypedConfigValue(ConfigType.DefaultSourcePort, typeof(int));
     }
     if (!gameProfile.IWadID.HasValue)
     {
         gameProfile.IWadID = (int)appConfig.GetTypedConfigValue(ConfigType.DefaultIWad, typeof(int));
     }
     if (string.IsNullOrEmpty(gameProfile.SettingsSkill))
     {
         gameProfile.SettingsSkill = (string)appConfig.GetTypedConfigValue(ConfigType.DefaultSkill, typeof(string));
     }
 }
示例#8
0
        private void HandlePlaySettings(PlayForm form, IGameProfile gameProfile)
        {
            if (form.RememberSettings && gameProfile != null)
            {
                form.UpdateGameProfile(gameProfile);

                form.GameFile.SettingsGameProfileID = form.SelectedGameProfile.GameProfileID;
                DataSourceAdapter.UpdateGameFile(form.GameFile, new GameFileFieldType[] { GameFileFieldType.SettingsGameProfileID });

                if (gameProfile is IGameFile gameFile)
                {
                    DataSourceAdapter.UpdateGameFile(gameFile, new GameFileFieldType[] { GameFileFieldType.SourcePortID, GameFileFieldType.IWadID, GameFileFieldType.SettingsMap,
                                                                                         GameFileFieldType.SettingsSkill, GameFileFieldType.SettingsFiles, GameFileFieldType.SettingsExtraParams, GameFileFieldType.SettingsSpecificFiles, GameFileFieldType.SettingsStat,
                                                                                         GameFileFieldType.SettingsFilesIWAD, GameFileFieldType.SettingsFilesSourcePort, GameFileFieldType.SettingsSaved, GameFileFieldType.SettingsLoadLatestSave });
                }
                else
                {
                    DataSourceAdapter.UpdateGameProfile(gameProfile);
                }
            }
        }
        public static Dictionary <string, FileType> GetFilesPaths(IGameProfile gameProfile, DirectoryInfo folder, TextType typeOfTexts, Direction direction)
        {
            Dictionary <string, FileType> filePaths = new Dictionary <string, FileType>();

            string inputFolderPath = $@"{folder.FullName}\";


            Dictionary <string, FileType> tempPaths = new Dictionary <string, FileType>();

            if (typeOfTexts == TextType.GameText)
            {
                if (direction == Direction.Input)
                {
                    tempPaths = gameProfile.GameFolderStructure;
                }
                else if (direction == Direction.Output)
                {
                    gameProfile.LuaStringsFolderLang = Settings.Default.TargetTerritoryFolder;
                    foreach (var file in gameProfile.GameFolderStructure.Where(i => i.Value == FileType.LuaStrings))
                    {
                        string tempFilePath = $@"{folder.FullName}\{Path.GetDirectoryName(file.Key)}\{Path.GetFileNameWithoutExtension(file.Key)}.xliff";
                        tempPaths.Add(tempFilePath, file.Value);
                    }
                    return(tempPaths);
                }
            }
            else if (typeOfTexts == TextType.LauncherText)
            {
                tempPaths = gameProfile.LauncherFolderStructure;
            }

            foreach (var path in tempPaths)
            {
                filePaths.Add($"{inputFolderPath}{path.Key}", path.Value);
            }

            return(filePaths);
        }
示例#10
0
        public static List <IGameFile> GetSourcePortAdditionalFiles(IDataSourceAdapter adapter, IGameProfile gameFile)
        {
            if (gameFile != null && !string.IsNullOrEmpty(gameFile.SettingsFilesSourcePort))
            {
                return(GetAdditionalFiles(adapter, gameFile.SettingsFilesSourcePort));
            }

            return(new List <IGameFile>());
        }
        public void InsertGameProfile(IGameProfile gameProfile)
        {
            string insert = InsertStatement("GameProfiles", gameProfile, new string[] { "GameProfileID" }, out List <DbParameter> parameters);

            DataAccess.ExecuteNonQuery(insert, parameters);
        }