private void WhenClassTableIsLoaded() { _classTable = ClassTable.ReadClassTable(_loadedClassTablePath); }
public FileInfo FindThreeDeeCockpitFile(int vehicleACD) { if (vehicleACD == -1) { return(FindThreeDeeCockpitFileUsingOldMethod()); } var file = string.Empty; try { var exePath = _bmsRunningExecutableLocator.BMSExePath; if (exePath == null) { return(null); } exePath += Path.DirectorySeparatorChar; var bmsBaseDirectory = new DirectoryInfo(exePath).Parent.Parent.FullName + Path.DirectorySeparatorChar; var currentTheaterTdf = _currentTheaterDotTdfLoader.GetCurrentTheaterDotTdf(bmsBaseDirectory); var dataDir = Path.Combine(bmsBaseDirectory, "data"); var artDir = Path.Combine(dataDir, currentTheaterTdf != null ? currentTheaterTdf.artDir ?? "art" : "art"); var mainCkptArtFolder = Path.Combine(artDir, "ckptart"); if (!Directory.Exists(mainCkptArtFolder)) { mainCkptArtFolder = Path.Combine(dataDir, @"art\ckptart"); } var objectDir = Path.Combine(dataDir, currentTheaterTdf != null ? currentTheaterTdf.objectDir ?? @"terrdata\objects" : @"terrdata\objects"); if (!Directory.Exists(objectDir)) { objectDir = Path.Combine(dataDir, @"terrdata\objects"); } var classTable = ClassTable.ReadClassTable(Path.Combine(objectDir, "FALCON4.CT")); var vehicleDataTable = new VcdFile(Path.Combine(objectDir, "FALCON4.VCD")).VehicleDataTable; var vehicleClass = classTable.FirstOrDefault( x => x.dataType == (byte)Data_Types.DTYPE_VEHICLE && x.vuClassData.classInfo_[(int)VuClassHierarchy.VU_DOMAIN] == (byte)Classtable_Domains.DOMAIN_AIR && x.vuClassData.classInfo_[(int)VuClassHierarchy.VU_TYPE] == (byte)Classtable_Types.TYPE_AIRPLANE && x.vehicleDataIndex == vehicleACD) ; var vehicleData = vehicleDataTable[vehicleClass.dataPtr]; var vehicleName = Encoding.ASCII.GetString(vehicleData.Name).TrimAtNull().Replace("*", ""); var vehicleNCTR = Encoding.ASCII.GetString(vehicleData.NCTR).TrimAtNull().Replace("*", ""); var visType = vehicleClass.visType[0]; const string threeDeeCockpitDatFile = "3dckpit.dat"; if (visType == (short)Vis_Types.VIS_F16C) { file = Path.Combine(mainCkptArtFolder, threeDeeCockpitDatFile); } else { file = Path.Combine(mainCkptArtFolder, visType.ToString(), threeDeeCockpitDatFile); if (!FileExists(file)) { file = Path.Combine(mainCkptArtFolder, vehicleName, threeDeeCockpitDatFile); if (!FileExists(file)) { file = Path.Combine(mainCkptArtFolder, vehicleNCTR, threeDeeCockpitDatFile); if (!FileExists(file)) { file = Path.Combine(mainCkptArtFolder, threeDeeCockpitDatFile); } } } } } catch (Exception e) { _log.Error(e.Message, e); } var fi = !string.IsNullOrEmpty(file) ? new FileInfo(file) : null; return(FileExists(file) ? fi : FindThreeDeeCockpitFileUsingOldMethod()); }