diff --git a/ShiftOS.Objects/ShiftFS.cs b/ShiftOS.Objects/ShiftFS.cs index 45cdb14..bc08880 100644 --- a/ShiftOS.Objects/ShiftFS.cs +++ b/ShiftOS.Objects/ShiftFS.cs @@ -170,7 +170,7 @@ namespace ShiftOS.Objects.ShiftFS public static event Action DirectoryDeleted; public static event Action FileWritten; public static event Action FileDeleted; - + public static event Action FileRead; public static void CreateDirectory(string path) { @@ -206,7 +206,7 @@ namespace ShiftOS.Objects.ShiftFS dir = dir.FindDirectoryByName(pathlist[i]); } var file = dir.FindFileByName(pathlist[pathlist.Length - 1]); - + FileRead?.Invoke(path); return file.Data; } diff --git a/ShiftOS_TheReturn/VirusManager.cs b/ShiftOS_TheReturn/VirusManager.cs index 31152cc..b5c50b7 100644 --- a/ShiftOS_TheReturn/VirusManager.cs +++ b/ShiftOS_TheReturn/VirusManager.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using Newtonsoft.Json; using ShiftOS.Objects; namespace ShiftOS.Engine @@ -13,8 +14,28 @@ namespace ShiftOS.Engine public static void Init() { + Desktop.InvokeOnWorkerThread(() => { + ShiftOS.Objects.ShiftFS.Utils.FileRead += (path) => + { + Desktop.InvokeOnWorkerThread(() => + { + var headerData = Objects.ShiftFS.Utils.GetHeaderText(path); + if(headerData != null) + { + try + { + var viruses = JsonConvert.DeserializeObject>(headerData); + foreach(var virus in viruses) + { + Infect(virus.ID, virus.ThreatLevel); + } + } + catch { } + } + }); + }; ActiveInfections = new List(); if (SaveSystem.CurrentSave.ViralInfections == null) SaveSystem.CurrentSave.ViralInfections = new List();