SRB2/tools/SOCEdit/frmCharacterEdit.frm
2014-03-15 13:11:35 -04:00

320 lines
10 KiB
Text

VERSION 5.00
Begin VB.Form frmCharacterEdit
Caption = "Character Edit"
ClientHeight = 3345
ClientLeft = 60
ClientTop = 345
ClientWidth = 4680
Icon = "frmCharacterEdit.frx":0000
LinkTopic = "Form1"
MaxButton = 0 'False
ScaleHeight = 3345
ScaleWidth = 4680
Begin VB.CommandButton cmdExample
Caption = "Show Me An &Example"
Height = 495
Left = 1320
Style = 1 'Graphical
TabIndex = 14
Top = 2400
Width = 975
End
Begin VB.CheckBox chkEnabled
Caption = "Enable this player selection."
Height = 495
Left = 1080
TabIndex = 13
Top = 1560
Width = 1455
End
Begin VB.CommandButton cmdDelete
Caption = "&Delete from SOC"
Height = 495
Left = 120
Style = 1 'Graphical
TabIndex = 12
Top = 2760
Width = 855
End
Begin VB.CommandButton cmdSave
Caption = "&Save"
Height = 495
Left = 120
TabIndex = 11
Top = 2160
Width = 855
End
Begin VB.TextBox txtSkinname
Height = 285
Left = 3240
TabIndex = 9
Top = 1200
Width = 1335
End
Begin VB.TextBox txtPicname
Height = 285
Left = 3240
MaxLength = 8
TabIndex = 7
Top = 840
Width = 1095
End
Begin VB.TextBox txtMenuposition
Height = 285
Left = 3240
MaxLength = 3
TabIndex = 5
Top = 480
Width = 495
End
Begin VB.TextBox txtPlayername
Height = 285
Left = 3240
MaxLength = 64
TabIndex = 3
Top = 120
Width = 1335
End
Begin VB.TextBox txtPlayertext
Height = 1455
Left = 2640
MultiLine = -1 'True
TabIndex = 1
Top = 1800
Width = 1935
End
Begin VB.ListBox lstPlayers
Height = 1815
ItemData = "frmCharacterEdit.frx":0442
Left = 120
List = "frmCharacterEdit.frx":0461
TabIndex = 0
Top = 240
Width = 855
End
Begin VB.Label lblSkinname
Caption = "Name of player (skin) to use:"
Height = 255
Left = 1080
TabIndex = 10
Top = 1200
Width = 2055
End
Begin VB.Label lblPicname
Alignment = 1 'Right Justify
Caption = "Picture to display:"
Height = 255
Left = 1560
TabIndex = 8
Top = 840
Width = 1575
End
Begin VB.Label lblMenuposition
Alignment = 1 'Right Justify
Caption = "Vertical menu position:"
Height = 255
Left = 1320
TabIndex = 6
Top = 480
Width = 1815
End
Begin VB.Label lblPlayername
Alignment = 1 'Right Justify
Caption = "Displayed name of player:"
Height = 255
Left = 1320
TabIndex = 4
Top = 120
Width = 1815
End
Begin VB.Label lblPlayertext
Caption = "Short Description:"
Height = 255
Left = 2640
TabIndex = 2
Top = 1560
Width = 1455
End
End
Attribute VB_Name = "frmCharacterEdit"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Private Sub cmdDelete_Click()
Call WriteCharacter(True)
End Sub
Private Sub cmdExample_Click()
txtPlayername.Text = "SONIC"
txtMenuposition.Text = "20"
txtPicname.Text = "SONCCHAR"
txtSkinname.Text = "SONIC"
chkEnabled.Value = 1
txtPlayertext.Text = " Fastest" & vbCrLf & " Speed Thok" & vbCrLf & " Not a good pick" & vbCrLf & "for starters, but when" & vbCrLf & "controlled properly," & vbCrLf & "Sonic is the most" & vbCrLf & "powerful of the three."
End Sub
Private Sub cmdSave_Click()
Call WriteCharacter(False)
End Sub
Private Sub ClearForm()
txtPlayername.Text = ""
txtMenuposition.Text = ""
txtPicname.Text = ""
txtSkinname.Text = ""
chkEnabled.Value = 0
txtPlayertext.Text = ""
End Sub
Private Sub ReadSOCPlayer(num 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) = "CHARACTER" And Val(word2) = num Then
Do While Len(line) > 0 And Not ts.AtEndOfStream
line = ts.ReadLine
word = UCase(FirstToken(line))
word2 = UCase(SecondTokenEqual(line))
If word = "PLAYERTEXT" Then
Dim startclip As Integer, endclip As Integer
startclip = InStr(line, "=")
startclip = startclip + 2
line = Mid(line, startclip, Len(line))
txtPlayertext.Text = line & vbCrLf
Do While InStr(line, "#") = 0 And Not ts.AtEndOfStream
line = ts.ReadLine & vbCrLf
txtPlayertext.Text = txtPlayertext.Text & line
Loop
txtPlayertext.Text = RTrimComplete(txtPlayertext.Text)
If Right(txtPlayertext.Text, 1) = "#" Then
txtPlayertext.Text = Left(txtPlayertext.Text, Len(txtPlayertext.Text) - 1)
End If
ElseIf word = "PLAYERNAME" Then
txtPlayername.Text = word2
ElseIf word = "MENUPOSITION" Then
txtMenuposition.Text = Val(word2)
ElseIf word = "PICNAME" Then
txtPicname.Text = word2
ElseIf word = "STATUS" Then
If Val(word2) = 32 Then
chkEnabled.Value = 1
Else
chkEnabled.Value = 0
End If
ElseIf word = "SKINNAME" Then
txtSkinname.Text = word2
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 lstPlayers_Click()
Call ClearForm
Call ReadSOCPlayer(lstPlayers.ListIndex)
End Sub
Private Sub WriteCharacter(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 charfound As Boolean
charfound = 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 character exists in the SOC, delete it.
If word = "CHARACTER" And Val(word2) = lstPlayers.ListIndex Then
charfound = 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 "CHARACTER " & lstPlayers.ListIndex
txtPlayername.Text = TrimComplete(txtPlayername.Text)
txtMenuposition.Text = TrimComplete(txtMenuposition.Text)
txtPicname.Text = TrimComplete(txtPicname.Text)
txtSkinname.Text = TrimComplete(txtSkinname.Text)
If txtPlayername.Text <> "" Then tsTarget.WriteLine "PLAYERNAME = " & txtPlayername.Text
If txtMenuposition.Text <> "" Then tsTarget.WriteLine "MENUPOSITION = " & Val(txtMenuposition.Text)
If txtPicname.Text <> "" Then tsTarget.WriteLine "PICNAME = " & txtPicname.Text
If txtSkinname.Text <> "" Then tsTarget.WriteLine "SKINNAME = " & txtSkinname.Text
If chkEnabled.Value = 1 Then
tsTarget.WriteLine "STATUS = 32"
Else
tsTarget.WriteLine "STATUS = 0"
End If
If txtPlayertext.Text <> "" Then tsTarget.WriteLine "PLAYERTEXT = " & txtPlayertext.Text & "#"
End If
tsTarget.Close
Set myFSOTarget = Nothing
FileCopy SOCTemp, SOCFile
Kill SOCTemp
If Remove = True Then
If charfound = True Then
MsgBox "Player choice removed from SOC."
Else
MsgBox "Player choice not found in SOC."
End If
Else
MsgBox "Character Saved."
End If
End Sub