VERSION 5.00
Begin VB.Form frmUnlockablesEdit 
   Caption         =   "Unlockables Edit"
   ClientHeight    =   3675
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   8130
   Icon            =   "frmUnlockablesEdit.frx":0000
   LinkTopic       =   "Form1"
   MaxButton       =   0   'False
   ScaleHeight     =   3675
   ScaleWidth      =   8130
   StartUpPosition =   3  'Windows Default
   Begin VB.CheckBox chkGrade 
      Caption         =   "Must have beaten Ultimate"
      Height          =   255
      Index           =   4
      Left            =   5400
      TabIndex        =   20
      Tag             =   "1024"
      Top             =   2160
      Width           =   2655
   End
   Begin VB.CheckBox chkGrade 
      Caption         =   "Must have beaten Very Hard"
      Height          =   255
      Index           =   3
      Left            =   5400
      TabIndex        =   19
      Tag             =   "128"
      Top             =   1800
      Width           =   2655
   End
   Begin VB.CheckBox chkGrade 
      Caption         =   "Must have all emblems"
      Height          =   255
      Index           =   2
      Left            =   5400
      TabIndex        =   18
      Tag             =   "16"
      Top             =   1440
      Width           =   2055
   End
   Begin VB.CheckBox chkGrade 
      Caption         =   "Must have gotten all 7 emeralds"
      Height          =   255
      Index           =   1
      Left            =   5400
      TabIndex        =   17
      Tag             =   "8"
      Top             =   1080
      Width           =   2655
   End
   Begin VB.CheckBox chkGrade 
      Caption         =   "Game must be completed"
      Height          =   255
      Index           =   0
      Left            =   5400
      TabIndex        =   16
      Tag             =   "1"
      Top             =   720
      Width           =   2175
   End
   Begin VB.TextBox txtVar 
      Height          =   285
      Left            =   4320
      TabIndex        =   14
      Top             =   2640
      Width           =   615
   End
   Begin VB.ComboBox cmbType 
      Height          =   315
      ItemData        =   "frmUnlockablesEdit.frx":0442
      Left            =   3360
      List            =   "frmUnlockablesEdit.frx":044C
      TabIndex        =   12
      Top             =   2160
      Width           =   1575
   End
   Begin VB.TextBox txtNeededTime 
      Height          =   285
      Left            =   4080
      TabIndex        =   10
      Top             =   1680
      Width           =   855
   End
   Begin VB.TextBox txtNeededEmblems 
      Height          =   285
      Left            =   4440
      TabIndex        =   9
      Top             =   1200
      Width           =   495
   End
   Begin VB.TextBox txtObjective 
      Height          =   285
      Left            =   3240
      TabIndex        =   7
      Top             =   720
      Width           =   1695
   End
   Begin VB.TextBox txtName 
      Height          =   285
      Left            =   3240
      TabIndex        =   5
      Top             =   240
      Width           =   1695
   End
   Begin VB.CommandButton cmdDelete 
      Caption         =   "&Delete from SOC"
      Height          =   375
      Left            =   3480
      TabIndex        =   3
      Top             =   3120
      Width           =   1575
   End
   Begin VB.CommandButton cmdSave 
      Caption         =   "&Save Changes"
      Height          =   375
      Left            =   1800
      TabIndex        =   2
      Top             =   3120
      Width           =   1575
   End
   Begin VB.ListBox lstUnlockables 
      Height          =   2985
      ItemData        =   "frmUnlockablesEdit.frx":046A
      Left            =   120
      List            =   "frmUnlockablesEdit.frx":049B
      TabIndex        =   0
      Top             =   480
      Width           =   1215
   End
   Begin VB.Label lblNote 
      Caption         =   "Note: All requirements are combinable."
      Height          =   495
      Left            =   6000
      TabIndex        =   22
      Top             =   2760
      Width           =   1695
   End
   Begin VB.Label lblOtherReqs 
      Caption         =   "Other Requirements:"
      Height          =   255
      Left            =   5400
      TabIndex        =   21
      Top             =   360
      Width           =   1935
   End
   Begin VB.Label lblVar 
      Alignment       =   1  'Right Justify
      Caption         =   "Map # to warp to:"
      Height          =   255
      Left            =   2880
      TabIndex        =   15
      Top             =   2640
      Width           =   1335
   End
   Begin VB.Label lblType 
      Alignment       =   1  'Right Justify
      Caption         =   "Type of Unlockable:"
      Height          =   255
      Left            =   1800
      TabIndex        =   13
      Top             =   2160
      Width           =   1455
   End
   Begin VB.Label lblNeededTime 
      Alignment       =   1  'Right Justify
      Caption         =   "Needed time on Time Attack rank (in seconds):"
      Height          =   375
      Left            =   1440
      TabIndex        =   11
      Top             =   1560
      Width           =   2535
   End
   Begin VB.Label lblNeededEmblems 
      Alignment       =   1  'Right Justify
      Caption         =   "# of Emblems Needed:"
      Height          =   255
      Left            =   2640
      TabIndex        =   8
      Top             =   1200
      Width           =   1695
   End
   Begin VB.Label lblObjective 
      Alignment       =   1  'Right Justify
      Caption         =   "Objective:"
      Height          =   255
      Left            =   2400
      TabIndex        =   6
      Top             =   720
      Width           =   735
   End
   Begin VB.Label lblName 
      Alignment       =   1  'Right Justify
      Caption         =   "Name:"
      Height          =   255
      Left            =   2640
      TabIndex        =   4
      Top             =   240
      Width           =   495
   End
   Begin VB.Label lblHUDItems 
      Caption         =   "Unlockables:"
      Height          =   255
      Left            =   120
      TabIndex        =   1
      Top             =   240
      Width           =   975
   End
