@@ -107,6 +107,8 @@ const MS_FO4_VAULT_TEC_PATH: &str = "../../Fallout 4- Vault-Tec Workshop (PC)/Co
107107
108108const PLUGINS_TXT : & str = "Plugins.txt" ;
109109
110+ const OBLIVION_REMASTERED_RELATIVE_DATA_PATH : & str = "OblivionRemastered/Content/Dev/ObvData/Data" ;
111+
110112impl GameSettings {
111113 pub fn new ( game_id : GameId , game_path : & Path ) -> Result < GameSettings , Error > {
112114 let local_path = local_path ( game_id, game_path) ?. unwrap_or_default ( ) ;
@@ -130,7 +132,7 @@ impl GameSettings {
130132 my_games_path : PathBuf ,
131133 ) -> Result < GameSettings , Error > {
132134 let plugins_file_path = plugins_file_path ( game_id, game_path, local_path) ?;
133- let load_order_path = load_order_path ( game_id, local_path) ;
135+ let load_order_path = load_order_path ( game_id, local_path, & plugins_file_path ) ;
134136 let plugins_directory = plugins_directory ( game_id, game_path, local_path) ?;
135137 let additional_plugins_directories =
136138 additional_plugins_directories ( game_id, game_path, & my_games_path) ?;
@@ -167,7 +169,7 @@ impl GameSettings {
167169 GameId :: Morrowind | GameId :: Oblivion | GameId :: Fallout3 | GameId :: FalloutNV => {
168170 LoadOrderMethod :: Timestamp
169171 }
170- GameId :: Skyrim => LoadOrderMethod :: Textfile ,
172+ GameId :: Skyrim | GameId :: OblivionRemastered => LoadOrderMethod :: Textfile ,
171173 GameId :: SkyrimSE
172174 | GameId :: SkyrimVR
173175 | GameId :: Fallout4
@@ -189,7 +191,7 @@ impl GameSettings {
189191 pub fn master_file ( & self ) -> & ' static str {
190192 match self . id {
191193 GameId :: Morrowind | GameId :: OpenMW => "Morrowind.esm" ,
192- GameId :: Oblivion => "Oblivion.esm" ,
194+ GameId :: Oblivion | GameId :: OblivionRemastered => "Oblivion.esm" ,
193195 GameId :: Skyrim | GameId :: SkyrimSE | GameId :: SkyrimVR => "Skyrim.esm" ,
194196 GameId :: Fallout3 => "Fallout3.esm" ,
195197 GameId :: FalloutNV => "FalloutNV.esm" ,
@@ -356,7 +358,7 @@ fn local_path(game_id: GameId, game_path: &Path) -> Result<Option<PathBuf>, Erro
356358// The local path can vary depending on where the game was bought from.
357359fn appdata_folder_name ( game_id : GameId , game_path : & Path ) -> Option < & ' static str > {
358360 match game_id {
359- GameId :: Morrowind | GameId :: OpenMW => None ,
361+ GameId :: Morrowind | GameId :: OpenMW | GameId :: OblivionRemastered => None ,
360362 GameId :: Oblivion => Some ( "Oblivion" ) ,
361363 GameId :: Skyrim => Some ( skyrim_appdata_folder_name ( game_path) ) ,
362364 GameId :: SkyrimSE => Some ( skyrim_se_appdata_folder_name ( game_path) ) ,
@@ -444,6 +446,7 @@ fn my_games_path(
444446fn my_games_folder_name ( game_id : GameId , game_path : & Path ) -> Option < & ' static str > {
445447 match game_id {
446448 GameId :: OpenMW => Some ( "OpenMW" ) ,
449+ GameId :: OblivionRemastered => Some ( "Oblivion Remastered" ) ,
447450 GameId :: Skyrim => Some ( skyrim_my_games_folder_name ( game_path) ) ,
448451 // For all other games the name is the same as the AppData\Local folder name.
449452 _ => appdata_folder_name ( game_id, game_path) ,
@@ -461,11 +464,12 @@ fn skyrim_my_games_folder_name(game_path: &Path) -> &'static str {
461464fn is_microsoft_store_install ( game_id : GameId , game_path : & Path ) -> bool {
462465 const APPX_MANIFEST : & str = "appxmanifest.xml" ;
463466
467+ // TODO: Oblivion Remastered - path to manifest is C:\XboxGames\The Elder Scrolls IV- Oblivion Remastered\Content\,
464468 match game_id {
465469 GameId :: Morrowind | GameId :: Oblivion | GameId :: Fallout3 | GameId :: FalloutNV => game_path
466470 . parent ( )
467471 . is_some_and ( |parent| parent. join ( APPX_MANIFEST ) . exists ( ) ) ,
468- GameId :: SkyrimSE | GameId :: Fallout4 | GameId :: Starfield => {
472+ GameId :: SkyrimSE | GameId :: Fallout4 | GameId :: Starfield | GameId :: OblivionRemastered => {
469473 game_path. join ( APPX_MANIFEST ) . exists ( )
470474 }
471475 _ => false ,
@@ -501,6 +505,7 @@ fn plugins_directory(
501505 match game_id {
502506 GameId :: OpenMW => openmw_config:: resources_vfs_path ( game_path, local_path) ,
503507 GameId :: Morrowind => Ok ( game_path. join ( "Data Files" ) ) ,
508+ GameId :: OblivionRemastered => Ok ( game_path. join ( OBLIVION_REMASTERED_RELATIVE_DATA_PATH ) ) ,
504509 _ => Ok ( game_path. join ( "Data" ) ) ,
505510 }
506511}
@@ -529,9 +534,15 @@ fn additional_plugins_directories(
529534 }
530535}
531536
532- fn load_order_path ( game_id : GameId , local_path : & Path ) -> Option < PathBuf > {
537+ fn load_order_path (
538+ game_id : GameId ,
539+ local_path : & Path ,
540+ plugins_file_path : & Path ,
541+ ) -> Option < PathBuf > {
542+ const LOADORDER_TXT : & str = "loadorder.txt" ;
533543 match game_id {
534- GameId :: Skyrim => Some ( local_path. join ( "loadorder.txt" ) ) ,
544+ GameId :: Skyrim => Some ( local_path. join ( LOADORDER_TXT ) ) ,
545+ GameId :: OblivionRemastered => plugins_file_path. parent ( ) . map ( |p| p. join ( LOADORDER_TXT ) ) ,
535546 _ => None ,
536547 }
537548}
@@ -545,6 +556,9 @@ fn plugins_file_path(
545556 GameId :: OpenMW => Ok ( local_path. join ( "openmw.cfg" ) ) ,
546557 GameId :: Morrowind => Ok ( game_path. join ( "Morrowind.ini" ) ) ,
547558 GameId :: Oblivion => oblivion_plugins_file_path ( game_path, local_path) ,
559+ GameId :: OblivionRemastered => Ok ( game_path
560+ . join ( OBLIVION_REMASTERED_RELATIVE_DATA_PATH )
561+ . join ( PLUGINS_TXT ) ) ,
548562 // Although the launchers for Fallout 3, Fallout NV and Skyrim all create plugins.txt, the
549563 // games themselves read Plugins.txt.
550564 _ => Ok ( local_path. join ( PLUGINS_TXT ) ) ,
0 commit comments