507 lines
13 KiB
VB.net
507 lines
13 KiB
VB.net
Imports System.Text.RegularExpressions
|
|
Imports System.Xml.Serialization
|
|
|
|
<Serializable()>
|
|
Public Class clsGame
|
|
Private sGameID As String = Guid.NewGuid.ToString
|
|
Private sGameName As String = String.Empty
|
|
Private sProcessName As String = String.Empty
|
|
Private sParameter As String = String.Empty
|
|
Private sPath As String = String.Empty
|
|
Private bAbsolutePath As Boolean = False
|
|
Private bFolderSave As Boolean = False
|
|
Private sFileType As String = String.Empty
|
|
Private bAppendTimeStamp As Boolean = False
|
|
Private iBackupLimit As Integer = 0
|
|
Private bCleanFolder As Boolean = False
|
|
Private sExcludeList As String = String.Empty
|
|
Private sProcessPath As String = String.Empty
|
|
Private sIcon As String = String.Empty
|
|
Private dHours As Double = 0
|
|
Private sVersion As String = String.Empty
|
|
Private sCompany As String = String.Empty
|
|
Private bEnabled As Boolean = True
|
|
Private bMonitorOnly As Boolean = False
|
|
Private sComments As String = String.Empty
|
|
Private bIsRegEx As Boolean = False
|
|
Private bRecurseSubFolders As Boolean = True
|
|
Private iOS As eOS = mgrCommon.GetCurrentOS()
|
|
Private oImportTags As New List(Of Tag)
|
|
Private bImportUpdate As Boolean = False
|
|
Private oCompiledRegEx As Regex
|
|
|
|
<Flags()> Public Enum eOptionalSyncFields
|
|
None = 0
|
|
GamePath = 1
|
|
Company = 2
|
|
Version = 4
|
|
Icon = 16
|
|
Unused = 32 'Do not remove to maintain compatability, re-use for a future field.
|
|
MonitorGame = 64
|
|
End Enum
|
|
|
|
Public Enum eOS
|
|
<XmlEnum("1")>
|
|
Windows = 1
|
|
<XmlEnum("2")>
|
|
Linux = 2
|
|
End Enum
|
|
|
|
Property ID As String
|
|
Set(value As String)
|
|
If Not value Is Nothing Then
|
|
sGameID = mgrPath.ValidateFileNameForOS(value)
|
|
End If
|
|
End Set
|
|
Get
|
|
Return sGameID
|
|
End Get
|
|
End Property
|
|
|
|
ReadOnly Property CroppedName As String
|
|
Get
|
|
If Name.Length > 40 Then
|
|
Return sGameName.Substring(0, 41).Trim & "..."
|
|
Else
|
|
Return sGameName
|
|
End If
|
|
End Get
|
|
End Property
|
|
|
|
ReadOnly Property FileSafeName As String
|
|
Get
|
|
Return mgrPath.ValidateFileNameForOS(sGameName)
|
|
End Get
|
|
End Property
|
|
|
|
Property Name As String
|
|
Set(value As String)
|
|
sGameName = value
|
|
End Set
|
|
Get
|
|
Return sGameName
|
|
End Get
|
|
End Property
|
|
|
|
Property ProcessName As String
|
|
Set(value As String)
|
|
sProcessName = value
|
|
End Set
|
|
Get
|
|
Return sProcessName
|
|
End Get
|
|
End Property
|
|
|
|
Property Parameter As String
|
|
Set(value As String)
|
|
sParameter = value
|
|
End Set
|
|
Get
|
|
Return sParameter
|
|
End Get
|
|
End Property
|
|
|
|
Property Path As String
|
|
Set(value As String)
|
|
sPath = mgrPath.ReverseSpecialPaths(value)
|
|
End Set
|
|
Get
|
|
Return mgrPath.ReplaceSpecialPaths(sPath)
|
|
End Get
|
|
End Property
|
|
|
|
Property AbsolutePath As Boolean
|
|
Set(value As Boolean)
|
|
bAbsolutePath = value
|
|
End Set
|
|
Get
|
|
'This makes sure a registry key path isn't seen as a relative path.
|
|
If mgrPath.IsSupportedRegistryPath(TruePath) Then
|
|
Return True
|
|
Else
|
|
Return bAbsolutePath
|
|
End If
|
|
End Get
|
|
End Property
|
|
|
|
Property FolderSave As Boolean
|
|
Set(value As Boolean)
|
|
bFolderSave = value
|
|
End Set
|
|
Get
|
|
Return bFolderSave
|
|
End Get
|
|
End Property
|
|
|
|
Property FileType As String
|
|
Set(value As String)
|
|
sFileType = value
|
|
End Set
|
|
Get
|
|
Return sFileType
|
|
End Get
|
|
End Property
|
|
|
|
Property AppendTimeStamp As Boolean
|
|
Get
|
|
Return bAppendTimeStamp
|
|
End Get
|
|
Set(value As Boolean)
|
|
bAppendTimeStamp = value
|
|
End Set
|
|
End Property
|
|
|
|
Property BackupLimit As Integer
|
|
Get
|
|
Return iBackupLimit
|
|
End Get
|
|
Set(value As Integer)
|
|
iBackupLimit = value
|
|
End Set
|
|
End Property
|
|
|
|
Property CleanFolder As Boolean
|
|
Get
|
|
Return bCleanFolder
|
|
End Get
|
|
Set(value As Boolean)
|
|
bCleanFolder = value
|
|
End Set
|
|
End Property
|
|
|
|
Property ExcludeList As String
|
|
Set(value As String)
|
|
sExcludeList = value
|
|
End Set
|
|
Get
|
|
Return sExcludeList
|
|
End Get
|
|
End Property
|
|
|
|
Property ProcessPath As String
|
|
Set(value As String)
|
|
sProcessPath = value
|
|
End Set
|
|
Get
|
|
Return sProcessPath
|
|
End Get
|
|
End Property
|
|
|
|
Property Icon As String
|
|
Get
|
|
Return sIcon
|
|
End Get
|
|
Set(value As String)
|
|
sIcon = value
|
|
End Set
|
|
End Property
|
|
|
|
Property Hours As Double
|
|
Get
|
|
Return dHours
|
|
End Get
|
|
Set(value As Double)
|
|
dHours = value
|
|
End Set
|
|
End Property
|
|
|
|
Property Version As String
|
|
Get
|
|
Return sVersion
|
|
End Get
|
|
Set(value As String)
|
|
sVersion = value
|
|
End Set
|
|
End Property
|
|
|
|
Property Company As String
|
|
Get
|
|
Return sCompany
|
|
End Get
|
|
Set(value As String)
|
|
sCompany = value
|
|
End Set
|
|
End Property
|
|
|
|
Property Enabled As Boolean
|
|
Get
|
|
Return bEnabled
|
|
End Get
|
|
Set(value As Boolean)
|
|
bEnabled = value
|
|
End Set
|
|
End Property
|
|
|
|
Property MonitorOnly As Boolean
|
|
Get
|
|
Return bMonitorOnly
|
|
End Get
|
|
Set(value As Boolean)
|
|
bMonitorOnly = value
|
|
End Set
|
|
End Property
|
|
|
|
Property Comments As String
|
|
Get
|
|
Return sComments
|
|
End Get
|
|
Set(value As String)
|
|
sComments = value
|
|
End Set
|
|
End Property
|
|
|
|
Property IsRegEx As Boolean
|
|
Get
|
|
Return bIsRegEx
|
|
End Get
|
|
Set(value As Boolean)
|
|
bIsRegEx = value
|
|
End Set
|
|
End Property
|
|
|
|
Property RecurseSubFolders As Boolean
|
|
Get
|
|
Return bRecurseSubFolders
|
|
End Get
|
|
Set(value As Boolean)
|
|
bRecurseSubFolders = value
|
|
End Set
|
|
End Property
|
|
|
|
Property OS As eOS
|
|
Get
|
|
Return iOS
|
|
End Get
|
|
Set(value As eOS)
|
|
iOS = value
|
|
End Set
|
|
End Property
|
|
|
|
Property TruePath As String
|
|
Set(value As String)
|
|
sPath = value
|
|
End Set
|
|
Get
|
|
Return sPath
|
|
End Get
|
|
End Property
|
|
|
|
Property ImportTags As List(Of Tag)
|
|
Get
|
|
Return oImportTags
|
|
End Get
|
|
Set(value As List(Of Tag))
|
|
oImportTags = value
|
|
End Set
|
|
End Property
|
|
|
|
Property ImportUpdate As Boolean
|
|
Get
|
|
Return bImportUpdate
|
|
End Get
|
|
Set(value As Boolean)
|
|
bImportUpdate = value
|
|
End Set
|
|
End Property
|
|
|
|
Property CompiledRegEx As Regex
|
|
Get
|
|
Return oCompiledRegEx
|
|
End Get
|
|
Set(value As Regex)
|
|
oCompiledRegEx = value
|
|
End Set
|
|
End Property
|
|
|
|
ReadOnly Property IncludeArray As String()
|
|
Get
|
|
If FileType = String.Empty Then
|
|
Return New String() {}
|
|
Else
|
|
Return FileType.Split(":")
|
|
End If
|
|
End Get
|
|
End Property
|
|
|
|
ReadOnly Property ExcludeArray As String()
|
|
Get
|
|
If ExcludeList = String.Empty Then
|
|
Return New String() {}
|
|
Else
|
|
Return ExcludeList.Split(":")
|
|
End If
|
|
End Get
|
|
End Property
|
|
|
|
Public Function SyncEquals(obj As Object, eSyncFields As eOptionalSyncFields) As Boolean
|
|
Dim oGame As clsGame = TryCast(obj, clsGame)
|
|
If oGame Is Nothing Then
|
|
Return False
|
|
Else
|
|
'Core Sync Fields
|
|
If ID <> oGame.ID Then
|
|
Return False
|
|
End If
|
|
If Name <> oGame.Name Then
|
|
Return False
|
|
End If
|
|
If ProcessName <> oGame.ProcessName Then
|
|
Return False
|
|
End If
|
|
If Parameter <> oGame.Parameter Then
|
|
Return False
|
|
End If
|
|
If Path <> oGame.Path Then
|
|
Return False
|
|
End If
|
|
If FileType <> oGame.FileType Then
|
|
Return False
|
|
End If
|
|
If ExcludeList <> oGame.ExcludeList Then
|
|
Return False
|
|
End If
|
|
If AbsolutePath <> oGame.AbsolutePath Then
|
|
Return False
|
|
End If
|
|
If FolderSave <> oGame.FolderSave Then
|
|
Return False
|
|
End If
|
|
If AppendTimeStamp <> oGame.AppendTimeStamp Then
|
|
Return False
|
|
End If
|
|
If BackupLimit <> oGame.BackupLimit Then
|
|
Return False
|
|
End If
|
|
If CleanFolder <> oGame.CleanFolder Then
|
|
Return False
|
|
End If
|
|
If Hours <> oGame.Hours Then
|
|
Return False
|
|
End If
|
|
If MonitorOnly <> oGame.MonitorOnly Then
|
|
Return False
|
|
End If
|
|
If Comments <> oGame.Comments Then
|
|
Return False
|
|
End If
|
|
If IsRegEx <> oGame.IsRegEx Then
|
|
Return False
|
|
End If
|
|
If RecurseSubFolders <> oGame.RecurseSubFolders Then
|
|
Return False
|
|
End If
|
|
If OS <> oGame.OS Then
|
|
Return False
|
|
End If
|
|
|
|
'Optional Sync Fields
|
|
If (eSyncFields And eOptionalSyncFields.Company) = eOptionalSyncFields.Company Then
|
|
If Company <> oGame.Company Then
|
|
Return False
|
|
End If
|
|
End If
|
|
If (eSyncFields And eOptionalSyncFields.GamePath) = eOptionalSyncFields.GamePath Then
|
|
If ProcessPath <> oGame.ProcessPath Then
|
|
Return False
|
|
End If
|
|
End If
|
|
If (eSyncFields And eOptionalSyncFields.Icon) = eOptionalSyncFields.Icon Then
|
|
If Icon <> oGame.Icon Then
|
|
Return False
|
|
End If
|
|
End If
|
|
If (eSyncFields And eOptionalSyncFields.MonitorGame) = eOptionalSyncFields.MonitorGame Then
|
|
If Enabled <> oGame.Enabled Then
|
|
Return False
|
|
End If
|
|
End If
|
|
If (eSyncFields And eOptionalSyncFields.Version) = eOptionalSyncFields.Version Then
|
|
If Version <> oGame.Version Then
|
|
Return False
|
|
End If
|
|
End If
|
|
Return True
|
|
End If
|
|
End Function
|
|
|
|
Public Function CoreEquals(obj As Object) As Boolean
|
|
Dim oGame As clsGame = TryCast(obj, clsGame)
|
|
If oGame Is Nothing Then
|
|
Return False
|
|
Else
|
|
'Core Fields
|
|
If ID <> oGame.ID Then
|
|
Return False
|
|
End If
|
|
If Name <> oGame.Name Then
|
|
Return False
|
|
End If
|
|
If ProcessName <> oGame.ProcessName Then
|
|
Return False
|
|
End If
|
|
If Parameter <> oGame.Parameter Then
|
|
Return False
|
|
End If
|
|
If Path <> oGame.Path Then
|
|
Return False
|
|
End If
|
|
If FileType <> oGame.FileType Then
|
|
Return False
|
|
End If
|
|
If ExcludeList <> oGame.ExcludeList Then
|
|
Return False
|
|
End If
|
|
If AbsolutePath <> oGame.AbsolutePath Then
|
|
Return False
|
|
End If
|
|
If FolderSave <> oGame.FolderSave Then
|
|
Return False
|
|
End If
|
|
If AppendTimeStamp <> oGame.AppendTimeStamp Then
|
|
Return False
|
|
End If
|
|
If MonitorOnly <> oGame.MonitorOnly Then
|
|
Return False
|
|
End If
|
|
If Comments <> oGame.Comments Then
|
|
Return False
|
|
End If
|
|
If IsRegEx <> oGame.IsRegEx Then
|
|
Return False
|
|
End If
|
|
If RecurseSubFolders <> oGame.RecurseSubFolders Then
|
|
Return False
|
|
End If
|
|
If OS <> oGame.OS Then
|
|
Return False
|
|
End If
|
|
Return True
|
|
End If
|
|
End Function
|
|
|
|
Public Function MinimalEquals(obj As Object) As Boolean
|
|
Dim oGame As clsGame = TryCast(obj, clsGame)
|
|
If oGame Is Nothing Then
|
|
Return False
|
|
Else
|
|
If ID <> oGame.ID Then
|
|
Return False
|
|
End If
|
|
Return True
|
|
End If
|
|
End Function
|
|
|
|
Public Function ShallowCopy() As clsGame
|
|
Return DirectCast(Me.MemberwiseClone(), clsGame)
|
|
End Function
|
|
|
|
Public Shared Function SetSyncField(ByVal eSyncFields As eOptionalSyncFields, ByVal eSyncField As eOptionalSyncFields) As eOptionalSyncFields
|
|
Return eSyncFields Or eSyncField
|
|
End Function
|
|
|
|
Public Shared Function RemoveSyncField(ByVal eSyncFields As eOptionalSyncFields, ByVal eSyncField As eOptionalSyncFields) As eOptionalSyncFields
|
|
Return eSyncFields And (Not eSyncField)
|
|
End Function
|
|
|
|
End Class
|