Skip to content

Commit 33cf223

Browse files
authored
Merge pull request #96 from Mikou27/master
Nucleus v2.3.1
2 parents 6cbe268 + 5a84a14 commit 33cf223

24 files changed

Lines changed: 379 additions & 187 deletions

Master/NucleusCoopTool/Controls/HubWebView.Designer.cs

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Master/NucleusCoopTool/Controls/HubWebView.cs

Lines changed: 86 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99
using Nucleus.Gaming.UI;
1010
using System;
1111
using System.Collections.Generic;
12+
using System.Diagnostics;
1213
using System.Drawing;
14+
using System.Drawing.Drawing2D;
1315
using System.IO;
1416
using System.Linq;
1517
using System.Text.RegularExpressions;
@@ -88,6 +90,8 @@ public HubWebView()
8890

8991
button_Panel.BackColor = BackColor;
9092

93+
ShowThrobber();
94+
9195
string debugUri = Path.Combine(Application.StartupPath, $"webview\\debugUri.txt");
9296

9397
if (File.Exists(debugUri))
@@ -120,10 +124,55 @@ public HubWebView()
120124
}
121125
}
122126
}
123-
127+
124128
BuildHandlersDatas();
125129
}
126130

131+
private PictureBox throbber;
132+
133+
private void ShowThrobber()
134+
{
135+
if (throbber == null)
136+
{
137+
throbber = new PictureBox
138+
{
139+
Size = new Size(50, 50),
140+
BackColor = BackColor,
141+
Image = ImageCache.GetImage(Globals.ThemeFolder + "loading.gif"),
142+
SizeMode = PictureBoxSizeMode.StretchImage
143+
};
144+
145+
throbber.LocationChanged += ThrobberLocationChanged;
146+
Controls.Add(throbber);
147+
148+
throbber.BringToFront();
149+
}
150+
}
151+
152+
protected void ThrobberLocationChanged(object sender,EventArgs e)
153+
{
154+
PictureBox _throb = (PictureBox)sender;
155+
using (var gp = new GraphicsPath())
156+
{
157+
gp.AddEllipse(new Rectangle(0, 0, _throb.Width , _throb.Height));
158+
_throb.Region = new Region(gp);
159+
}
160+
}
161+
162+
private void ThrobberDispose()
163+
{
164+
if (throbber != null)
165+
Controls.Remove(throbber);
166+
throbber?.Dispose();
167+
throbber = null;
168+
}
169+
170+
private void HubWebView_Resize(object sender, EventArgs e)
171+
{
172+
if(throbber != null)
173+
throbber.Location = RectangleUtil.Center(throbber.ClientRectangle, ClientRectangle).Location;
174+
}
175+
127176
private void BuildHandlersDatas()
128177
{
129178
installedHandlers.Clear();
@@ -146,14 +195,14 @@ private void BuildHandlersDatas()
146195
}
147196

148197
private async void OnLoad(object sender, EventArgs e)
149-
{
198+
{
150199
await InitializeAsync();
151200
}
152201

153202
private async Task InitializeAsync()
154203
{
155204
try
156-
{
205+
{
157206
CoreWebView2Environment environment;
158207
CoreWebView2EnvironmentOptions environmentOptions = new CoreWebView2EnvironmentOptions();
159208
environmentOptions.AreBrowserExtensionsEnabled = true;
@@ -215,14 +264,45 @@ private async void WebView_CoreWebView2InitializationCompleted(object sender, Co
215264
webView.CoreWebView2.NewWindowRequested += NewWindowRequested;
216265
webView.CoreWebView2.WebMessageReceived += WebMessageReceived;
217266
webView.CoreWebView2.ProcessFailed += ProcessFailed;
267+
webView.CoreWebView2.NavigationStarting += NavigationStarting;
268+
webView.CoreWebView2.NavigationCompleted += NavigationCompleted;
269+
218270
webView.CoreWebView2.Profile.PreferredColorScheme = CoreWebView2PreferredColorScheme.Dark;
219-
271+
220272
BringToFront();
221273
}
222274
}
223275
catch { Console.WriteLine("Webview init failed!"); }
224276
}
225277

278+
private bool inUserBrowser;
279+
280+
private void NavigationCompleted(object sender, CoreWebView2NavigationCompletedEventArgs e)
281+
{
282+
if(e.IsSuccess)
283+
inUserBrowser = false;
284+
}
285+
286+
private void NavigationStarting(object sender, CoreWebView2NavigationStartingEventArgs e)
287+
{
288+
CoreWebView2 currentWindow = (CoreWebView2)sender;
289+
290+
if (!e.Uri.StartsWith("https://hub.splitscreen.me/"))
291+
{
292+
if(!inUserBrowser)
293+
{
294+
Process.Start(e.Uri);
295+
inUserBrowser = true;
296+
}
297+
else
298+
{
299+
currentWindow.Reload();
300+
}
301+
302+
e.Cancel = true;
303+
}
304+
}
305+
226306
private void WebMessageReceived(object sender, CoreWebView2WebMessageReceivedEventArgs e)
227307
{
228308
Console.WriteLine(e.WebMessageAsJson);
@@ -256,6 +336,7 @@ private void DOMContentLoaded(object sender, CoreWebView2DOMContentLoadedEventAr
256336
hasFreshCahe = false;
257337
}
258338

339+
ThrobberDispose();
259340
webView.ZoomFactor = 0.8;
260341
SendDatas();
261342
}
@@ -596,7 +677,6 @@ private void DisposeContent(object sender, EventArgs e)
596677
}
597678

598679
webView?.Dispose();
599-
}
680+
}
600681
}
601-
602682
}

Master/NucleusCoopTool/Forms/DownloadPrompt.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@ public partial class DownloadPrompt : Form
2626
private int entriesDone = 0;
2727
private float fontSize;
2828
private bool overwriteWithoutAsking = false;
29-
private MainForm mainForm;
30-
//public bool gameExeNoUpdate;
3129
public string game;
3230

3331
private void controlscollect()

Master/NucleusCoopTool/Forms/MainForm.Designer.cs

Lines changed: 9 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)