/// <summary> /// Constructs by custom system data ([System_0] - [System_9]). /// </summary> /// <param name="data">Data of .ini section</param> public PinballXSystem(KeyDataCollection data) : this(Locator.Current) { var systemType = data["SystemType"]; if ("0".Equals(systemType)) { Type = Platform.Custom; } else if ("1".Equals(systemType)) { Type = Platform.VP; } else if ("2".Equals(systemType)) { Type = Platform.FP; } Name = data["Name"]; SetByData(data); _mapping = new SystemMapping(MappingPath, _marshallManager); }
public void MarshallMappings(SystemMapping data, string dataFile) { // don't do anything for non-existent folder var dbFolder = Path.GetDirectoryName(dataFile); if (dbFolder != null && dataFile != null && !Directory.Exists(dbFolder)) { _logger.Warn("Directory {0} does not exist, not writing vpdb.json.", dbFolder); return; } try { using (var sw = new StreamWriter(dataFile)) using (JsonWriter writer = new JsonTextWriter(sw)) { _serializer.Serialize(writer, data); } _logger.Debug("Wrote vpdb.json back to {0}", dataFile); } catch (Exception e) { _logger.Error(e, "Error writing vpdb.json to {0}", dataFile); _crashManager.Report(e, "json"); } }
/// <summary> /// Constructs by default system data ([VisualPinball], [FuturePinball]). /// </summary> /// <param name="type">System type</param> /// <param name="data">Data of .ini section</param> public PinballXSystem(Platform type, KeyDataCollection data) : this(Locator.Current) { Type = type; switch (type) { case Platform.VP: Name = "Visual Pinball"; break; case Platform.FP: Name = "Future Pinball"; break; case Platform.Custom: Name = "Custom"; break; default: throw new ArgumentOutOfRangeException(nameof(type), type, null); } SetByData(data); _mapping = new SystemMapping(MappingPath, _marshallManager); }