public void CloseProject() { _dataTableService.Reset(); _presetSkinService.Reset(); _presetCarService.Reset(); _carPartService.Reset(); _carService.Reset(); if (_project != null) { Messenger.Default.Send(new ProjectMessage(null)); } _project = null; }
public void SaveProject() { AaronProject aaronProject = GetCurrentProject(); foreach (var item in this.GetChangedItems()) { item.Changed = false; switch (item) { case AaronCarRecord aaronCarRecord: File.WriteAllText(Path.Combine(aaronProject.CarsDirectory, aaronCarRecord.CarTypeName + ".json"), Serialization.Serialize(aaronCarRecord)); break; case AaronCarPartCollection carPartCollection: var fileName = Path.Combine(aaronProject.CarPartsDirectory, $"{carPartCollection.Name}.json"); var serialized = Serialization.Serialize(carPartCollection); File.WriteAllText(fileName, serialized); break; case AaronPresetCar aaronPresetCar: File.WriteAllText( Path.Combine(aaronProject.PresetCarsDirectory, $"{aaronPresetCar.PresetName}.xml"), PresetConverter.ConvertAaronPresetToServerXML(aaronPresetCar).DataContractSerializeObject()); break; case AaronPresetSkinRecord aaronPresetSkinRecord: File.WriteAllText( Path.Combine(aaronProject.PresetSkinsDirectory, $"{aaronPresetSkinRecord.PresetName}.json"), Serialization.Serialize(aaronPresetSkinRecord)); break; case AaronDataTable aaronDataTable: File.WriteAllText( Path.Combine(aaronProject.DataTablesDirectory, $"{aaronDataTable.Name}.json"), Serialization.Serialize(aaronDataTable)); break; } } }
public ProjectMessage(AaronProject project) { Project = project; }
public string GenerateProject(string directory) { AaronProject aaronProject = new AaronProject(); aaronProject.Version = AaronProjectVersion; aaronProject.CarsDirectory = Path.Combine(directory, "Cars"); aaronProject.CarPartsDirectory = Path.Combine(directory, "CarParts"); aaronProject.PresetCarsDirectory = Path.Combine(directory, "PresetCars"); aaronProject.PresetSkinsDirectory = Path.Combine(directory, "PresetSkins"); aaronProject.DataTablesDirectory = Path.Combine(directory, "DataTables"); aaronProject.OutputFilePath = Path.Combine(directory, "bin", "GlobalC.lzc"); aaronProject.SlotOverrideData = _carPartService.GetSlotOverrideData(); Directory.CreateDirectory(directory); Directory.CreateDirectory(aaronProject.CarsDirectory); Directory.CreateDirectory(aaronProject.CarPartsDirectory); Directory.CreateDirectory(aaronProject.PresetCarsDirectory); Directory.CreateDirectory(aaronProject.PresetSkinsDirectory); Directory.CreateDirectory(aaronProject.DataTablesDirectory); Directory.CreateDirectory(Path.Combine(directory, "bin")); var projectPath = Path.Combine(directory, "project.aproj"); File.WriteAllText(projectPath, Serialization.Serialize(aaronProject)); DebugTiming.BeginTiming("ExportCars"); foreach (var aaronCarRecord in _carService.GetCars()) { File.WriteAllText(Path.Combine(aaronProject.CarsDirectory, aaronCarRecord.CarTypeName + ".json"), Serialization.Serialize(aaronCarRecord)); } DebugTiming.EndTiming("ExportCars"); DebugTiming.BeginTiming("ExportCarParts"); { var carPartCollections = _carPartService.GetCarPartCollections(); foreach (var carPartCollection in carPartCollections) { var fileName = Path.Combine(aaronProject.CarPartsDirectory, $"{carPartCollection.Name}.json"); var serialized = Serialization.Serialize(carPartCollection); File.WriteAllText(fileName, serialized); } } DebugTiming.EndTiming("ExportCarParts"); DebugTiming.BeginTiming("ExportPresets"); foreach (var aaronPresetCar in _presetCarService.GetPresetCars()) { File.WriteAllText( Path.Combine(aaronProject.PresetCarsDirectory, $"{aaronPresetCar.PresetName}.xml"), PresetConverter.ConvertAaronPresetToServerXML(aaronPresetCar).DataContractSerializeObject()); } DebugTiming.EndTiming("ExportPresets"); DebugTiming.BeginTiming("ExportPresetSkins"); foreach (var aaronPresetSkinRecord in _presetSkinService.GetPresetSkins()) { File.WriteAllText( Path.Combine(aaronProject.PresetSkinsDirectory, $"{aaronPresetSkinRecord.PresetName}.json"), Serialization.Serialize(aaronPresetSkinRecord)); } DebugTiming.EndTiming("ExportPresetSkins"); DebugTiming.BeginTiming("ExportDataTables"); foreach (var aaronDataTable in _dataTableService.GetDataTables()) { File.WriteAllText( Path.Combine(aaronProject.DataTablesDirectory, $"{aaronDataTable.Name}.json"), Serialization.Serialize(aaronDataTable)); } DebugTiming.EndTiming("ExportDataTables"); File.WriteAllText(Path.Combine(directory, "strings.json"), Serialization.Serialize(_carPartService.GetStrings())); return(projectPath); }
public void LoadProject(string file) { CloseProject(); var project = Serialization.Deserialize <AaronProject>(File.ReadAllText(file)); project.Path = file; if (project.Version != AaronProjectVersion) { throw new Exception("Incompatible project. Please make a backup and copy your changes to a new project."); } // set slot override data _carPartService.SetSlotOverrideData(project.SlotOverrideData); DebugTiming.BeginTiming("LoadCars"); // load cars foreach (var carFilePath in Directory.GetFiles(project.CarsDirectory, "*.json")) { _carService.AddCar(Serialization.Deserialize <AaronCarRecord>(File.ReadAllText(carFilePath))); } DebugTiming.EndTiming("LoadCars"); DebugTiming.BeginTiming("LoadCarParts"); // load car part foreach (var carPartFilePath in Directory.GetFiles(project.CarPartsDirectory, "*.json")) { var aaronCarPartCollection = Serialization.Deserialize <AaronCarPartCollection>(File.ReadAllText(carPartFilePath)); _carPartService.AddCarPartCollection( aaronCarPartCollection); } DebugTiming.EndTiming("LoadCarParts"); DebugTiming.BeginTiming("LoadPresets"); // load presets foreach (var presetCarFilePath in Directory.GetFiles(project.PresetCarsDirectory, "*.xml")) { var convertServerXmlToAaronPreset = PresetConverter.ConvertServerXMLToAaronPreset( File.ReadAllText(presetCarFilePath).DataContractDeserializeObject <OwnedCarTrans>()); convertServerXmlToAaronPreset.PresetName = Path.GetFileNameWithoutExtension(presetCarFilePath); _presetCarService.AddPresetCar(convertServerXmlToAaronPreset); } DebugTiming.EndTiming("LoadPresets"); DebugTiming.BeginTiming("LoadPresetSkins"); foreach (var presetSkinFilePath in Directory.GetFiles(project.PresetSkinsDirectory, "*.json")) { _presetSkinService.AddPresetSkin( Serialization.Deserialize <AaronPresetSkinRecord>(File.ReadAllText(presetSkinFilePath))); } DebugTiming.EndTiming("LoadPresetSkins"); DebugTiming.BeginTiming("LoadDataTables"); foreach (var dataTableFilePath in Directory.GetFiles(project.DataTablesDirectory, "*.json")) { _dataTableService.AddDataTable( Serialization.Deserialize <AaronDataTable>(File.ReadAllText(dataTableFilePath))); } DebugTiming.EndTiming("LoadDataTables"); using (var namesFileStream = File.OpenRead(Path.Combine(Path.GetDirectoryName(file), "strings.json"))) { foreach (var s in Serialization.Deserialize <List <string> >( namesFileStream)) { _carPartService.AddString(s); } } _project = project; Messenger.Default.Send(new ProjectMessage(project)); }