End
Attribute VB_Name = "frmUnlockablesEdit"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit

Private Sub cmdDelete_Click()
    Call WriteUnlockableItem(True)
End Sub

Private Sub cmdSave_Click()
    Call WriteUnlockableItem(False)
End Sub

Private Sub Form_Load()
    Call Reload
End Sub

Private Sub Reload()
    txtName.Text = ""
    txtObjective.Text = ""
    txtNeededEmblems.Text = ""
    txtNeededTime.Text = ""
    cmbType.Text = ""
    txtVar.Text = ""
    
    Dim i As Integer
    
    For i = 0 To chkGrade.Count - 1
        chkGrade(i).Value = 0
    Next i
    
    lstUnlockables.ListIndex = 0
End Sub

Private Sub lstUnlockables_Click()
    Call ReadSOC(lstUnlockables.ListIndex + 1)
End Sub

Private Sub ReadSOC(UnlockableNum As Integer)
    Dim myFSO As New Scripting.FileSystemObject
    Dim ts As TextStream
    Dim line As String
    Dim word As String
    Dim word2 As String
    
    Set ts = myFSO.OpenTextFile(SOCFile, ForReading, False)
    
SOCLoad:
    Do While Not ts.AtEndOfStream
        line = ts.ReadLine
        
        If Left(line, 1) = "#" Then GoTo SOCLoad
        
        If Left(line, 1) = vbCrLf Then GoTo SOCLoad
        
        If Len(line) < 1 Then GoTo SOCLoad
        
        word = FirstToken(line)
        word2 = SecondToken(line)
        
        If UCase(word) = "UNLOCKABLE" And Val(word2) = UnlockableNum Then
            Do While Len(line) > 0 And Not ts.AtEndOfStream
                line = ts.ReadLine
                word = UCase(FirstToken(line))
                word2 = UCase(SecondTokenEqual(line))
                    
                If word = "NAME" Then
                    txtName.Text = word2
                ElseIf word = "OBJECTIVE" Then
                    txtObjective.Text = word2
                ElseIf word = "NEEDEDEMBLEMS" Then
                    txtNeededEmblems.Text = Val(word2)
                ElseIf word = "NEEDEDTIME" Then
                    txtNeededTime.Text = Val(word2)
                ElseIf word = "TYPE" Then
                    cmbType.ListIndex = Val(word2)
                ElseIf word = "VAR" Then
                    txtVar.Text = Val(word2)
                ElseIf word = "NEEDEDGRADE" Then
                    Dim i As Integer
                    
                    For i = 0 To chkGrade.Count - 1
                        If Val(word2) And chkGrade(i).Tag Then
                            chkGrade(i).Tag = True
                        End If
                    Next i
                ElseIf Len(line) > 0 And Left(line, 1) <> "#" Then
                    MsgBox "Error in SOC!" & vbCrLf & "Unknown line: " & line
                End If
            Loop
            Exit Do
        End If
    Loop
    
    ts.Close
    Set myFSO = Nothing
