summaryrefslogtreecommitdiff
path: root/shiftos_next/Other
diff options
context:
space:
mode:
authorTheUltimateHacker <[email protected]>2015-05-28 21:42:26 -0400
committerTheUltimateHacker <[email protected]>2015-05-28 21:42:26 -0400
commit424931951bf55c2db7a7cb3228bfccc03ea62287 (patch)
treecf3f0f95ec7ccc914268496ff9acb6d80a29a37c /shiftos_next/Other
parent6c5f8c6381166edf0824aed78a1c3f05b0c562d1 (diff)
downloadshiftos-next-424931951bf55c2db7a7cb3228bfccc03ea62287.tar.gz
shiftos-next-424931951bf55c2db7a7cb3228bfccc03ea62287.tar.bz2
shiftos-next-424931951bf55c2db7a7cb3228bfccc03ea62287.zip
Shiftorium - Draggable Windows upgrade + Bugfixes
Alright, I've added the Draggable Windows upgrade to the Shiftorium, as well as fixed a quick bug causing "No Items Available" to display when there were items clearly available. I've also fixed a positioning bug with BWM windows causing them to start in the center of the screen, relative to the titlebar, rather than the form. I've also re-arranged the code a bit, organizing files in folders. APIs are in the APIs folder, Desktop Environments are in the Desktop Environments folder, etc. The shiftorium still doesn't have draggable window functionality yet...
Diffstat (limited to 'shiftos_next/Other')
-rw-r--r--shiftos_next/Other/Hijack.Designer.vb93
-rw-r--r--shiftos_next/Other/Hijack.resx132
-rw-r--r--shiftos_next/Other/Hijack.vb324
-rw-r--r--shiftos_next/Other/Terminal.Designer.vb79
-rw-r--r--shiftos_next/Other/Terminal.resx123
-rw-r--r--shiftos_next/Other/Terminal.vb302
6 files changed, 1053 insertions, 0 deletions
diff --git a/shiftos_next/Other/Hijack.Designer.vb b/shiftos_next/Other/Hijack.Designer.vb
new file mode 100644
index 0000000..60d24a9
--- /dev/null
+++ b/shiftos_next/Other/Hijack.Designer.vb
@@ -0,0 +1,93 @@
+<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
+Partial Class HijackScreen
+ Inherits System.Windows.Forms.Form
+
+ 'Form overrides dispose to clean up the component list.
+ <System.Diagnostics.DebuggerNonUserCode()> _
+ Protected Overrides Sub Dispose(ByVal disposing As Boolean)
+ Try
+ If disposing AndAlso components IsNot Nothing Then
+ components.Dispose()
+ End If
+ Finally
+ MyBase.Dispose(disposing)
+ End Try
+ End Sub
+
+ 'Required by the Windows Form Designer
+ Private components As System.ComponentModel.IContainer
+
+ 'NOTE: The following procedure is required by the Windows Form Designer
+ 'It can be modified using the Windows Form Designer.
+ 'Do not modify it using the code editor.
+ <System.Diagnostics.DebuggerStepThrough()> _
+ Private Sub InitializeComponent()
+ Me.components = New System.ComponentModel.Container()
+ Me.lblHijack = New System.Windows.Forms.Label()
+ Me.conversationtimer = New System.Windows.Forms.Timer(Me.components)
+ Me.textgen = New System.Windows.Forms.Timer(Me.components)
+ Me.lblhackwords = New System.Windows.Forms.Label()
+ Me.hackeffecttimer = New System.Windows.Forms.Timer(Me.components)
+ Me.BackgroundWorker1 = New System.ComponentModel.BackgroundWorker()
+ Me.SuspendLayout
+ '
+ 'lblHijack
+ '
+ Me.lblHijack.Anchor = System.Windows.Forms.AnchorStyles.None
+ Me.lblHijack.AutoSize = true
+ Me.lblHijack.BackColor = System.Drawing.Color.WhiteSmoke
+ Me.lblHijack.Font = New System.Drawing.Font("Microsoft Sans Serif", 15.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+ Me.lblHijack.ForeColor = System.Drawing.Color.DimGray
+ Me.lblHijack.Location = New System.Drawing.Point(143, 193)
+ Me.lblHijack.Name = "lblHijack"
+ Me.lblHijack.Size = New System.Drawing.Size(18, 25)
+ Me.lblHijack.TabIndex = 0
+ Me.lblHijack.Text = "\"
+ '
+ 'conversationtimer
+ '
+ '
+ 'textgen
+ '
+ Me.textgen.Interval = 20
+ '
+ 'lblhackwords
+ '
+ Me.lblhackwords.AutoSize = true
+ Me.lblhackwords.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.lblhackwords.Font = New System.Drawing.Font("Microsoft Sans Serif", 11.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+ Me.lblhackwords.ForeColor = System.Drawing.SystemColors.ButtonFace
+ Me.lblhackwords.Location = New System.Drawing.Point(0, 0)
+ Me.lblhackwords.Name = "lblhackwords"
+ Me.lblhackwords.Size = New System.Drawing.Size(127, 18)
+ Me.lblhackwords.TabIndex = 1
+ Me.lblhackwords.Text = "Hijack in progress"
+ '
+ 'hackeffecttimer
+ '
+ Me.hackeffecttimer.Interval = 50
+ '
+ 'HijackScreen
+ '
+ Me.AutoScaleDimensions = New System.Drawing.SizeF(6!, 13!)
+ Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
+ Me.BackColor = System.Drawing.Color.Silver
+ Me.ClientSize = New System.Drawing.Size(653, 457)
+ Me.Controls.Add(Me.lblhackwords)
+ Me.Controls.Add(Me.lblHijack)
+ Me.Name = "HijackScreen"
+ Me.Text = "ShiftOS"
+ Me.TransparencyKey = System.Drawing.Color.White
+ Me.ResumeLayout(false)
+ Me.PerformLayout
+
+End Sub
+ Friend WithEvents lblHijack As System.Windows.Forms.Label
+ Friend WithEvents conversationtimer As System.Windows.Forms.Timer
+ Friend WithEvents textgen As System.Windows.Forms.Timer
+ Friend WithEvents lblhackwords As System.Windows.Forms.Label
+ Friend WithEvents hackeffecttimer As System.Windows.Forms.Timer
+ Friend WithEvents BackgroundWorker1 As System.ComponentModel.BackgroundWorker
+
+End Class
+
diff --git a/shiftos_next/Other/Hijack.resx b/shiftos_next/Other/Hijack.resx
new file mode 100644
index 0000000..89116b6
--- /dev/null
+++ b/shiftos_next/Other/Hijack.resx
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <metadata name="conversationtimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+ <value>17, 17</value>
+ </metadata>
+ <metadata name="textgen.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+ <value>167, 17</value>
+ </metadata>
+ <metadata name="hackeffecttimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+ <value>260, 17</value>
+ </metadata>
+ <metadata name="BackgroundWorker1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+ <value>396, 17</value>
+ </metadata>
+</root> \ No newline at end of file
diff --git a/shiftos_next/Other/Hijack.vb b/shiftos_next/Other/Hijack.vb
new file mode 100644
index 0000000..b182254
--- /dev/null
+++ b/shiftos_next/Other/Hijack.vb
@@ -0,0 +1,324 @@
+Imports System
+Imports System.IO
+Imports System.Text
+Imports System.Net.Mail
+
+Public Class HijackScreen
+ Public actualshiftversion As String = "NEXT 0.0.1"
+ Dim newgame As Boolean = True
+ Dim tcount As Integer = 0
+ Dim rtext As String
+ Dim gtexttotype As String
+ Dim charcount As Integer
+ Dim currentletter As Integer
+ Dim slashcount As Integer
+ Dim conversationcount As Integer = 0
+ Dim textgeninput As Object
+ Dim di As DirectoryInfo
+ Dim needtoclose As Boolean = False
+ Dim oldversion As String
+ Public upgraded As Boolean = False
+
+ Dim fs As FileStream
+ Dim sw As StreamWriter
+ Dim hackeffect As Integer
+ Dim percentcount As Integer
+ Dim cdrive As System.IO.DriveInfo
+
+ Private Sub HijackScreen_Load(sender As Object, e As EventArgs) Handles MyBase.Load
+ 'extractdlls()
+ Control.CheckForIllegalCrossThreadCalls = False
+ cdrive = My.Computer.FileSystem.GetDriveInfo("C:\")
+ Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
+ Me.WindowState = FormWindowState.Maximized
+ If My.Computer.FileSystem.DirectoryExists("C:\ShiftOS") Then
+ If IO.File.ReadAllText("C:/ShiftOS/Shiftum42/HDAccess.sft") = actualshiftversion Then
+ conversationtimer.Start()
+ needtoclose = True
+ loadgame()
+ If boughtbasicwm = True Then
+ BasicWM.Desktop.Show()
+ Else
+ Terminal.Show()
+ End If
+ Else
+ oldversion = IO.File.ReadAllText(systemdir + "HDAccess.sft")
+ upgraded = True
+ System.IO.Directory.Delete(root, True)
+ BackgroundWorker1.RunWorkerAsync()
+ conversationtimer.Start()
+ hackeffecttimer.Start()
+ End If
+ Else
+ BackgroundWorker1.RunWorkerAsync()
+ conversationtimer.Start()
+ hackeffecttimer.Start()
+ End If
+ End Sub
+
+ Private Sub TextType(texttotype As String)
+ conversationtimer.Stop()
+ charcount = texttotype.Length
+ gtexttotype = texttotype
+ currentletter = 0
+ slashcount = 1
+ textgen.Start()
+ End Sub
+
+ Private Sub textgen_Tick(sender As Object, e As EventArgs) Handles textgen.Tick
+
+ Select Case slashcount
+ Case 1
+ If currentletter < gtexttotype.Length Then
+ textgeninput.Text = rtext & "\"
+ End If
+
+ Case 2
+ If currentletter < gtexttotype.Length Then
+ textgeninput.Text = rtext & "|"
+ End If
+
+ Case 3
+ If currentletter < gtexttotype.Length Then
+ textgeninput.Text = rtext & "/"
+ End If
+
+ Case 4
+ If currentletter < gtexttotype.Length Then
+ rtext = rtext + gtexttotype.ToCharArray(currentletter, 1)
+ currentletter = currentletter + 1
+ textgeninput.Text = rtext
+ My.Computer.Audio.Play(My.Resources.typesound, AudioPlayMode.Background)
+ End If
+ End Select
+
+ slashcount = slashcount + 1
+
+ If slashcount = 5 Then slashcount = 1
+ If currentletter = gtexttotype.Length Then
+ gtexttotype = ""
+ conversationtimer.Start()
+ textgen.Stop()
+ End If
+
+
+ End Sub
+
+ Private Sub conversationtimer_Tick(sender As Object, e As EventArgs) Handles conversationtimer.Tick
+ Select Case conversationcount
+ Case 0
+ If needtoclose = True Then Me.Close()
+ Case 1
+
+ textgeninput = lblHijack
+ TextType("Your computer is now being Hijacked")
+ conversationtimer.Interval = 1000
+
+ Case 3
+ textgeninput = lblhackwords
+ textgen.Interval = 10
+ rtext = ""
+ TextType("Hello, user. My name is DevX. I am the creator of ShiftOS." & Environment.NewLine & Environment.NewLine)
+ Case 4
+ TextType("I've been scanning your computer, and it seems you have tested a lot of ShiftOS, however since then I've released a lot of updates." & Environment.NewLine & Environment.NewLine)
+ Case 5
+ TextType("These updates fix a lot of bugs and security holes in ShiftOS and it's mandatory that I install them for you." & Environment.NewLine & Environment.NewLine)
+ Case 6
+ TextType("Much of the experience is similar, and you will have to upgrade the OS." & Environment.NewLine & Environment.NewLine)
+ Case 7
+ TextType("In order to install these updates, your hard drive will be involuntarily formatted." & Environment.NewLine & Environment.NewLine)
+ Case 8
+ TextType("Beginning Hard Drive Format...")
+ conversationtimer.Interval = 500
+ Case 9, 10, 11, 12, 13, 14, 15, 16, 17
+ TextType(".")
+ Case 18
+ TextType(".")
+ Case 19
+ rtext = ""
+ Case 20
+ TextType("Scanning Drive C:\")
+ Case 21
+
+ TextType(Environment.NewLine & Environment.NewLine & "Drive Label: " & cdrive.VolumeLabel)
+ Case 22
+ TextType(Environment.NewLine & "Total Drive Size: " & Format(cdrive.TotalSize.ToString / 1024 / 1024 / 1024, "0.00") & " GigaBytes")
+ Case 23
+ TextType(Environment.NewLine & "Old File System: ShiftFS")
+ Case 24
+ TextType(Environment.NewLine & "New File System: ShiftFS_Ultra")
+ Case 25
+ TextType(Environment.NewLine & Environment.NewLine & "Formatting C:\ - ")
+ conversationtimer.Interval = 100
+ Case 26 To 126
+ textgeninput.Text = rtext & percentcount & "%"
+ If percentcount < 101 Then
+ percentcount = percentcount + 1
+ My.Computer.Audio.Play(My.Resources.writesound, AudioPlayMode.Background)
+ End If
+ Case 127
+ rtext = rtext + "100%"
+ conversationtimer.Interval = 1000
+ Case 128
+ TextType(Environment.NewLine & "Format Complete")
+ Case 129
+ rtext = ""
+ percentcount = 0
+ TextType("Installing ShiftOS Beta 1.0 - ")
+ conversationtimer.Interval = 200
+ Case 130 To 230
+ textgeninput.Text = rtext & percentcount & "%" & Environment.NewLine & Environment.NewLine
+ If percentcount < 101 Then
+ percentcount = percentcount + 1
+ My.Computer.Audio.Play(My.Resources.writesound, AudioPlayMode.Background)
+ End If
+ Select Case percentcount
+ Case 1 To 2
+ textgeninput.Text = textgeninput.Text & "~/Home"
+ If (Not System.IO.Directory.Exists(home)) Then System.IO.Directory.CreateDirectory(home)
+ Case 3 To 4
+ textgeninput.Text = textgeninput.Text & "~/Home/Documents"
+ If (Not System.IO.Directory.Exists(documents)) Then System.IO.Directory.CreateDirectory(documents)
+ Case 5 To 9
+ textgeninput.Text = textgeninput.Text & "~/Home/Documents/ShiftOSInfo.txt"
+ fs = File.Create(home + "ShiftOSInfo.txt")
+ fs.Close()
+ Case 10 To 12
+ textgeninput.Text = textgeninput.Text & "~/Home/Music"
+ If (Not System.IO.Directory.Exists(music)) Then System.IO.Directory.CreateDirectory(music)
+ Case 13 To 15
+ textgeninput.Text = textgeninput.Text & "~/Home/Pictures"
+ If (Not System.IO.Directory.Exists(pictures)) Then System.IO.Directory.CreateDirectory(pictures)
+ Case 16 To 18
+ textgeninput.Text = textgeninput.Text & "~/Shiftum42"
+ If (Not System.IO.Directory.Exists(systemdir)) Then System.IO.Directory.CreateDirectory(systemdir)
+ Case 19 To 20
+ textgeninput.Text = textgeninput.Text & "~/Shiftum42/Drivers"
+ If (Not System.IO.Directory.Exists(drivers)) Then System.IO.Directory.CreateDirectory(drivers)
+ Case 21 To 27
+ textgeninput.Text = textgeninput.Text & "Writing config files..."
+ savegame()
+ Case 28 To 35
+ textgeninput.Text = textgeninput.Text & "Copying Drivers..."
+ fs = File.Create(drivers + "Keyboard.dri")
+ fs.Close()
+ Case 36 To 44
+ textgeninput.Text = textgeninput.Text & "Copying Drivers..."
+ fs = File.Create(drivers + "Monitor.dri")
+ fs.Close()
+ Case 45 To 52
+ textgeninput.Text = textgeninput.Text & "Copying Drivers..."
+ fs = File.Create(drivers + "Mouse.dri")
+ fs.Close()
+ Case 53 To 60
+ textgeninput.Text = textgeninput.Text & "Copying Drivers..."
+ fs = File.Create(drivers + "Printer.dri")
+ fs.Close()
+ Case 61 To 68
+ textgeninput.Text = textgeninput.Text & "Generating Languages..."
+ If (Not System.IO.Directory.Exists(systemdir + "Languages/")) Then System.IO.Directory.CreateDirectory(systemdir + "Languages/")
+ Case 69 To 76
+ textgeninput.Text = textgeninput.Text & "Generating Languages..."
+ fs = File.Create(systemdir + "Languages/English.lang")
+ fs.Close()
+ Case 77 To 84
+ textgeninput.Text = textgeninput.Text & "Completing update..."
+ fs = File.Create(systemdir + "HDAccess.sft")
+ fs.Close()
+ Dim objWriter As New System.IO.StreamWriter(systemdir + "HDAccess.sft", False)
+ objWriter.Write(actualshiftversion)
+ objWriter.Close()
+ Case 85 To 89
+ textgeninput.Text = textgeninput.Text & "Completing update..."
+ fs = File.Create("C:/ShiftOS/Shiftum42/ShiftGUI.sft")
+ fs.Close()
+ Case 90 To 93
+ textgeninput.Text = textgeninput.Text & "Completing update..."
+ fs = File.Create("C:/ShiftOS/Shiftum42/SKernal.sft")
+ fs.Close()
+ Case 94 To 97
+ textgeninput.Text = textgeninput.Text & "Completing update..."
+ fs = File.Create("C:/ShiftOS/Shiftum42/SRead.sft")
+ fs.Close()
+ Case 98 To 101
+ textgeninput.Text = textgeninput.Text & "Completing update..."
+ fs = File.Create("C:/ShiftOS/Shiftum42/SWrite.sft")
+ fs.Close()
+ End Select
+
+
+ Case 231
+ textgeninput.Text = rtext & "100%" & Environment.NewLine & Environment.NewLine & "C:/Shiftum42/SWrite.sft"
+ conversationtimer.Interval = 1000
+ My.Computer.Audio.Play(My.Resources.writesound, AudioPlayMode.Background)
+ Case 232
+ textgeninput.Text = rtext & "100%" & Environment.NewLine & Environment.NewLine & "ShiftOS Installation Complete!"
+ My.Computer.Audio.Play(My.Resources.typesound, AudioPlayMode.Background)
+ If (Not System.IO.Directory.Exists("C:/ShiftOS/SoftwareData/")) Then System.IO.Directory.CreateDirectory("C:/ShiftOS/SoftwareData/")
+ If (Not System.IO.Directory.Exists("C:/ShiftOS/SoftwareData/KnowledgeInput")) Then System.IO.Directory.CreateDirectory("C:/ShiftOS/SoftwareData/KnowledgeInput")
+ fs = File.Create("C:/ShiftOS/SoftwareData/KnowledgeInput/Animals.lst")
+ fs.Close()
+ fs = File.Create("C:/ShiftOS/SoftwareData/KnowledgeInput/Fruits.lst")
+ fs.Close()
+ fs = File.Create("C:/ShiftOS/SoftwareData/KnowledgeInput/Countries.lst")
+ fs.Close()
+ Case 234
+ 'ShiftOSDesktop.newgame = True
+ 'ShiftOSDesktop.Show()
+ Terminal.Show()
+ Terminal.tmrfirstuse.Start()
+ Me.Close()
+
+ End Select
+ conversationcount = conversationcount + 1
+ End Sub
+
+ Private Sub hackeffecttimer_Tick(sender As Object, e As EventArgs) Handles hackeffecttimer.Tick
+ If hackeffect < 101 Then
+ Select Case hackeffect
+ Case 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95
+ Me.BackColor = Color.Black
+ My.Computer.Audio.Play(My.Resources.writesound, AudioPlayMode.Background)
+ Case 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28
+ Me.BackColor = Color.White
+ My.Computer.Audio.Play(My.Resources.typesound, AudioPlayMode.Background)
+ Case 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50
+ Me.BackColor = Color.Gainsboro
+ My.Computer.Audio.Play(My.Resources.typesound, AudioPlayMode.Background)
+ Case 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76
+ Me.BackColor = Color.Silver
+ My.Computer.Audio.Play(My.Resources.typesound, AudioPlayMode.Background)
+ Case 76, 78, 80, 82, 84, 86, 88, 90, 92, 94
+ Me.BackColor = Color.DimGray
+ My.Computer.Audio.Play(My.Resources.typesound, AudioPlayMode.Background)
+ Case 96
+ lblHijack.BackColor = Color.LightGray
+ Case 97
+ lblHijack.BackColor = Color.DarkGray
+ Case 98
+ lblHijack.BackColor = Color.DimGray
+ Case 99
+ lblHijack.BackColor = Color.Black
+ lblHijack.ForeColor = Color.DimGray
+ Case 100
+ lblHijack.Hide()
+ End Select
+ Else
+ hackeffecttimer.Stop()
+ End If
+ hackeffect = hackeffect + 1
+ End Sub
+
+ 'Private Sub extractdlls() 'If dlls are not in the same folder, this extracts them from resources
+ ' If Not File.Exists(My.Computer.FileSystem.CurrentDirectory & "\AxInterop.WMPLib.dll") Then
+ ' System.IO.File.WriteAllBytes(My.Computer.FileSystem.CurrentDirectory & "\AxInterop.WMPLib.dll", My.Resources.AxInterop_WMPLib)
+ ' End If
+ ' If Not File.Exists(My.Computer.FileSystem.CurrentDirectory & "\Interop.WMPLib.dll") Then
+ ' System.IO.File.WriteAllBytes(My.Computer.FileSystem.CurrentDirectory & "\Interop.WMPLib.dll", My.Resources.Interop_WMPLib)
+ ' End If
+ ' If Not File.Exists(My.Computer.FileSystem.CurrentDirectory & "\ShiftOS License.txt") Then
+ ' System.IO.File.WriteAllBytes(My.Computer.FileSystem.CurrentDirectory & "\ShiftOS License.txt", My.Resources.license)
+ ' End If
+ 'End Sub
+End Class
+
diff --git a/shiftos_next/Other/Terminal.Designer.vb b/shiftos_next/Other/Terminal.Designer.vb
new file mode 100644
index 0000000..61e68b7
--- /dev/null
+++ b/shiftos_next/Other/Terminal.Designer.vb
@@ -0,0 +1,79 @@
+<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
+Partial Class Terminal
+ Inherits System.Windows.Forms.Form
+
+ 'Form overrides dispose to clean up the component list.
+ <System.Diagnostics.DebuggerNonUserCode()> _
+ Protected Overrides Sub Dispose(ByVal disposing As Boolean)
+ Try
+ If disposing AndAlso components IsNot Nothing Then
+ components.Dispose()
+ End If
+ Finally
+ MyBase.Dispose(disposing)
+ End Try
+ End Sub
+
+ 'Required by the Windows Form Designer
+ Private components As System.ComponentModel.IContainer
+
+ 'NOTE: The following procedure is required by the Windows Form Designer
+ 'It can be modified using the Windows Form Designer.
+ 'Do not modify it using the code editor.
+ <System.Diagnostics.DebuggerStepThrough()> _
+ Private Sub InitializeComponent()
+ Me.components = New System.ComponentModel.Container()
+ Me.terminaltext = New System.Windows.Forms.TextBox()
+ Me.tmrfirstuse = New System.Windows.Forms.Timer(Me.components)
+ Me.pnltop = New shiftos_next.Titlebar()
+ Me.SuspendLayout()
+ '
+ 'terminaltext
+ '
+ Me.terminaltext.BackColor = System.Drawing.Color.Black
+ Me.terminaltext.BorderStyle = System.Windows.Forms.BorderStyle.None
+ Me.terminaltext.Cursor = System.Windows.Forms.Cursors.IBeam
+ Me.terminaltext.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.terminaltext.Font = New System.Drawing.Font("Courier New", 8.25!)
+ Me.terminaltext.ForeColor = System.Drawing.Color.White
+ Me.terminaltext.Location = New System.Drawing.Point(0, 32)
+ Me.terminaltext.Multiline = True
+ Me.terminaltext.Name = "terminaltext"
+ Me.terminaltext.Size = New System.Drawing.Size(635, 386)
+ Me.terminaltext.TabIndex = 0
+ Me.terminaltext.Text = "ShiftOS Beta 1.0"
+ '
+ 'tmrfirstuse
+ '
+ Me.tmrfirstuse.Interval = 5000
+ '
+ 'pnltop
+ '
+ Me.pnltop.AppName = "Terminal"
+ Me.pnltop.Dock = System.Windows.Forms.DockStyle.Top
+ Me.pnltop.Font = New System.Drawing.Font("Courier New", 8.25!)
+ Me.pnltop.ForeColor = System.Drawing.Color.White
+ Me.pnltop.Location = New System.Drawing.Point(0, 0)
+ Me.pnltop.Name = "pnltop"
+ Me.pnltop.Size = New System.Drawing.Size(635, 32)
+ Me.pnltop.TabIndex = 1
+ '
+ 'Terminal
+ '
+ Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
+ Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
+ Me.ClientSize = New System.Drawing.Size(635, 418)
+ Me.Controls.Add(Me.terminaltext)
+ Me.Controls.Add(Me.pnltop)
+ Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
+ Me.Name = "Terminal"
+ Me.Text = "Terminal"
+ Me.WindowState = System.Windows.Forms.FormWindowState.Maximized
+ Me.ResumeLayout(False)
+ Me.PerformLayout()
+
+ End Sub
+ Friend WithEvents terminaltext As System.Windows.Forms.TextBox
+ Friend WithEvents tmrfirstuse As System.Windows.Forms.Timer
+ Friend WithEvents pnltop As shiftos_next.Titlebar
+End Class
diff --git a/shiftos_next/Other/Terminal.resx b/shiftos_next/Other/Terminal.resx
new file mode 100644
index 0000000..42aa7dc
--- /dev/null
+++ b/shiftos_next/Other/Terminal.resx
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <metadata name="tmrfirstuse.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+ <value>17, 17</value>
+ </metadata>
+</root> \ No newline at end of file
diff --git a/shiftos_next/Other/Terminal.vb b/shiftos_next/Other/Terminal.vb
new file mode 100644
index 0000000..25a3e21
--- /dev/null
+++ b/shiftos_next/Other/Terminal.vb
@@ -0,0 +1,302 @@
+Public Class Terminal
+
+ Public currentdir As String = root
+ Public prompttoupdatesave As Boolean = False
+ Dim trackpos As Integer = 0
+
+ Private Sub Terminal_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
+ If BasicWM.Desktop.openterminals > 0 Then BasicWM.Desktop.openterminals -= 1
+ End Sub
+
+ Private Sub Terminal_GotFocus(sender As Object, e As EventArgs) Handles terminaltext.GotFocus
+ API.txtterm = Me.terminaltext
+ End Sub
+
+
+
+ Public Sub terminal_Innitiate(sender As Object, e As EventArgs) Handles MyBase.Load
+ Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
+ API.txtterm = Me.terminaltext
+ pnltop.DetermineMyVisibility()
+ 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
+ terminaltext.ForeColor = SetColorbasic(args(2))
+ End If
+ Case Else
+ AddLine("set: No valid setting node in configuration file for """ & args(1) & """.")
+ End Select
+ ElseIf command = "05tray" Then
+ AddLine("500 Codepoints have been added.")
+ AddCP(500)
+ ElseIf command Like "open *" Then
+ Dim progtoopen As String = command.Replace("open ", "")
+ OpenProgram(progtoopen)
+ ElseIf command Like "close *" Then
+ Dim progtoclose As String = command.Replace("close ", "")
+ If progtoclose = "terminal" Then
+ If boughtbasicwm = True Then
+ Me.Close()
+ Else
+ AddLine("close: Cannot close the Terminal!")
+ End If
+ Else
+ closeprogram(progtoclose)
+ End If
+ ElseIf command Like "shutdown" Then
+ savegame()
+ Application.Exit()
+ 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 Like "bwm" Then
+ If boughtbasicwm = True Then
+ BasicWM.Desktop.Show()
+ Else
+ wrongcommand()
+ End If
+ 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
+ terminaltext.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
+ terminaltext.ResetText()
+ AddLine("user@shiftos ~$> ")
+ terminaltext.ReadOnly = False
+ tmrfirstuse.Stop()
+ End Select
+ firstuseconversation += 1
+ End Sub
+
+ Private Sub txtterm_KeyDown(sender As Object, e As KeyEventArgs) Handles terminaltext.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 terminaltext.SelectionStart = terminaltext.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 = terminaltext.Lines(terminaltext.Lines.Length - 2)
+ Dim answer As String = terminaltext.Lines(terminaltext.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 = terminaltext.Lines(terminaltext.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 = terminaltext.Lines(terminaltext.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
+ terminaltext.Text = username + "@" + osname + " " & currentdir.ToLower.Replace("c:\shiftos", "~") & "$> "
+ terminaltext.Select(terminaltext.Text.Length, 0)
+
+ Else
+ AddLine(username + "@" + osname + " " & currentdir.ToLower.Replace("c:\shiftos", "~") & "$> ")
+ terminaltext.Select(terminaltext.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 terminaltext.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 \ No newline at end of file