diff --git a/ShiftOS.WinForms/Applications/Downloader.cs b/ShiftOS.WinForms/Applications/Downloader.cs index ec071d2..b1b7ed9 100644 --- a/ShiftOS.WinForms/Applications/Downloader.cs +++ b/ShiftOS.WinForms/Applications/Downloader.cs @@ -167,14 +167,33 @@ namespace ShiftOS.WinForms.Applications } } + /// + /// Gets a Shiftnet download speed in bytes based on the user's subscription. + /// + /// Download speed in bytes. + public static int GetDownloadSpeed() + { + switch (SaveSystem.CurrentSave.ShiftnetSubscription) + { + case 0: + return 256/*B*/; + case 1: + return 1024 * 1024/*KB*/; + case 2: + return 1024 * 10240/*KB*/; + case 3: + return 1024 * 1024 * 1024/*MB*/; + } + return 256; + } + public static void StartDownload(Download down) { var t = new Thread(() => { - int byteWrite = 256; _downloads.Add(down); DownloadStarted?.Invoke(down); - for (int i = 0; i < down.Bytes.Length; i += byteWrite) + for (int i = 0; i < down.Bytes.Length; i += GetDownloadSpeed()) { Thread.Sleep(1000); _downloads[_downloads.IndexOf(down)].Progress = (int)((float)(i / down.Bytes.Length) * 100); @@ -197,4 +216,25 @@ namespace ShiftOS.WinForms.Applications public byte[] Bytes { get; set; } public int Progress { get; set; } } + + [Namespace("dev")] + public static class DownloaderDebugCommands + { + [Command("setsubscription", description ="Use to set the current shiftnet subscription.", usage ="{value:int32}")] + [RequiresArgument("value")] + public static bool SetShiftnetSubscription(Dictionary args) + { + int val = 0; + if(int.TryParse(args["value"].ToString(), out val) == true) + { + SaveSystem.CurrentSave.ShiftnetSubscription = val; + SaveSystem.SaveGame(); + } + else + { + Console.WriteLine("Not a valid 32-bit integer."); + } + return true; + } + } } diff --git a/ShiftOS.WinForms/Applications/ShiftLetters.cs b/ShiftOS.WinForms/Applications/ShiftLetters.cs index 32a1ed4..8f05661 100644 --- a/ShiftOS.WinForms/Applications/ShiftLetters.cs +++ b/ShiftOS.WinForms/Applications/ShiftLetters.cs @@ -215,7 +215,7 @@ namespace ShiftOS.WinForms.Applications if (!lblword.Text.Contains("_")) { int oldlives = lives; - int cp = word.Length * oldlives; + int cp = (word.Length * oldlives) * 5; SaveSystem.TransferCodepointsFrom("shiftletters", cp); StartGame(); } diff --git a/ShiftOS.WinForms/Applications/Shiftnet.cs b/ShiftOS.WinForms/Applications/Shiftnet.cs index af0e6ad..3da7d6a 100644 --- a/ShiftOS.WinForms/Applications/Shiftnet.cs +++ b/ShiftOS.WinForms/Applications/Shiftnet.cs @@ -104,7 +104,10 @@ namespace ShiftOS.WinForms.Applications "; string body = CommonMark.CommonMarkConverter.Convert(markdown); - + for(int i = 0; i <= Encoding.UTF8.GetBytes(body).Length; i += DownloadManager.GetDownloadSpeed()) + { + //halt the page load until 'download' finishes. + } html = html.Replace("", body); return html; } diff --git a/ShiftOS.WinForms/DownloadControl.cs b/ShiftOS.WinForms/DownloadControl.cs index f533c2a..33619aa 100644 --- a/ShiftOS.WinForms/DownloadControl.cs +++ b/ShiftOS.WinForms/DownloadControl.cs @@ -58,7 +58,7 @@ namespace ShiftOS.WinForms bytesTransferred += 256; pgprogress.Value = bytesTransferred; lbshiftneturl.Text = $@"{d.ShiftnetUrl} -{bytesTransferred} B out of {d.Bytes.Length} B transferred at 256 B per second. +{bytesTransferred} B out of {d.Bytes.Length} B transferred at {DownloadManager.GetDownloadSpeed()} B per second. To {d.Destination}"; pgprogress.Maximum = d.Bytes.Length; }