End Sub

Private Sub WriteUnlockableItem(Remove As Boolean)
    Dim myFSOSource As New Scripting.FileSystemObject
    Dim tsSource As TextStream
    Dim myFSOTarget As New Scripting.FileSystemObject
    Dim tsTarget As TextStream
    Dim line As String
    Dim word As String
    Dim word2 As String
    Dim unlockableremoved As Boolean
    
    unlockableremoved = False
    
    Set tsSource = myFSOSource.OpenTextFile(SOCFile, ForReading, False)
    Set tsTarget = myFSOTarget.OpenTextFile(SOCTemp, ForWriting, True)
    
    Do While Not tsSource.AtEndOfStream
        line = tsSource.ReadLine
        word = UCase(FirstToken(line))
        word2 = UCase(SecondToken(line))
        
        'If the current item exists in the SOC, delete it.
        If word = "UNLOCKABLE" And Val(word2) = lstUnlockables.ListIndex + 1 Then
            unlockableremoved = True
            Do While Len(TrimComplete(tsSource.ReadLine)) > 0 And Not tsSource.AtEndOfStream
            Loop
        Else
            tsTarget.WriteLine line
        End If
    Loop
    
    tsSource.Close
    Set myFSOSource = Nothing
    
    If Remove = False Then
        If line <> "" Then tsTarget.WriteLine ""
    
        tsTarget.WriteLine "UNLOCKABLE " & lstUnlockables.ListIndex + 1
        txtName.Text = TrimComplete(txtName.Text)
        txtObjective.Text = TrimComplete(txtObjective.Text)
        txtNeededEmblems.Text = TrimComplete(txtNeededEmblems.Text)
        txtNeededTime.Text = TrimComplete(txtNeededTime.Text)
        txtVar.Text = TrimComplete(txtVar.Text)
        
        If txtName.Text <> "" Then tsTarget.WriteLine "NAME = " & txtName.Text
        If txtObjective.Text <> "" Then tsTarget.WriteLine "OBJECTIVE = " & txtObjective.Text
        If txtNeededEmblems.Text <> "" Then tsTarget.WriteLine "NEEDEDEMBLEMS = " & txtNeededEmblems.Text
        If txtNeededTime.Text <> "" Then tsTarget.WriteLine "NEEDEDTIME = " & txtNeededTime.Text
        If cmbType.ListIndex <> -1 Then tsTarget.WriteLine "TYPE = " & cmbType.ListIndex
        If txtVar.Text <> "" Then tsTarget.WriteLine "VAR = " & txtVar.Text
        
        Dim writegrade As Long
        Dim i As Integer
        writegrade = 0
        
        For i = 0 To chkGrade.Count - 1
            If chkGrade(i).Value = 1 Then
                writegrade = writegrade + chkGrade(i).Tag
            End If
        Next i
        
        If writegrade > 0 Then tsTarget.WriteLine "NEEDEDGRADE = " & writegrade
    End If
    
    tsTarget.Close
    Set myFSOTarget = Nothing
    
    FileCopy SOCTemp, SOCFile
    
    Kill SOCTemp
    
    If Remove = True Then
        If unlockableremoved = True Then
            MsgBox "Unlockable deleted from SOC."
        Else
            MsgBox "Couldn't find Unlockable in SOC."
        End If
    Else
        MsgBox "Unlockable Saved."
    End If
End Sub
