public MountResult MountFiles(MissionSourceInfo srcInfo) { // load map file into memory MapFile mapf = new MapFile(); if (srcInfo.Map == null) { return(new MountResult(MountErrorType.MAP_UNDEFINED, Resource.Strings.MountError_MAP_UNDEFINED)); } if (!File.Exists(srcInfo.Map)) { return(new MountResult(MountErrorType.MAP_NOTFOUND, Resource.Strings.MountError_MAP_NOTFOUND.F(srcInfo.Map))); } try { mapf.ReadFromFile(srcInfo.Map); } catch (Exception ex) { return(new MountResult(MountErrorType.MAP_READ_ERROR, Resource.Strings.MountError_MAP_READ_ERROR, ex)); } // load mis file into memory MisFile misf = new MisFile(); if (srcInfo.Mis == null) { return(new MountResult(MountErrorType.MIS_UNDEFINED, Resource.Strings.MountError_MIS_UNDEFINED)); } if (!File.Exists(srcInfo.Mis)) { return(new MountResult(MountErrorType.MIS_NOTFOUND, Resource.Strings.MountError_MIS_NOTFOUND.F(srcInfo.Mis))); } try { misf.ReadFromFile(srcInfo.Mis); } catch (Exception ex) { return(new MountResult(MountErrorType.MIS_READ_ERROR, Resource.Strings.MountError_MIS_READ_ERROR, ex)); } // load (optional) rules file into memory MapRulesFile rulf = new MapRulesFile(); if (srcInfo.Rules != null) { if (!File.Exists(srcInfo.Rules)) { return(new MountResult(MountErrorType.RULES_NOTFOUND, Resource.Strings.MountError_RULES_NOTFOUND.F(srcInfo.Rules))); } try { rulf.ReadFromFile(srcInfo.Rules); } catch (Exception ex) { return(new MountResult(MountErrorType.RULES_READ_ERROR, Resource.Strings.MountError_RULES_READ_ERROR, ex)); } } // load (optional) mod file into memory if (srcInfo.Mod != null) { if (!File.Exists(srcInfo.Mod)) { return(new MountResult(MountErrorType.MOD_NOTFOUND, Resource.Strings.MountError_MOD_NOTFOUND.F(srcInfo.Mod))); } ModFile modf = new ModFile(); try { modf.ReadFromFile(srcInfo.Mod); } catch (Exception ex) { return(new MountResult(MountErrorType.MOD_READ_ERROR, Resource.Strings.MountError_MOD_READ_ERROR, ex)); } // apply mod try { Mod mod = modf.CreateMod(); mod.Apply(ref mapf, ref misf); } catch (Exception ex) { return(new MountResult(MountErrorType.MOD_ERROR, Resource.Strings.MountError_MOD_ERROR, ex)); } } // define target paths string mapPath = MAPFILE_FORMAT.F(MissionDir, RESERVED_MISSION_NAME); string misPath = MISFILE_FORMAT.F(MissionDir, RESERVED_MISSION_NAME); string rulPath = RULESFILE_FORMAT.F(MissionDir, RESERVED_MISSION_NAME); // write map try { mapf.WriteToFile(mapPath); } catch (Exception ex) { return(new MountResult(MountErrorType.MAP_WRITE_ERROR, Resource.Strings.MountError_MAP_WRITE_ERROR, ex)); } // write mis try { misf.WriteToFile(misPath); } catch (Exception ex) { return(new MountResult(MountErrorType.MIS_WRITE_ERROR, Resource.Strings.MountError_MIS_WRITE_ERROR, ex)); } // write rules, if defined if (srcInfo.Rules != null) { try { rulf.WriteToFile(rulPath); } catch (Exception ex) { return(new MountResult(MountErrorType.RULES_WRITE_ERROR, Resource.Strings.MountError_RULES_WRITE_ERROR, ex)); } } return(new MountResult(MountErrorType.SUCCESS)); }