VERSION 5.00 Begin VB.Form frmMaincfg Caption = "Global Game Settings" ClientHeight = 5295 ClientLeft = 60 ClientTop = 345 ClientWidth = 9360 Icon = "frmMaincfg.frx":0000 LinkTopic = "Form1" MaxButton = 0 'False ScaleHeight = 5295 ScaleWidth = 9360 StartUpPosition = 3 'Windows Default Begin VB.Frame frmReset Caption = "Reset Data (Be sure this is at the TOP of your SOC)" Height = 975 Left = 4800 TabIndex = 43 Top = 4200 Width = 4455 Begin VB.CheckBox chkReset Caption = "Thing Properties" Height = 255 Index = 2 Left = 1680 TabIndex = 46 Tag = "4" Top = 240 Width = 1575 End Begin VB.CheckBox chkReset Caption = "States" Height = 255 Index = 1 Left = 240 TabIndex = 45 Tag = "2" Top = 600 Width = 1335 End Begin VB.CheckBox chkReset Caption = "Sprite Names" Height = 255 Index = 0 Left = 240 TabIndex = 44 Tag = "1" Top = 240 Width = 1575 End End Begin VB.CheckBox chkDisableSpeedAdjust Caption = "Disable speed adjustment of player animations depending on how fast they are moving." Height = 375 Left = 1080 TabIndex = 42 Top = 4200 Width = 3615 End Begin VB.TextBox txtTitleScrollSpeed Height = 285 Left = 4080 TabIndex = 41 Top = 1920 Width = 495 End Begin VB.CheckBox chkLoopTitle Caption = "Loop the title screen music?" Height = 195 Left = 1080 TabIndex = 39 Top = 3840 Width = 2415 End Begin VB.TextBox txtCreditsCutscene Height = 285 Left = 4080 TabIndex = 37 Top = 1560 Width = 495 End Begin VB.CommandButton cmdSave Caption = "&Save" Height = 495 Left = 120 TabIndex = 36 Top = 3120 Width = 735 End Begin VB.CommandButton cmdReload Caption = "&Reload" Height = 495 Left = 120 TabIndex = 35 Top = 2520 Width = 735 End Begin VB.TextBox txtNumemblems Height = 285 Left = 4080 MaxLength = 2 TabIndex = 33 Top = 3360 Width = 495 End Begin VB.TextBox txtGamedata Height = 285 Left = 3240 MaxLength = 64 TabIndex = 31 Top = 2880 Width = 1335 End Begin VB.TextBox txtExeccfg Height = 285 Left = 3240 TabIndex = 9 Top = 2400 Width = 1335 End Begin VB.Frame frmTimers Caption = "Timers (35 = 1 second)" Height = 3975 Left = 4800 TabIndex = 8 Top = 120 Width = 4455 Begin VB.TextBox txtGameovertics Height = 285 Left = 3000 TabIndex = 29 Top = 3480 Width = 1335 End Begin VB.TextBox txtHelpertics Height = 285 Left = 3000 TabIndex = 27 Top = 3120 Width = 1335 End Begin VB.TextBox txtParalooptics Height = 285 Left = 3000 TabIndex = 25 Top = 2760 Width = 1335 End Begin VB.TextBox txtExtralifetics Height = 285 Left = 3000 TabIndex = 23 Top = 2400 Width = 1335 End Begin VB.TextBox txtSpacetimetics Height = 285 Left = 3000 TabIndex = 21 Top = 2040 Width = 1335 End Begin VB.TextBox txtUnderwatertics Height = 285 Left = 3000 TabIndex = 19 Top = 1680 Width = 1335 End Begin VB.TextBox txtTailsflytics Height = 285 Left = 3000 TabIndex = 17 Top = 1320 Width = 1335 End Begin VB.TextBox txtFlashingtics Height = 285 Left = 3000 TabIndex = 15 Top = 960 Width = 1335 End Begin VB.TextBox txtSneakertics Height = 285 Left = 3000 TabIndex = 13 Top = 600 Width = 1335 End Begin VB.TextBox txtInvulntics Height = 285 Left = 3000 TabIndex = 11 Top = 240 Width = 1335 End Begin VB.Label lblGameovertics Alignment = 1 'Right Justify Caption = "Game Over Screen Time:" Height = 255 Left = 960 TabIndex = 30 Top = 3480 Width = 1935 End Begin VB.Label lblHelpertics Alignment = 1 'Right Justify Caption = "NiGHTS Nightopian Helper Time:" Height = 255 Left = 240 TabIndex = 28 Top = 3120 Width = 2655 End Begin VB.Label lblParalooptics Alignment = 1 'Right Justify Caption = "NiGHTS Paraloop Powerup Time:" Height = 255 Left = 360 TabIndex = 26 Top = 2760 Width = 2535 End Begin VB.Label lblExtralifetics Alignment = 1 'Right Justify Caption = "Extra Life Music Duration:" Height = 255 Left = 960 TabIndex = 24 Top = 2400 Width = 1935 End Begin VB.Label lblSpacetimetics Alignment = 1 'Right Justify Caption = "Space Breath Timeout:" Height = 255 Left = 1200 TabIndex = 22 Top = 2040 Width = 1695 End Begin VB.Label lblUnderwatertics Alignment = 1 'Right Justify Caption = "Underwater Breath Timeout:" Height = 255 Left = 840 TabIndex = 20 Top = 1680 Width = 2055 End Begin VB.Label lblTailsflytics Alignment = 1 'Right Justify Caption = "Tails Flying Time:" Height = 255 Left = 1440 TabIndex = 18 Top = 1320 Width = 1455 End Begin VB.Label lblFlashingtics Alignment = 1 'Right Justify Caption = "Flashing Time After Being Hit:" Height = 255 Left = 360 TabIndex = 16 Top = 960 Width = 2535 End Begin VB.Label lblSneakertics Alignment = 1 'Right Justify Caption = "Super Sneakers Time:" Height = 255 Left = 240 TabIndex = 14 Top = 600 Width = 2655 End Begin VB.Label lblInvulntics Alignment = 1 'Right Justify Caption = "Invincibility Time:" Height = 255 Left = 360 TabIndex = 12 Top = 240 Width = 2535 End End Begin VB.TextBox txtIntrotoplay Height = 285 Left = 4080 TabIndex = 6 Top = 1200 Width = 495 End Begin VB.TextBox txtRacestage_start Height = 285 Left = 4080 MaxLength = 4 TabIndex = 4 Top = 840 Width = 495 End Begin VB.TextBox txtSpstage_start Height = 285 Left = 4080 MaxLength = 4 TabIndex = 2 Top = 480 Width = 495 End Begin VB.TextBox txtSstage_start Height = 285 Left = 4080 MaxLength = 4 TabIndex = 0 Top = 120 Width = 495 End Begin VB.Label lblTitleScrollSpeed Alignment = 1 'Right Justify Caption = "Scroll speed of title background:" Height = 255 Left = 1560 TabIndex = 40 Top = 1920 Width = 2415 End Begin VB.Label lblCreditsCutscene Alignment = 1 'Right Justify Caption = "Cutscene # to replace credits with:" Height = 255 Left = 1080 TabIndex = 38 Top = 1560 Width = 2895 End Begin VB.Label lblNumemblems Alignment = 1 'Right Justify Caption = "# of LEVEL Emblems (Gamedata field must also be filled out):" Height = 375 Left = 1440 TabIndex = 34 Top = 3240 Width = 2535 End Begin VB.Label lblGamedata Alignment = 1 'Right Justify Caption = "Gamedata file (to save mod emblems and time data):" Height = 375 Left = 960 TabIndex = 32 Top = 2760 Width = 2175 End Begin VB.Label lblExeccfg Alignment = 1 'Right Justify Caption = "CFG file to instantly execute upon loading this SOC:" Height = 495 Left = 960 TabIndex = 10 Top = 2280 Width = 2175 End Begin VB.Label lblIntrotoplay Alignment = 1 'Right Justify Caption = "Cutscene # to use for introduction:" Height = 255 Left = 1440 TabIndex = 7 Top = 1200 Width = 2535 End Begin VB.Label lblRacestage_start Alignment = 1 'Right Justify Caption = "Racing mode starts/loops back to this map #:" Height = 255 Left = 720 TabIndex = 5 Top = 840 Width = 3255 End Begin VB.Label lblSpstage_start Alignment = 1 'Right Justify Caption = "Single Player Game Starts on this map #:" Height = 255 Left = 1080 TabIndex = 3 Top = 480 Width = 2895 End Begin VB.Label lblSstage_start Alignment = 1 'Right Justify Caption = "First Special Stage Map #:" Height = 255 Left = 2040 TabIndex = 1 Top = 120 Width = 1935 End End Attribute VB_Name = "frmMaincfg" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Private Sub cmdReload_Click() Call Reload End Sub Private Sub cmdSave_Click() Call WriteSettings End Sub Private Sub Form_Load() Call Reload End Sub Private Sub ClearForm() Dim i As Integer txtSstage_start.Text = "" txtSpstage_start.Text = "" txtRacestage_start.Text = "" txtIntrotoplay.Text = "" txtExeccfg.Text = "" txtGamedata.Text = "" txtNumemblems.Text = "" txtInvulntics.Text = "" txtSneakertics.Text = "" txtFlashingtics.Text = "" txtTailsflytics.Text = "" txtUnderwatertics.Text = "" txtSpacetimetics.Text = "" txtExtralifetics.Text = "" txtParalooptics.Text = "" txtHelpertics.Text = "" txtGameovertics.Text = "" txtCreditsCutscene.Text = "" txtTitleScrollSpeed.Text = "" chkLoopTitle.Value = 0 chkDisableSpeedAdjust.Value = 0 For i = 0 To 2 chkReset(i).Value = 0 Next i End Sub Private Sub Reload() Call ClearForm Call ReadSOCMaincfg End Sub Private Sub ReadSOCMaincfg() 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) = "MAINCFG" Then Do While Len(line) > 0 And Not ts.AtEndOfStream line = ts.ReadLine word = UCase(FirstToken(line)) word2 = UCase(SecondTokenEqual(line)) If word = "SSTAGE_START" Then txtSstage_start.Text = Val(word2) ElseIf word = "SPSTAGE_START" Then txtSpstage_start.Text = Val(word2) ElseIf word = "RACESTAGE_START" Then txtRacestage_start.Text = Val(word2) ElseIf word = "INVULNTICS" Then txtInvulntics.Text = Val(word2) ElseIf word = "SNEAKERTICS" Then txtSneakertics.Text = Val(word2) ElseIf word = "FLASHINGTICS" Then txtFlashingtics.Text = Val(word2) ElseIf word = "TAILSFLYTICS" Then txtTailsflytics.Text = Val(word2) ElseIf word = "UNDERWATERTICS" Then txtUnderwatertics.Text = Val(word2) ElseIf word = "SPACETIMETICS" Then txtSpacetimetics.Text = Val(word2) ElseIf word = "EXTRALIFETICS" Then txtExtralifetics.Text = Val(word2) ElseIf word = "PARALOOPTICS" Then txtParalooptics.Text = Val(word2) ElseIf word = "HELPERTICS" Then txtHelpertics.Text = Val(word2) ElseIf word = "GAMEOVERTICS" Then txtGameovertics.Text = Val(word2) ElseIf word = "INTROTOPLAY" Then txtIntrotoplay.Text = Val(word2) ElseIf word = "CREDITSCUTSCENE" Then txtCreditsCutscene.Text = Val(word2) ElseIf word = "TITLESCROLLSPEED" Then txtTitleScrollSpeed.Text = Val(word2) ElseIf word = "LOOPTITLE" Then chkLoopTitle.Value = Val(word2) ElseIf word = "DISABLESPEEDADJUST" Then chkDisableSpeedAdjust.Value = Val(word2) ElseIf word = "GAMEDATA" Then txtGamedata.Text = word2 ElseIf word = "NUMEMBLEMS" Then txtNumemblems.Text = Val(word2) ElseIf word = "RESETDATA" Then Dim resetflags As Integer Dim z As Integer resetflags = Val(word2) For z = 0 To 2 If resetflags And chkReset(z).Tag Then chkReset(z).Value = 1 Else chkReset(z).Value = 0 End If Next z 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 WriteSettings() 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 flags As Long Dim i As Integer 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 category exists in the SOC, delete it. If word = "MAINCFG" Then 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 line <> "" Then tsTarget.WriteLine "" tsTarget.WriteLine "MAINCFG CATEGORY" txtSstage_start.Text = TrimComplete(txtSstage_start.Text) txtSpstage_start.Text = TrimComplete(txtSpstage_start.Text) txtRacestage_start.Text = TrimComplete(txtRacestage_start.Text) txtIntrotoplay.Text = TrimComplete(txtIntrotoplay.Text) txtCreditsCutscene.Text = TrimComplete(txtCreditsCutscene.Text) txtExeccfg.Text = TrimComplete(txtExeccfg.Text) txtGamedata.Text = TrimComplete(txtGamedata.Text) txtNumemblems.Text = TrimComplete(txtNumemblems.Text) txtInvulntics.Text = TrimComplete(txtInvulntics.Text) txtSneakertics.Text = TrimComplete(txtSneakertics.Text) txtFlashingtics.Text = TrimComplete(txtFlashingtics.Text) txtTailsflytics.Text = TrimComplete(txtTailsflytics.Text) txtUnderwatertics.Text = TrimComplete(txtUnderwatertics.Text) txtSpacetimetics.Text = TrimComplete(txtSpacetimetics.Text) txtExtralifetics.Text = TrimComplete(txtExtralifetics.Text) txtParalooptics.Text = TrimComplete(txtParalooptics.Text) txtHelpertics.Text = TrimComplete(txtHelpertics.Text) txtGameovertics.Text = TrimComplete(txtGameovertics.Text) txtTitleScrollSpeed.Text = TrimComplete(txtTitleScrollSpeed.Text) If txtSstage_start.Text <> "" Then tsTarget.WriteLine "SSTAGE_START = " & Val(txtSstage_start.Text) If txtSpstage_start.Text <> "" Then tsTarget.WriteLine "SPSTAGE_START = " & Val(txtSpstage_start.Text) If txtRacestage_start.Text <> "" Then tsTarget.WriteLine "RACESTAGE_START = " & Val(txtRacestage_start.Text) If txtIntrotoplay.Text <> "" Then tsTarget.WriteLine "INTROTOPLAY = " & Val(txtIntrotoplay.Text) If txtCreditsCutscene.Text <> "" Then tsTarget.WriteLine "CREDITSCUTSCENE = " & Val(txtCreditsCutscene.Text) If txtExeccfg.Text <> "" Then tsTarget.WriteLine "EXECCFG = " & txtExeccfg.Text If txtGamedata.Text <> "" Then tsTarget.WriteLine "GAMEDATA = " & txtGamedata.Text If txtNumemblems.Text <> "" Then tsTarget.WriteLine "NUMEMBLEMS = " & Val(txtNumemblems.Text) EditedNumemblems = True End If If txtInvulntics.Text <> "" Then tsTarget.WriteLine "INVULNTICS = " & Val(txtInvulntics.Text) If txtSneakertics.Text <> "" Then tsTarget.WriteLine "SNEAKERTICS = " & Val(txtSneakertics.Text) If txtFlashingtics.Text <> "" Then tsTarget.WriteLine "FLASHINGTICS = " & Val(txtFlashingtics.Text) If txtTailsflytics.Text <> "" Then tsTarget.WriteLine "TAILSFLYTICS = " & Val(txtTailsflytics.Text) If txtUnderwatertics.Text <> "" Then tsTarget.WriteLine "UNDERWATERTICS = " & Val(txtUnderwatertics.Text) If txtSpacetimetics.Text <> "" Then tsTarget.WriteLine "SPACETIMETICS = " & Val(txtSpacetimetics.Text) If txtExtralifetics.Text <> "" Then tsTarget.WriteLine "EXTRALIFETICS = " & Val(txtExtralifetics.Text) If txtParalooptics.Text <> "" Then tsTarget.WriteLine "PARALOOPTICS = " & Val(txtParalooptics.Text) If txtHelpertics.Text <> "" Then tsTarget.WriteLine "HELPERTICS = " & Val(txtHelpertics.Text) If txtGameovertics.Text <> "" Then tsTarget.WriteLine "GAMEOVERTICS = " & Val(txtGameovertics.Text) If txtTitleScrollSpeed.Text <> "" Then tsTarget.WriteLine "TITLESCROLLSPEED = " & Val(txtTitleScrollSpeed.Text) If chkLoopTitle.Value = 1 Then tsTarget.WriteLine "LOOPTITLE = " & chkLoopTitle.Value If chkDisableSpeedAdjust.Value = 1 Then tsTarget.WriteLine "DISABLESPEEDADJUST = " & chkDisableSpeedAdjust.Value flags = 0 For i = 0 To 2 If chkReset(i).Value = 1 Then flags = flags + Val(chkReset(i).Tag) End If Next If flags > 0 Then tsTarget.WriteLine "RESETDATA = " & flags tsTarget.Close Set myFSOTarget = Nothing FileCopy SOCTemp, SOCFile Kill SOCTemp MsgBox "Settings Saved." End Sub