Exemplo n.º 1
0
        private void SyncIWads(FileAddResults fileAddResults)
        {
            foreach (string file in fileAddResults.GetAllFiles())
            {
                IGameFile gameFile = DataSourceAdapter.GetGameFile(file);

                if (gameFile != null && !gameFile.IWadID.HasValue)
                {
                    DataSourceAdapter.InsertIWad(new IWadData()
                    {
                        GameFileID = gameFile.GameFileID.Value, FileName = file, Name = file
                    });
                    var iwad = DataSourceAdapter.GetIWads().OrderBy(x => x.IWadID).LastOrDefault();

                    IWadInfo wadInfo = IWadInfo.GetIWadInfo(gameFile.FileName);
                    gameFile.Title = wadInfo == null?Path.GetFileNameWithoutExtension(gameFile.FileName).ToUpper() : wadInfo.Title;

                    DataSourceAdapter.UpdateGameFile(gameFile, new GameFileFieldType[] { GameFileFieldType.Title });

                    if (iwad != null)
                    {
                        gameFile.IWadID = iwad.IWadID;
                        DataSourceAdapter.UpdateGameFile(gameFile, new[] { GameFileFieldType.IWadID });
                    }
                }
            }

            UpdateLocal();
            HandleTabSelectionChange();
        }
Exemplo n.º 2
0
        private void SyncPendingZdlFiles()
        {
            foreach (IGameFile gameFile in m_pendingZdlFiles)
            {
                IGameFile libraryGameFile = DataSourceAdapter.GetGameFile(gameFile.FileName);

                if (libraryGameFile != null)
                {
                    libraryGameFile.SettingsSkill       = gameFile.SettingsSkill;
                    libraryGameFile.SettingsMap         = gameFile.SettingsMap;
                    libraryGameFile.SettingsExtraParams = gameFile.SettingsExtraParams;
                    libraryGameFile.SourcePortID        = gameFile.SourcePortID;
                    libraryGameFile.IWadID        = gameFile.IWadID;
                    libraryGameFile.SettingsSkill = gameFile.SettingsSkill;
                    libraryGameFile.SettingsFiles = gameFile.SettingsFiles;

                    if (string.IsNullOrEmpty(libraryGameFile.Comments))
                    {
                        libraryGameFile.Comments = gameFile.Comments;
                    }

                    DataSourceAdapter.UpdateGameFile(libraryGameFile);
                }
            }
        }
Exemplo n.º 3
0
        private void SetIWadGameFiles()
        {
            IEnumerable <IIWadData> iwads = DataSourceAdapter.GetIWads();
            List <IGameFile>        gameFileDataUpdate = new List <IGameFile>();

            if (iwads.Any())
            {
                IEnumerable <IGameFile> gameFiles = DataSourceAdapter.GetGameFiles();
                foreach (IIWadData iwad in iwads)
                {
                    IGameFile find = gameFiles.FirstOrDefault(x => x.FileName.ToLower() == iwad.FileName.ToLower().Replace(".wad", ".zip"));
                    if (find != null)
                    {
                        if (!find.IWadID.HasValue) //this should mean the file was just added so we should set the pre-defined title
                        {
                            FillIwadData(find);
                            gameFileDataUpdate.Add(find);
                            find.IWadID = iwad.IWadID;
                            DataSourceAdapter.UpdateGameFile(find, new GameFileFieldType[] { GameFileFieldType.IWadID });
                        }

                        if (!iwad.GameFileID.HasValue)
                        {
                            iwad.GameFileID = find.GameFileID;
                            DataSourceAdapter.UpdateIWad(iwad);
                        }
                    }
                    else
                    {
                        Util.ThrowDebugException("This should not happen");
                    }
                }
            }
        }
Exemplo n.º 4
0
        private void HandlePlaySettings(PlayForm form, IGameFile gameFile)
        {
            if (form.RememberSettings && gameFile != null)
            {
                gameFile.SourcePortID = gameFile.IWadID = null;

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

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

                gameFile.SettingsStat = form.SaveStatistics;

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

                    if (form.SpecificFiles != null)
                    {
                        gameFile.SettingsSpecificFiles = string.Join(";", form.SpecificFiles);
                    }
                    else
                    {
                        gameFile.SettingsSpecificFiles = string.Empty; //this setting can be turned off
                    }
                }

                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 });
            }
        }
