shiftos-next/shiftos_next/Terminal.vb
TheUltimateHacker 02df35aba0 New ways to earn Codepoints + Terminal Cleanup
Alrighty. This one's a small one.

I've ported the two beginner apps from UltraDOS that helped you earn
codepoints (scriptpoints in UltraDOS) to ShiftOS-Next.

I've also moved some Terminal methods like AddLine() to an API.vb
module. I've also hid the MathQuiz and GuessTheNumber code in the
TerminalGames module.
2015-05-22 17:42:21 -04:00

348 lines
No EOL
15 KiB
VB.net

Public Class Terminal
Public currentdir As String = root
Public prompttoupdatesave As Boolean = False
Dim trackpos As Integer = 0
Public Sub terminal_Innitiate(sender As Object, e As EventArgs) Handles MyBase.Load
Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
Me.WindowState = FormWindowState.Maximized
loadgame()
AddLine(username + "@" + osname + " " & currentdir.ToLower.Replace("c:\shiftos", "~") & "$> ")
SelectBottom()
If prompttoupdatesave = True Then
AddLine("ShiftOS has encountered an error loading configuration files. Press any key to reset damaged files.")
End If
End Sub
Public Sub Interpret(command As String)
command = command.ToLower
If command Like "help" Then
ShowHelp()
ElseIf command Like "cd *" Then
If boughtdirectorysurfing = True Then
Dim folder As String = command.Replace("cd ", "")
If folder = ".." Then
If currentdir.ToLower = "c:\shiftos" Then
AddLine("cd: Error! You are at the root of your drive.")
Else
currentdir = IO.Directory.GetParent(currentdir).ToString
End If
Else
If IO.Directory.Exists(currentdir + "\" + folder) Then
currentdir = currentdir & "\" & folder
ElseIf IO.Directory.Exists(folder) Then
currentdir = folder
Else
AddLine("cd: Directory """ & folder & """ doesn't exist.")
End If
End If
Else
wrongcommand()
End If
ElseIf command = "dir" Or command = "ls" Then
If boughtdirectorysurfing Then
AddLine("Type | Name ")
AddLine("-------+-------------------------------------------")
For Each Dir As String In IO.Directory.GetDirectories(currentdir)
Dim dirinf As New IO.DirectoryInfo(Dir)
AddLine("[DIR] | " & dirinf.Name)
Next
For Each file As String In IO.Directory.GetFiles(currentdir)
Dim filinf As New IO.FileInfo(file)
AddLine(filinf.Extension & " | " & filinf.Name)
Next
Else
wrongcommand()
End If
ElseIf command Like "mkdir *" Then
If boughtdirectorysurfing = True Then
Dim foldertomake As String = command.Replace("mkdir ", "")
If IO.Directory.Exists(currentdir + "\" + foldertomake) Then
AddLine("Directory already exists!")
Else
IO.Directory.CreateDirectory(currentdir + "\" + foldertomake)
AddLine("mkdir: Directory created successfully.")
End If
Else
wrongcommand()
End If
ElseIf command Like "give me * codepoints" Then
Dim args() As String = command.Split(" ")
Dim cp As String = args(2)
AddCP(cp)
AddLine("Added " & cp & " to your existing ammount of Codepoints.")
ElseIf command Like "set * *" Then
Dim args() As String = command.Split(" ")
Select Case args(1)
Case "username"
If boughtcustomusername Then
username = args(2)
Else
wrongcommand()
End If
Case "textcolor"
If boughtterminalsettextcolor Then
Select Case args(2)
Case "black"
AddLine("Error! Black and black don't go too well...")
Case "white"
txtterm.ForeColor = Color.White
Case "gray"
If boughtgray Then
txtterm.ForeColor = Color.Gray
Else
AddLine("Error! Unsupported color.")
End If
Case "red"
If boughtred Then
txtterm.ForeColor = Color.Red
Else
AddLine("Error! Unsupported color.")
End If
Case "green"
If boughtgreen Then
txtterm.ForeColor = Color.Green
Else
AddLine("Error! Unsupported color.")
End If
Case "blue"
If boughtblue Then
txtterm.ForeColor = Color.Blue
Else
AddLine("Error! Unsupported color.")
End If
Case "yellow"
If boughtyellow Then
txtterm.ForeColor = Color.Yellow
Else
AddLine("Error! Unsupported color.")
End If
Case "orange"
If boughtorange Then
txtterm.ForeColor = Color.Orange
Else
AddLine("Error! Unsupported color.")
End If
Case "pink"
If boughtpink Then
txtterm.ForeColor = Color.Pink
Else
AddLine("Error! Unsupported color.")
End If
Case "purple"
If boughtpurple Then
txtterm.ForeColor = Color.Purple
Else
AddLine("Error! Unsupported color.")
End If
Case "brown"
If boughtbrown Then
txtterm.ForeColor = Color.Brown
Else
AddLine("Error! Unsupported color.")
End If
Case Else
AddLine("Error! Unsupported color, check 'colors' for a list of supported colors.")
End Select
End If
Case Else
AddLine("set: No valid setting node in configuration file for """ & args(1) & """.")
End Select
ElseIf command Like "open *" Then
Dim progtoopen As String = command.Replace("open ", "")
Select Case progtoopen
Case "shiftorium", "packages", "pacman", "code shop"
shiftorium_cmd.Show()
Case "files", "fileskimmer", "file skimmer", "fs", "file browser"
If boughtfileskimmer = True Then
file_skimmer.Show()
Else
AddLine("open: Invalid program """ & progtoopen & """.")
End If
Case "textpad", "text", "notepad"
If boughttextpad = True Then
TextPad.Show()
Else
AddLine("open: Invalid program """ & progtoopen & """.")
End If
Case Else
AddLine("open: Invalid program """ & progtoopen & """.")
End Select
ElseIf command Like "shutdown" Then
savegame()
Me.Close()
ElseIf command Like "math*" Then
mathquiz = True
changeinterpreter()
ElseIf command Like "guess the number" Or command Like "guess" Then
guessthenumber = True
changeinterpreter()
ElseIf command Like "code*" Or command = "code points" Then
AddLine("You have " & codepoints & " Codepoints.")
ElseIf command = "colors" Then
showterminalcolors()
ElseIf command Like "" Then
'This is here to make it so that the Terminal doesn't say "Wrong Command" if the user doesn't input anything.
Else
If IO.File.Exists(currentdir + "\" + command) Then
OpenFile(currentdir + "\" + command)
ElseIf IO.File.Exists(command) Then
OpenFile(command)
Else
wrongcommand()
End If
End If
End Sub
Dim firstuseconversation As Integer = 0
Private Sub tmrfirstuse_Tick(sender As Object, e As EventArgs) Handles tmrfirstuse.Tick
Select Case firstuseconversation
Case 0
txtterm.ReadOnly = True
AddLine("IP Address 170.245.12.80 is connecting as ""DevX"".")
Case 1
AddLine("DevX: It seems my updates have completly installed.")
Case 2
AddLine("DevX: Unfortunately, due to your hard drive being formatted, you have lost all your data.")
Case 3
AddLine("DevX: However, Don't worry! I've added some pretty cool features to the Terminal to make up for this.")
Case 4
AddLine("DevX: I can't tell you much, except for ""Type Help for a list of commands"".")
Case 5
AddLine("DevX: I've got to go, but I'll contact you as I develop more updates; and you test the OS.")
Case 6
AddLine("User ""DevX"" has disconnected.")
Case 7
txtterm.ResetText()
AddLine("user@shiftos ~$> ")
txtterm.ReadOnly = False
tmrfirstuse.Stop()
End Select
firstuseconversation += 1
End Sub
Private Sub txtterm_KeyDown(sender As Object, e As KeyEventArgs) Handles txtterm.KeyDown
If prompttoupdatesave = False Then
Select Case e.KeyCode
Case Keys.ShiftKey
trackpos = trackpos - 1
Case Keys.Alt
trackpos = trackpos - 1
Case Keys.CapsLock
trackpos = trackpos - 1
Case Keys.ControlKey
trackpos = trackpos - 1
Case Keys.LWin
trackpos = trackpos - 1
Case Keys.RWin
trackpos = trackpos - 1
Case Keys.Right
If txtterm.SelectionStart = txtterm.TextLength Then
trackpos = trackpos - 1
End If
Case Keys.Left
If trackpos < 1 Then
e.SuppressKeyPress = True
trackpos = trackpos - 1
Else
trackpos = trackpos - 2
End If
Case Keys.Up
e.SuppressKeyPress = True
trackpos = trackpos - 1
Case Keys.Down
e.SuppressKeyPress = True
trackpos = trackpos - 1
End Select
If e.KeyCode = Keys.Enter Then
e.SuppressKeyPress = True
If mathquiz = True Then
Dim question As String = txtterm.Lines(txtterm.Lines.Length - 2)
Dim answer As String = txtterm.Lines(txtterm.Lines.Length - 1).Replace("> ", "")
If answer = "exit" Then
mathquiz = False
AddLine(username + "@" + osname + " " & currentdir.ToLower.Replace("c:\shiftos", "~") & "$> ")
Else
Try
MQInterpret(question, answer)
Catch ex As Exception
AddLine("The answer provided isn't a proper number!")
End Try
AddLine("> ")
End If
ElseIf guessthenumber = True Then
Dim answer As String = txtterm.Lines(txtterm.Lines.Length - 1).Replace("> ", "")
If answer = "exit" Then
guessthenumber = False
AddLine(username + "@" + osname + " " & currentdir.ToLower.Replace("c:\shiftos", "~") & "$> ")
Else
Try
GTNInterpret(answer)
Catch ex As Exception
AddLine("The answer provided isn't a proper number.")
End Try
AddLine("> ")
End If
Else
Dim command As String = txtterm.Lines(txtterm.Lines.Length - 1).Replace(username + "@" + osname + " " & currentdir.ToLower.Replace("c:\shiftos", "~") & "$> ", "").ToLower
Interpret(command)
If mathquiz Or guessthenumber Then
AddLine("> ")
Else
If command = "clear" Then
txtterm.Text = username + "@" + osname + " " & currentdir.ToLower.Replace("c:\shiftos", "~") & "$> "
txtterm.Select(txtterm.Text.Length, 0)
Else
AddLine(username + "@" + osname + " " & currentdir.ToLower.Replace("c:\shiftos", "~") & "$> ")
txtterm.Select(txtterm.Text.Length, 0)
End If
End If
End If
trackpos = 0
Else
If e.KeyCode = Keys.Back Then
Else
trackpos = trackpos + 1
End If
End If
If e.KeyCode = Keys.Back Then
If trackpos < 1 Then
e.SuppressKeyPress = True
Else
If txtterm.SelectedText.Length < 1 Then
trackpos = trackpos - 1
Else
e.SuppressKeyPress = True
End If
End If
End If
SelectBottom()
Else
e.SuppressKeyPress = True
savegame()
loadgame()
AddLine("Self-repair complete with no errors.")
prompttoupdatesave = False
AddLine(username + "@" + osname + " " & currentdir.ToLower.Replace("c:\shiftos", "~") & "$> ")
End If
End Sub
End Class