@@ -29,12 +29,6 @@ Namespace FloppyDB
2929 End Get
3030 End Property
3131
32- Public ReadOnly Property RegionNameCache As Dictionary( Of String , String )
33- Get
34- Return _RegionNameCache
35- End Get
36- End Property
37-
3832 Public ReadOnly Property Languages As IReadOnlyList( Of KeyValuePair( Of String , String ))
3933 Get
4034 Return _Languages
@@ -53,6 +47,12 @@ Namespace FloppyDB
5347 End Get
5448 End Property
5549
50+ Public ReadOnly Property RegionNameCache As Dictionary( Of String , String )
51+ Get
52+ Return _RegionNameCache
53+ End Get
54+ End Property
55+
5656 Public ReadOnly Property Regions As IReadOnlyList( Of KeyValuePair( Of String , String ))
5757 Get
5858 Return _Regions
@@ -179,7 +179,7 @@ Namespace FloppyDB
179179 Public Function IsVerifiedImage(Disk As Disk) As Boolean
180180 Dim Result = TitleFind(Disk)
181181 If Result.Primary IsNot Nothing Then
182- If Result.Primary.GetStatus = FloppyDBStatus.Verified Then
182+ If Result.Primary.Status = FloppyDBStatus.Verified Then
183183 Return True
184184 End If
185185 End If
@@ -269,6 +269,7 @@ Namespace FloppyDB
269269 Public Function SortLanguageCodes(codesCsv As String ) As String
270270 Return SortCodes(codesCsv, _Languages)
271271 End Function
272+
272273 Public Function SortRegionCodes(codesCsv As String ) As String
273274 Return SortCodes(codesCsv, _Regions)
274275 End Function
@@ -303,14 +304,6 @@ Namespace FloppyDB
303304 Return Nothing
304305 End Function
305306
306- Private Shared Function GetAttr(node As Xml.XmlElement, name As String ) As String
307- If node.HasAttribute(name) Then
308- Return node.GetAttribute(name)
309- End If
310-
311- Return Nothing
312- End Function
313-
314307 Private Shared Sub ParseLookupList(XMLDoc As Xml.XmlDocument, XPath As String , Target As List( Of KeyValuePair( Of String , String )))
315308 Dim Nodes = XMLDoc.SelectNodes(XPath)
316309 If Nodes Is Nothing Then Return
@@ -436,46 +429,6 @@ Namespace FloppyDB
436429 Return Data
437430 End Function
438431
439- Private Function GetTitleData(Node As Xml.XmlElement, Parent As FloppyData) As FloppyData
440- Dim TitleData As New FloppyData With {
441- .Owner = Me ,
442- .Parent = Parent,
443- .Name = GetAttr(Node, "name" ),
444- .Variation = GetAttr(Node, "variation" ),
445- .Compilation = GetAttr(Node, "compilation" ),
446- .Year = GetAttr(Node, "year" ),
447- .Version = GetAttr(Node, "version" ),
448- .Int = GetAttr(Node, "int" ),
449- .Serial = GetAttr(Node, "serial" ),
450- .Disk = GetAttr(Node, "disk" ),
451- .Publisher = GetAttr(Node, "publisher" ),
452- .Region = GetAttr(Node, "region" ),
453- .Language = GetAttr(Node, "language" ),
454- .CopyProtection = GetAttr(Node, "cp" ),
455- .OperatingSystem = GetAttr(Node, "os" ),
456- .MobyGamesId = GetAttr(Node, "mobyGamesId" )
457- }
458-
459- If Node.HasAttribute( "media" ) Then
460- TitleData.MediaString = Node.GetAttribute( "media" )
461- TitleData.Media = FloppyDiskFormatGet(TitleData.MediaString)
462- End If
463-
464- If Node.HasAttribute( "status" ) Then
465- TitleData.Status = GetFloppyDBStatus(Node.GetAttribute( "status" ))
466- End If
467-
468- If Node.HasAttribute( "tdc" ) Then
469- TitleData.IsTDC = (Node.GetAttribute( "tdc" ) = "1" )
470- End If
471-
472- If Node.HasAttribute( "fixed" ) Then
473- TitleData.Fixed = (Node.GetAttribute( "fixed" ) = "1" )
474- End If
475-
476- Return TitleData
477- End Function
478-
479432 Private Function GetVersion(XMLDoc As Xml.XmlDocument) As String
480433 Return If (XMLDoc.SelectSingleNode( "/root/@version" )?.Value, "" )
481434 End Function
@@ -573,41 +526,33 @@ Namespace FloppyDB
573526 ParseLookupList(XMLDoc, "/root/regions/region" , _Regions)
574527 End Sub
575528
576- Private Function ParseNode(Node As Xml.XmlNode, ParentData As FloppyData) As Integer
529+ Private Function ParseNode(Node As Xml.XmlNode, Inherited As FloppyData) As Integer
577530 Dim Elem = TryCast (Node, Xml.XmlElement)
578531
579532 If Elem Is Nothing Then
580533 Return 0
581534 End If
582535
583536 Dim Count As Integer = 0
584- Dim FloppyData = GetTitleData(Elem, ParentData)
585-
586- If Elem.Name = "media" Then
587- Dim mediaDiskCount As Integer = 0
588- For Each ChildNode As Xml.XmlNode In Elem.ChildNodes
589- Dim childElem = TryCast (ChildNode, Xml.XmlElement)
590- If childElem IsNot Nothing AndAlso childElem.Name = "disk" Then
591- mediaDiskCount += 1
592- End If
593- Next
594- FloppyData.DiskCount = mediaDiskCount
537+ Dim Merged As New FloppyData( Me , Inherited, Elem)
595538
596- ElseIf Elem.Name = "disk" Then
539+ If Elem.Name = "disk" Then
597540 Dim md5 = Elem.GetAttribute( "md5" )
598541 If md5 <> "" Then
599- AddMd5Mapping(md5, FloppyData )
542+ AddMd5Mapping(md5, Merged )
600543 Count += 1
601544 End If
602545
603546 Dim md5Alt = Elem.GetAttribute( "md5_alt" )
604547 If md5Alt <> "" Then
605- AddMd5Mapping(md5Alt, FloppyData )
548+ AddMd5Mapping(md5Alt, Merged )
606549 End If
550+
551+ Return Count
607552 End If
608553
609554 For Each ChildNode As Xml.XmlNode In Elem.ChildNodes
610- Count += ParseNode(ChildNode, FloppyData )
555+ Count += ParseNode(ChildNode, Merged )
611556 Next
612557
613558 Return Count
0 commit comments