Exemplo n.º 5
0
        private bool StartPlay(IGameFile gameFile, ISourcePortData sourcePort, bool screenFilter)
        {
            GameFilePlayAdapter playAdapter = CreatePlayAdapter(m_currentPlayForm, playAdapter_ProcessExited, AppConfiguration);

            m_saveGames = new IFileData[] { };

            if (AppConfiguration.CopySaveFiles)
            {
                CopySaveGames(gameFile, sourcePort);
            }
            CreateFileDetectors(sourcePort);

            if (m_currentPlayForm.PreviewLaunchParameters)
            {
                ShowLaunchParameters(playAdapter, gameFile, sourcePort);
            }

            bool isGameFileIwad = IsGameFileIwad(gameFile);

            if (m_currentPlayForm.SaveStatistics)
            {
                SetupStatsReader(sourcePort, gameFile);
            }

            if (playAdapter.Launch(AppConfiguration.GameFileDirectory, AppConfiguration.TempDirectory,
                                   gameFile, sourcePort, isGameFileIwad))
            {
                m_currentPlayFile = gameFile;

                if (gameFile != null)
                {
                    gameFile.LastPlayed = DateTime.Now;
                    m_dtStartPlay       = DateTime.Now;
                    DataSourceAdapter.UpdateGameFile(gameFile, new GameFileFieldType[] { GameFileFieldType.LastPlayed });
                    UpdateDataSourceViews(gameFile);
                }
            }
            else
            {
                MessageBox.Show(this, playAdapter.LastError, "Launch Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(false);
            }

            if (screenFilter)
            {
                m_filterForm = new FilterForm(Screen.FromControl(this), m_currentPlayForm.GetFilterSettings());
                m_filterForm.Show(this);
            }

            return(true);
        }
Exemplo n.º 6
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);
                }
            }
        }
Exemplo n.º 7
0
 private void SetMinutesPlayed(DateTime dtExit, IGameFile gameFile)
 {
     gameFile.MinutesPlayed += Convert.ToInt32(dtExit.Subtract(m_dtStartPlay).TotalMinutes);
     DataSourceAdapter.UpdateGameFile(gameFile, new GameFileFieldType[] { GameFileFieldType.MinutesPlayed });
     UpdateDataSourceViews(gameFile);
 }
Exemplo n.º 8
0
 private bool HandleUpdateMetaFields(IGameFile localFile, List <GameFileFieldType> fields)
 {
     DataSourceAdapter.UpdateGameFile(localFile, fields.ToArray());
     UpdateDataSourceViews(localFile);
     return(true);
 }
Exemplo n.º 9
0
        private void FillIwadData(IGameFile gameFile)
        {
            FileInfo fi = new FileInfo(gameFile.FileName);

            if (string.IsNullOrEmpty(gameFile.Title))
            {
                switch (gameFile.FileName.Replace(fi.Extension, string.Empty).ToUpper())
                {
                case "DOOM1":
                    gameFile.Title = "Doom Shareware";
                    break;

                case "DOOM":
                    gameFile.Title = "The Ultimate Doom";
                    break;

                case "DOOM2":
                    gameFile.Title = "Doom II: Hell on Earth";
                    break;

                case "PLUTONIA":
                    gameFile.Title = "Final Doom: The Plutonia Experiment";
                    break;

                case "TNT":
                    gameFile.Title = "Final Doom: TNT: Evilution";
                    break;

                case "FREEDOOM1":
                    gameFile.Title = "Freedoom: Phase 1";
                    break;

                case "FREEDOOM2":
                    gameFile.Title = "Freedoom: Phase 2";
                    break;

                case "CHEX":
                    gameFile.Title = "Chex Quest";
                    break;

                case "CHEX3":
                    gameFile.Title = "Chex Quest 3";
                    break;

                case "HACX":
                    gameFile.Title = "Hacx: Twitch 'n Kill";
                    break;

                case "HERETIC1":
                    gameFile.Title = "Heretic Shareware";
                    break;

                case "HERETIC":
                    gameFile.Title = "Heretic: Shadow of the Serpent Riders";
                    break;

                case "HEXEN":
                    gameFile.Title = "Hexen: Beyond Heretic";
                    break;

                case "STRIFE0":
                    gameFile.Title = "Strife Demo";
                    break;

                case "STRIFE1":
                    gameFile.Title = "Strife: Quest for the Sigil";
                    break;

                default:
                    gameFile.Title = gameFile.FileName.Replace(fi.Extension, string.Empty);
                    break;
                }

                DataSourceAdapter.UpdateGameFile(gameFile, new GameFileFieldType[] { GameFileFieldType.Title });
            }
        }